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

Обзор развертывания 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-сертификатов, смонтированное в контейнер.

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

Установка выполняется с помощью скрипта, предоставляемого разработчиком. Процесс включает следующие шаги:

  1. Обновление кэш-памяти пакетов системы.
  2. Скачивание установочного скрипта по адресу https://script.mcsmanager.com/setup_cn.sh в директорию /root.
  3. Запуск скрипта установки с помощью команды:
    /bin/bash setup_cn.sh
    

Скрипт автоматически устанавливает 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.

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

docker compose up -d
в директории /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.

Для запуска контейнеров используется команда:

docker compose up -d

Для остановки контейнеров:

docker compose down

Для обновления конфигурации или образа контейнеров:

docker compose up -d

Контейнер настроен на автоматический перезапуск с политикой unless-stopped.

question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×