Обзор развертывания Free Domain Certbot на сервере¶
Предварительные требования и базовые условия¶
-
Операционная система: Сервер на базе Linux, способный запускать Docker и Docker Compose.
-
Привилегии: Требуется доступ с правами
rootилиsudoдля управления службами, настройки межсетевого экрана (firewall) и монтирования томов (volumes). -
Домен: Для FQDN требуется доменное имя, назначенное в зоне
hostkey.in. -
Порты: На сервере должны быть открыты порты 80 и 443 для обработки HTTP и HTTPS-трафика соответственно.
FQDN финальной панели¶
Приложение доступно по следующему формату полного доменного имени (FQDN): nginx-certbot<Server ID>.hostkey.in:443
Примечание: Замените <Server ID> на уникальный идентификатор вашего экземпляра сервера.
Структура файлов и директорий¶
Для развертывания используется следующая структура директорий для конфигурации и данных:
| Директория/Том | Назначение |
|---|---|
./user_conf.d | Пользовательские конфигурации блоков сервера Nginx. |
nginx_secrets | Внешний том для хранения файлов сертификатов Let's Encrypt. |
/etc/letsencrypt/live/<fqdn>/ | Расположение файлов сертификатов во время выполнения (fullchain.pem, privkey.pem, chain.pem). |
/etc/letsencrypt/dhparams/ | Расположение параметров Diffie-Hellman. |
Процесс установки приложения¶
Развертывание приложения осуществляется с помощью Docker Compose. Установка базируется на контейнере образа jonasal/nginx-certbot.
-
Образ контейнера:
jonasal/nginx-certbot:latest -
Политика перезапуска:
unless-stopped
Развертывание использует файл docker-compose.yml (или compose.yml) для оркестрации службы. Служба загружает последнюю версию образа и настраивает необходимые переменные окружения и монтирование томов.
Контейнеры Docker и их развертывание¶
Система разворачивает единственную службу Nginx, настроенную для завершения соединений SSL (SSL termination) и обновления сертификатов.
Определение службы:
-
Имя:
nginx -
Образ:
jonasal/nginx-certbot:latest -
Политика перезапуска:
unless-stopped -
Переменные окружения:
CERTBOT_EMAIL: Установлено значениеhkadm@hostkey.com
-
Отображение портов (Port Mapping):
-
Порт хоста
80отображается на порт контейнера80 -
Порт хоста
443отображается на порт контейнера443
-
-
Тома (Volumes):
-
nginx_secretsсмонтирован в/etc/letsencrypt(Внешний том) -
./user_conf.dсмонтирован в/etc/nginx/user_conf.d
-
-
Файл окружения: Служба загружает конфигурацию из файла
./nginx-certbot.env.
Прокси-серверы¶
Контейнер Nginx выступает в роли обратного прокси-сервера (reverse proxy) и терминатора SSL. Он настроен на прослушивание портов 80 и 443 для IPv4 и IPv6.
Настройка SSL:
-
Сертификат: Загружается из
/etc/letsencrypt/live/<fqdn>/fullchain.pem -
Закрытый ключ: Загружается из
/etc/letsencrypt/live/<fqdn>/privkey.pem -
Цепочка доверия (Chain): Загружается из
/etc/letsencrypt/live/<fqdn>/chain.pem -
DH-параметры: Загружаются из
/etc/letsencrypt/dhparams/dhparam.pem
Настройки блока сервера:
-
Имя сервера (Server Name): Настроено динамически для соответствия FQDN (
nginx-certbot<Server ID>.hostkey.in). -
Ответ: Конфигурация по умолчанию возвращает код статуса
200с сообщением:Let's Encrypt certificate successfully installed! -
Тип содержимого (Content-Type): Установлен в
text/plain.
Настройки прав доступа¶
При развертывании предполагается, что файл docker-compose.yml и директория user_conf.d принадлежат пользователю с достаточными привилегиями для запуска служб Docker. Том nginx_secrets управляется как внешний том Docker, абстрагируя базовые права доступа файловой системы, необходимые для работы с сертификатами.
Расположение файлов конфигурации и данных¶
-
Файл Compose: Находится в корне директории развертывания (например,
./compose.ymlили./docker-compose.yml). -
Переменные окружения: Хранятся в файле
./nginx-certbot.env. -
Конфигурация Nginx: Пользовательские конфигурации сервера хранятся в локальной директории
./user_conf.d, которая монтируется в контейнер. -
Сертификаты: Хранятся во внешнем томе Docker с именем
nginx_secrets.
Доступные порты для подключения¶
На хост-сервере для клиентских подключений открыты следующие порты:
| Порт | Протокол | Служба |
|---|---|---|
| 80 | TCP | HTTP (Запрос проверки Let's Encrypt) |
| 443 | TCP | HTTPS (Защищенный веб-трафик) |
Запуск, остановка и обновление¶
Управление службами выполняется с помощью команд Docker Compose.
-
Запуск службы:
-
Остановка службы:
-
Обновление службы: Для загрузки последнего образа и перезапуска контейнера: