Перейти к содержанию

Обзор развертывания 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.

  1. Создается конфигурационный файл NATS в пути /etc/nats/nats-server.conf.
  2. Скачивается образ Docker nats (версия определяется переменной nats_image).
  3. Создается и активируется сервис systemd nats, который автоматически запускает контейнер при загрузке системы.

Конфигурация NATS включает: - Порт клиента: 4222. - Порт мониторинга: 8222. - Настройки аутентификации (токен или логин/пароль). - Настройки JetStream для персистентности данных.

Установка Nginx и Certbot

Прокси-сервер Nginx с поддержкой автоматического получения SSL-сертификатов разворачивается через Docker Compose.

  1. Создается каталог /root/nginx.
  2. Генерируется файл compose.yml в каталоге /root/nginx.
  3. Запускается контейнер 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.

Запуск контейнера выполняется командой:

docker compose up -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:

  • Запуск или перезапуск:
    systemctl start nats
    
    или
    systemctl restart nats
    
  • Остановка:
    systemctl stop nats
    
  • Проверка статуса:
    systemctl status nats
    

При обновлении конфигурации или образа контейнер автоматически перезапускается через механизм systemd.

Управление контейнером Nginx

Контейнер Nginx управляется через docker compose в директории /root/nginx:

  • Запуск:
    docker compose up -d
    
  • Остановка:
    docker compose down
    
  • Перезапуск:
    docker compose restart
    
  • Просмотр логов:
    docker compose logs -f
    
question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×