Docker: Nexcloud + PHP FPM + Let's Encrypt

Docker 13:09 / 15.07.2021 594

В официальный образ Nextcloud для Docker уже включены возможности для автоматического получения сертификата от Let's Encrypt – для этого достаточно определить в Docker Compose файле переменные окружения LETSENCRYPT_HOST и LETSENCRYPT_EMAIL. Но для версии образа с PHP-FPM такой возможности по очевидным причинам нет. Конечно все можно решить с помощью контейнера с proxy, например nginx-proxy, но если Nextcloud необходимо поднять быстро для того, чтобы просто познакомиться с функционалом, а SSL для большей части функциональности обязателен, то возможно более простое решение (но возможно не совсем правильное).

Nexcloud

Предлагаю ознакомиться с моим решением для поднятия полностью работоспособного экземпляра 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

Затем перейдите в браузере на домен, выбранный для тестов, и завершите установку и настройку в обычном режиме.