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

Обзор развертывания Rocket.Chat на сервере

Предпосылки и предварительные требования

Для успешного развертывания приложения необходимо наличие следующих условий: - Операционная система с установленным Docker Engine и Docker Compose. - Права доступа пользователя root или учетной записи с правами sudo. - Наличие настроенного доменного имени, соответствующего шаблону {{ prefix }}{{ server_id }}.{{ zone }}. - Открытые порты для внешнего доступа (HTTP/HTTPS) и внутренний порт {{ internal_port }} для связи между контейнерами. - Доступ к сети для загрузки образов Docker и получения SSL-сертификатов.

Структура файлов и каталогов

Конфигурация и данные приложения организованы в следующих директориях: - /root/nginx — каталог для размещения файла конфигурации Docker Compose. - /root/nginx/compose.yml — файл описания стека контейнеров. - /data/nginx/user_conf.d — директория для пользовательских конфигурационных файлов Nginx. - /data/nginx/user_conf.d/{{ prefix }}{{ server_id }}.hostkey.in.conf — файл конфигурации виртуального хоста с настройками проксирования. - /data/nginx/nginx-certbot.env — файл переменных окружения для сервиса Nginx. - /etc/letsencrypt — точка монтирования для хранения SSL-сертификатов (объем nginx_secrets).

Процесс установки приложения

Развертывание осуществляется через запуск стека контейнеров Docker Compose. Процесс включает следующие этапы: 1. Создание директории /root/nginx с правами доступа 0755 для пользователя root. 2. Генерация файла compose.yml в директории /root/nginx с правами 0644. 3. Обновление конфигурационного файла Nginx путем удаления старой строки proxy_pass и добавления новой строки proxy_pass http://127.0.0.1:{{ internal_port }}; после блока location / {. 4. Запуск стека контейнеров с помощью команды Docker Compose.

Контейнеры Docker и их запуск

Стек приложения состоит из одного основного сервиса, описанного в файле compose.yml:

  • Сервис nginx:
  • Образ: jonasal/nginx-certbot:latest.
  • Политика перезапуска: unless-stopped.
  • Режим сети: host.
  • Переменные окружения:
    • CERTBOT_EMAIL=hkadm@hostkey.com.
    • Файл переменных: /data/nginx/nginx-certbot.env.
  • Монтируемые тома:
    • nginx_secrets:/etc/letsencrypt (внешний том для сертификатов).
    • /data/nginx/user_conf.d:/etc/nginx/user_conf.d (конфигурация Nginx).

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

docker compose -f /root/nginx/compose.yml up -d

Прокси серверы

В качестве обратного прокси-сервера используется контейнер Nginx с поддержкой автоматического получения SSL-сертификатов через Certbot.

  • Домен: {{ prefix }}{{ server_id }}.{{ zone }}.
  • Протокол: HTTPS (обязательно, так как ROOT_URL указывает на https://).
  • Настройка проксирования:
  • В файле /data/nginx/user_conf.d/{{ prefix }}{{ server_id }}.hostkey.in.conf настроена пересылка трафика на внутренний адрес http://127.0.0.1:{{ internal_port }}.
  • Сертификаты: Хранятся в томе nginx_secrets, который монтируется в /etc/letsencrypt внутри контейнера.
  • Email для уведомлений: hkadm@hostkey.com.

Настройки прав

Права доступа к файлам и директориям настроены следующим образом: - Директория /root/nginx: владелец root, группа root, права 0755. - Файл /root/nginx/compose.yml: владелец root, группа root, права 0644. - Директория /data/nginx/user_conf.d: права доступа определяются системой хостинга, но должна быть доступна для чтения контейнером Nginx.

Запуск, остановка и обновление

Управление стеком контейнеров осуществляется через Docker Compose в директории /root/nginx.

  • Запуск:
    docker compose -f /root/nginx/compose.yml up -d
    
  • Остановка:
    docker compose -f /root/nginx/compose.yml down
    
  • Обновление конфигурации: После изменения файла compose.yml или конфигурационных файлов Nginx необходимо выполнить перезапуск стека:
    docker compose -f /root/nginx/compose.yml up -d
    
question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×