Обзор развертывания NATS и Nginx на сервере¶
Предпосылки и предварительные требования¶
Для корректной работы системы необходимо наличие следующего программного обеспечения и прав доступа:
- Операционная система Ubuntu.
- Установленный и работающий демон
docker. - Права доступа пользователя
rootдля управления сервисами и файлами конфигурации. - Открытые порты для клиентского подключения к NATS (порт
4222) и мониторинга (порт8222). - Доступ к интернету для получения образов Docker и работы сертификатов SSL.
Структура файлов и каталогов¶
Система использует следующую структуру каталогов для хранения конфигураций, данных и сертификатов:
/root/nginx— каталог для запуска контейнера Nginx с Certbot./root/nginx/compose.yml— файл конфигурации Docker Compose для Nginx./data/nginx/nginx-certbot.env— файл переменных окружения для Nginx./data/nginx/user_conf.d— каталог с пользовательскими конфигурациями Nginx./data/nginx/user_conf.d/<prefix><server_id>.hostkey.in.conf— файл конфигурации конкретного хоста с настройкой проксирования./etc/letsencrypt— точка монтирования для хранения SSL-сертификатов (внешний томnginx_secrets)./etc/nats/nats-server.conf— файл конфигурации сервера NATS./data— каталог для хранения данных NATS и JetStream./etc/systemd/system/nats.service— файл юнита systemd для управления контейнером NATS.
Процесс установки приложения¶
Установка и развертывание компонентов выполняются через Docker и systemd.
Установка NATS¶
Сервер NATS разворачивается как контейнер Docker, управляемый через systemd.
- Создается конфигурационный файл NATS в пути
/etc/nats/nats-server.conf. - Скачивается образ Docker
nats(версия определяется переменнойnats_image). - Создается и активируется сервис systemd
nats, который автоматически запускает контейнер при загрузке системы.
Конфигурация NATS включает: - Порт клиента: 4222. - Порт мониторинга: 8222. - Настройки аутентификации (токен или логин/пароль). - Настройки JetStream для персистентности данных.
Установка Nginx и Certbot¶
Прокси-сервер Nginx с поддержкой автоматического получения SSL-сертификатов разворачивается через Docker Compose.
- Создается каталог
/root/nginx. - Генерируется файл
compose.ymlв каталоге/root/nginx. - Запускается контейнер Nginx с образом
jonasal/nginx-certbot:latest.
Контейнеры Docker и их запуск¶
Контейнер NATS¶
Контейнер NATS запускается командой docker run внутри сервиса systemd. Основные параметры запуска:
- Имя контейнера: определяется переменной
nats_container_name. - Отображение портов:
4222(клиент) и8222(мониторинг). - Монтирование конфигурации:
/etc/nats/nats-server.confв точку/etc/nats/nats-server.confвнутри контейнера. - Монтирование данных: каталог
/dataв точку/dataвнутри контейнера. - Флаг
--rmдля автоматического удаления контейнера при остановке.
Контейнер Nginx¶
Контейнер Nginx управляется через docker compose в каталоге /root/nginx.
Файл compose.yml содержит следующие настройки: - Образ: jonasal/nginx-certbot:latest. - Политика перезапуска: unless-stopped. - Режим сети: host. - Переменные окружения: email для Certbot (CERTBOT_EMAIL=hkadm@hostkey.com). - Файл переменных окружения: /data/nginx/nginx-certbot.env. - Тома: - nginx_secrets монтируется в /etc/letsencrypt. - /data/nginx/user_conf.d монтируется в /etc/nginx/user_conf.d.
Запуск контейнера выполняется командой:
в директории/root/nginx. Прокси серверы¶
Nginx используется как обратный прокси-сервер для перенаправления трафика на локальный порт NATS.
- Домен и SSL-сертификаты управляются автоматически через Certbot внутри контейнера.
- Конфигурация проксирования добавляется в файл
/data/nginx/user_conf.d/<prefix><server_id>.hostkey.in.conf. - В блоке
location /устанавливается директиваproxy_pass http://127.0.0.1:8222;, которая перенаправляет запросы на порт мониторинга NATS.
Права доступа и безопасность¶
- Каталог
/root/nginxимеет права0755и принадлежит пользователюroot. - Файл
compose.ymlимеет права0644. - Конфигурация NATS имеет права
0644. - Сервис NATS требует наличия демонстра
docker.serviceи сетиnetwork-online.target. - Доступ к NATS защищен аутентификацией (токен или учетные данные), настроенной в конфигурационном файле.
Запуск, остановка и обновление¶
Управление сервисом NATS¶
Сервис NATS управляется через systemd:
- Запуск или перезапуск: или
- Остановка:
- Проверка статуса:
При обновлении конфигурации или образа контейнер автоматически перезапускается через механизм systemd.
Управление контейнером Nginx¶
Контейнер Nginx управляется через docker compose в директории /root/nginx:
- Запуск:
- Остановка:
- Перезапуск:
- Просмотр логов: