Обзор развертывания Nginx с автоматическим получением SSL на сервере¶
Предварительные требования¶
Для корректной работы приложения сервер должен соответствовать следующим требованиям:
-
Операционная система: Linux (устанавливается Docker).
-
Права доступа: Права суперпользователя (
root) для установки системных пакетов и управления контейнерами. -
Доменное имя: Наличие настроенного DNS-записи, указывающей на IP сервера.
-
Порты: Должны быть открыты порты
80(HTTP) и443(HTTPS).
FDQN итоговой панели на домене hostkey.in¶
Для работы SSL-сертификатов используется динамический шаблон доменного имени:
| Параметр | Значение |
|---|---|
| Префикс | nginx-certbot |
| Домен | hostkey.in |
| Полный шаблон | nginx-certbot{Server_ID_from_Invapi}.hostkey.in |
Структура файлов и каталогов¶
Все конфигурационные файлы и данные приложения сосредоточены в директории /data/nginx/:
-
/data/nginx/docker-compose.yml— основной файл развертывания контейнера. -
/data/nginx/user_conf.d/— каталог с пользовательскими конфигурациями Nginx. -
/data/nginx/nginx-certbot.env— файл с переменными окружения для контейнера.
Данные сертификатов хранятся в Docker Volume: nginx_secrets.
Процесс установки приложения¶
Процесс развертывания включает несколько этапов подготовки системы и запуска сервиса:
-
Подготовка среды: Установка Docker на сервер.
-
Создание структуры каталогов: Создаются директории
/data,/data/nginxи/data/nginx/user_conf.dс правами доступа0640. -
Настройка сетевой доступности: В файл
/etc/hostsдобавляется запись для локального разрешения доменного имени сервера. -
Генерация конфигураций:
-
Создается файл
docker-compose.yml. -
Создается конфигурационный файл Nginx в директории
user_conf.d, который настраивает автоматический редирект и использование SSL-сертификатов. -
Подготавливается файл переменных окружения
.env. -
Подготовка хранилища: Создается Docker Volume с именем
nginx_secretsдля хранения сертификатов Let's Encrypt. -
Запуск сервиса: Выполняется команда
docker compose up -dв директории/data/nginx/.
Контейнеры Docker и их запуск¶
Приложение развертывается с использованием одного основного контейнера:
Контейнер Nginx (с поддержкой Certbot)
-
Образ:
jonasal/nginx-certbot:latest -
Порты:
-
80:80(HTTP) -
443:443(HTTPS) -
Тома (volumes):
-
nginx_secrets:/etc/letsencrypt— для хранения сертификатов. -
./user_conf.d:/etc/nginx/user_conf.d— для пользовательских настроек Nginx. -
Переменные окружения:
-
CERTBOT_EMAIL=hkadm@hostkey.com(email для регистрации в Let's Encrypt). -
Параметры из файла
./nginx-certbot.env. -
Политика перезапуска:
unless-stopped(перезапуск при сбое или после перезагрузки сервера, если контейнер не был остановлен вручную).
Инструкция по обновлению приложения¶
Для обновления используемого образа Nginx необходимо выполнить следующие действия:
-
Перейти в директорию с конфигурацией:
-
Выполнить обновление образов и перезапуск контейнера:
Расположение конфигурационных файлов и данных¶
-
Конфигурация Nginx:
/data/nginx/user_conf.d/{prefix}{server_id}.{zone}.conf -
Переменные окружения Docker:
/data/nginx/nginx-certbot.env -
Файл управления контейнерами:
/data/nginx/docker-compose.yml
Доступные порты для подключения¶
| Порт | Протокол | Назначение |
|---|---|---|
80 | TCP | HTTP (для проверки сертификатов и перенаправления) |
443 | TCP | HTTPS (основной защищенный трафик) |