Обзор развертывания Free Domain Certbot на сервере¶
Предварительные требования и базовые условия¶
Для успешного развертывания приложения Nginx Certbot на целевом сервере должны быть выполнены следующие требования:
-
Операционная система: Дистрибутив Linux, совместимый с Docker Engine.
-
Привилегии: Доступ root или учетная запись с правами
sudoдля управления службами Docker и правилами межсетевого экрана (firewall). -
Настройка домена: Действующее доменное имя, указывающее на публичный IP-адрес сервера.
-
Сетевые порты: Порты 80 и 443 должны быть открыты и доступны из интернета для валидации SSL-сертификатов и обработки HTTPS-трафика.
FQDN конечной панели¶
Полное доменное имя (FQDN) для приложения имеет следующий формат: nginx-certbot<Server ID>.hostkey.in:443
Где <Server ID> заменяется на конкретный идентификатор, назначенный экземпляру сервера.
Структура файлов и каталогов¶
Приложение использует следующую структуру каталогов для хранения конфигурации и данных:
-
/etc/letsencrypt: Хранит SSL-сертификаты и закрытые ключи, управляемые Certbot. -
./user_conf.d: Содержит пользовательские конфигурации блоков сервера Nginx. -
./nginx-certbot.env: Файл переменных окружения для службы Nginx. -
./compose.yml: Файл определения Docker Compose для оркестрации служб.
Процесс установки приложения¶
Приложение развертывается с использованием Docker Compose. Процесс развертывания включает следующие шаги:
-
Убедитесь, что Docker и Docker Compose установлены на сервере.
-
Создайте необходимую структуру каталогов для приложения.
-
Разместите файлы
compose.ymlиnginx-certbot.envв каталоге развертывания. -
Создайте внешний том (volume)
nginx_secrets, необходимый для хранения сертификатов. -
Выполните команду
docker compose up -dдля запуска служб.
Для развертывания используется образ контейнера jonasal/nginx-certbot:latest.
Права доступа и безопасность¶
В развертывании реализованы следующие меры безопасности:
-
Правила межсетевого экрана должны разрешать входящий трафик на портах 80 и 443.
-
Контейнер Nginx работает с политикой перезапуска
restart: unless-stoppedдля обеспечения доступности. -
SSL-сертификаты хранятся во внешнем томе Docker для сохранения данных при перезапуске контейнеров.
-
Приложение возвращает текстовый ответ, подтверждающий успешную установку сертификата.
Контейнеры Docker и их развертывание¶
Развертывание состоит из одного контейнера Nginx, управляемого через Docker Compose. Конфигурация контейнера включает:
-
Образ:
jonasal/nginx-certbot:latest -
Политика перезапуска:
unless-stopped -
Переменные окружения:
-
CERTBOT_EMAIL: Установлено значениеhkadm@hostkey.com -
Порты:
-
Порт хоста 80 сопоставлен с портом контейнера 80.
-
Порт хоста 443 сопоставлен с портом контейнера 443.
-
Томы (Volumes):
-
nginx_secretsпримонтирован в/etc/letsencrypt. -
Локальный каталог
./user_conf.dпримонтирован в/etc/nginx/user_conf.d.
Прокси-серверы¶
Контейнер Nginx действует как обратный прокси-сервер и точка терминации SSL. Он настроен для:
-
Прослушивания порта 443 для соединений IPv4 и IPv6.
-
Обслуживания домена
nginx-certbot<Server ID>.hostkey.in. -
Загрузки SSL-сертификатов из каталога
/etc/letsencrypt/live/. -
Возврата кода состояния 200 с сообщением об успехе при успешной установке сертификата.
Настройки прав доступа¶
Права доступа к файлам и каталогам управляются контейнером Docker и хост-системой:
-
Том
nginx_secretsдолжен быть доступен контейнеру Nginx для чтения и записи сертификатов. -
Каталог
user_conf.dна хосте должен быть доступен для чтения контейнером для загрузки пользовательских конфигураций. -
Файлы
compose.ymlиnginx-certbot.envдолжны принадлежать пользователю, выполняющему команды Docker.
Расположение файлов конфигурации и данных¶
Файлы конфигурации и данные находятся по следующим путям:
-
Файл Docker Compose:
./compose.yml -
Переменные окружения:
./nginx-certbot.env -
Пользовательская конфигурация Nginx:
./user_conf.d/user.conf -
SSL-сертификаты:
/etc/letsencrypt/live/nginx-certbot<Server ID>.hostkey.in/
Доступные порты для подключения¶
Следующие порты доступны для внешнего подключения:
-
Порт 80: HTTP-трафик для валидации вызова ACME от Let's Encrypt.
-
Порт 443: HTTPS-трафик для безопасного веб-доступа.
Запуск, остановка и обновление¶
Управление службами осуществляется с помощью команд Docker Compose:
-
Запустить службу:
docker compose up -d -
Остановить службу:
docker compose down -
Обновить образ контейнера:
docker compose pull, за которым следуетdocker compose up -d -
Просмотреть логи:
docker compose logs -f