Обзор развертывания 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).
Запуск контейнеров выполняется командой:
Прокси серверы¶
В качестве обратного прокси-сервера используется контейнер 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.
- Запуск:
- Остановка:
- Обновление конфигурации: После изменения файла
compose.ymlили конфигурационных файлов Nginx необходимо выполнить перезапуск стека: