Обзор развертывания MCSManager на сервере¶
Предпосылки и предварительные требования¶
Для успешного развертывания приложения необходимо наличие сервера с операционной системой Ubuntu. Требуется доступ к серверу с правами суперпользователя (root) для выполнения установочных скриптов и управления контейнерами.
Система использует следующие порты для внешнего доступа: - Порт для основного веб-интерфейса (определяется переменной external_port). - Порт для демон-сервиса (определяется переменной external_port_daemon).
Оба порта работают в режиме SSL/TLS.
Структура файлов и каталогов¶
Конфигурация и данные приложения организованы следующим образом:
- Каталог
/root/nginx— рабочая директория для запуска контейнеров Nginx и Certbot. - Файл
/root/nginx/compose.yml— конфигурация Docker Compose для развертывания прокси-сервера. - Каталог
/data/nginx/user_conf.d— директория для хранения конфигурационных файлов Nginx. - Файл
/data/nginx/user_conf.d/<prefix><server_id>.<zone>.conf— конфигурация виртуального хоста для конкретного экземпляра приложения. - Файл
/data/nginx/nginx-certbot.env— файл переменных окружения для контейнера Nginx. - Каталог
/etc/letsencrypt— место хранения SSL-сертификатов, смонтированное в контейнер.
Процесс установки приложения¶
Установка выполняется с помощью скрипта, предоставляемого разработчиком. Процесс включает следующие шаги:
- Обновление кэш-памяти пакетов системы.
- Скачивание установочного скрипта по адресу
https://script.mcsmanager.com/setup_cn.shв директорию/root. - Запуск скрипта установки с помощью команды:
Скрипт автоматически устанавливает Docker, настраивает необходимые роли и развертывает контейнеры.
Контейнеры Docker и их запуск¶
Приложение использует контейнеризацию через Docker Compose. Основной контейнер — это прокси-сервер Nginx с поддержкой автоматического получения сертификатов через Certbot.
Используемый образ: jonasal/nginx-certbot:latest.
Контейнер запускается в режиме host для сетевого взаимодействия. Конфигурация контейнера включает: - Монтирование внешнего тома nginx_secrets в директорию /etc/letsencrypt для хранения сертификатов. - Монтирование локальной директории /data/nginx/user_conf.d в /etc/nginx/user_conf.d внутри контейнера. - Передачу переменных окружения из файла /data/nginx/nginx-certbot.env. - Указание email hkadm@hostkey.com для уведомлений от Certbot.
Запуск контейнеров осуществляется командой:
в директории/root/nginx. Прокси серверы¶
В качестве прокси-сервера используется Nginx в контейнере. Он обрабатывает входящие HTTPS-запросы и пересылает их на внутренние порты приложения.
Конфигурация включает два серверных блока: 1. Для основного веб-интерфейса на порте external_port. 2. Для демон-сервиса на порте external_port_daemon.
Оба блока настроены на доменное имя вида <prefix><server_id>.<zone>.
Настройки SSL: - Сертификат: /etc/letsencrypt/live/<prefix><server_id>.<zone>/fullchain.pem. - Ключ: /etc/letsencrypt/live/<prefix><server_id>.<zone>/privkey.pem. - Доверенный сертификат: /etc/letsencrypt/live/<prefix><server_id>.<zone>/chain.pem. - Параметры Diffie-Hellman: /etc/letsencrypt/dhparams/dhparam.pem.
Прокси поддерживает WebSocket-соединения, отключает буферизацию запросов и устанавливает максимальный размер тела клиента в 10240 МБ.
Права доступа и безопасность¶
Все конфигурационные файлы и директории создаются с правами владельца root и группы root.
- Директория
/root/nginxимеет права0755. - Файлы конфигурации Nginx и Docker Compose имеют права
0644.
Доступ к приложению осуществляется только через HTTPS. Прокси-сервер пересылает реальный IP-адрес клиента через заголовок X-Forwarded-For.
Запуск, остановка и обновление¶
Управление контейнерами осуществляется через Docker Compose в директории /root/nginx.
Для запуска контейнеров используется команда:
Для остановки контейнеров:
Для обновления конфигурации или образа контейнеров:
Контейнер настроен на автоматический перезапуск с политикой unless-stopped.