Docker: Nexcloud + PHP FPM + Let's Encrypt
Docker 13:09 / 15.07.2021 1 072
В официальный образ Nextcloud для Docker уже включены возможности для автоматического получения сертификата от Let's Encrypt – для этого достаточно определить в Docker Compose файле переменные окружения LETSENCRYPT_HOST и LETSENCRYPT_EMAIL. Но для версии образа с PHP-FPM такой возможности по очевидным причинам нет. Конечно все можно решить с помощью контейнера с proxy, например nginx-proxy, но если Nextcloud необходимо поднять быстро для того, чтобы просто познакомиться с функционалом, а SSL для большей части функциональности обязателен, то возможно более простое решение (но возможно не совсем правильное).
Предлагаю ознакомиться с моим решением для поднятия полностью работоспособного экземпляра Nextcloud на Docker, на базе образа с PHP-FPM, и с SSL от Let's Encrypt.
Внимание!
Не рекомендуется использовать это решение как продакшен версию!
Это только пример - как вы можете быстро поднять работоспособный экземпляр Nextcloud, для тестов и знакомства с функционалом, на Docker на базе образа с PHP-FPM, и с SSL от Let's Encrypt.
Репозиторий с кодом на GitHub: https://github.com/Icemont/Docker-Nexcloud-FPM-LetsEncrypt
Что необходимо?
Для начала необходимо подготовить домен или субдомен, который будет использоваться для тестов, и настроить ему в DNS "A запись" с IP адресом вашего сервера или VDS где вы будете разворачивать экземпляр Nextcloud. Предполагается, что на этом сервере уже установлены Docker Engine и Git.
Развертывание
В консоли вашего сервера введи команду для клонирования репозитория с файлами для описываемого решения:
git clone https://github.com/Icemont/Docker-Nexcloud-FPM-LetsEncrypt.git
После того, как клонирование завершиться, перейдите в папку с файлами:
cd Docker-Nexcloud-FPM-LetsEncrypt
Отредактируйте файл .env, изменив конфигурацию на вашу (параметров немного):
# root пароль для MySQL сервера
MYSQL_ROOT_PASSWORD=topsecret
# Пароль для пользователя БД MySQL
MYSQL_PASSWORD=secret
# E-mail адрес для регистрации аккаунта ACME для Let's Encrypt
CERTBOT_EMAIL=[email protected]
# Домен для SSL сертификата от Let's Encrypt (Ваш домен или субдомен, для которого вы настроили A запись в DNS
DOMAIN_NAME=example.com
Затем запустите сборку и запуск тестового окружения:
docker-compose up -d
Docker Compose соберёт образ nginx c SSL и автоматически получит сертификат для домена указанного вами в настройках, поднимет все необходимые зависимости и запустит экземпляр Nextcloud для тестов. А также создадутся несколько Docker Томов (Volumes) для хранения данных и конфигураций из контейнеров (удобно для тестов).
Если в будущем вам необходимо будет пересобрать образ nginx c SSL, например, если при первой сборке что-то пошло не так, то сделать это можно командой:
docker-compose up --build -d
Затем перейдите в браузере на домен, выбранный для тестов, и завершите установку и настройку в обычном режиме.