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

Обзор развертывания Mumble на сервере

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

Для успешного развертывания приложения на сервере необходимо наличие следующих компонентов и условий:

  • Операционная система Ubuntu.
  • Установленный и настроенный демон Docker.
  • Права доступа пользователя root для управления контейнерами и файловой системой.
  • Открытые порты для входящего трафика:
  • Порт 64738 (TCP и UDP) для работы голосового сервера Mumble.
  • Порт 80 и 443 для работы веб-сервера Nginx и получения SSL-сертификатов.
  • Доменное имя, настроенное на IP-адрес сервера, для работы с Certbot.

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

Конфигурация и данные приложения распределены по следующим директориям на сервере:

  • /root/nginx — каталог для конфигурации и запуска контейнеров Nginx и Certbot.
  • /root/nginx/compose.yml — файл конфигурации Docker Compose для прокси-сервера.
  • /data/nginx — каталог для хранения данных Nginx и пользовательских конфигураций.
  • /data/nginx/nginx-certbot.env — файл переменных окружения для Certbot.
  • /data/nginx/user_conf.d — директория с пользовательскими конфигурационными файлами Nginx.
    • /data/nginx/user_conf.d/<prefix><server_id>.hostkey.in.conf — файл конфигурации конкретного хоста с настройкой проксирования.
  • /data/nginx/user_conf.d — точка монтирования для пользовательских конфигов внутри контейнера Nginx.
  • /etc/letsencrypt — точка монтирования для хранения SSL-сертификатов (используется внешний том nginx_secrets).
  • /data/mumble (или путь, заданный в переменной mumble_data_dir) — каталог для хранения данных голосового сервера Mumble.

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

Развертывание происходит в два этапа: установка голосового сервера Mumble и настройка прокси-сервера Nginx с автоматическим получением сертификатов.

Установка Mumble

  1. Устанавливается демон Docker на сервере Ubuntu.
  2. Создается каталог для данных Mumble с правами доступа 0755 для пользователя root.
  3. Скачивается образ контейнера Mumble из реестра.
  4. Запускается контейнер Mumble с параметрами:
  5. Имя контейнера задается переменной mumble_container_name.
  6. Политика перезапуска установлена в always.
  7. Порт 64738 (TCP и UDP) на хосте маппится на порт 64738 внутри контейнера.
  8. Каталог с данными монтируется в точку /data внутри контейнера.

Настройка Nginx и Certbot

  1. Создается каталог /root/nginx с правами 0755 для пользователя root.
  2. Генерируется файл compose.yml в директории /root/nginx на основе шаблона.
  3. В конфигурационном файле Nginx для конкретного хоста удаляется существующая строка proxy_pass (если она есть).
  4. Добавляется новая строка proxy_pass http://127.0.0.1:23333; в блок location / конфигурационного файла.
  5. Запускаются контейнеры Nginx и Certbot через команду docker compose up -d в директории /root/nginx.

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

В системе используются два типа контейнеров: голосовой сервер и прокси-сервер.

Контейнер Mumble

Запускается напрямую через API Docker с параметрами: - Образ: mumble_image (версия задается в переменных). - Имя: mumble_container_name. - Порты: 64738:64738 (TCP) и 64738:64738/udp. - Том: mumble_data_dir:/data. - Политика перезапуска: always.

Контейнеры Nginx и Certbot

Запускаются через Docker Compose из файла /root/nginx/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.

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

Для обработки входящего трафика и обеспечения SSL-шифрования используется контейнер nginx-certbot.

  • Домен и SSL: Сертификаты автоматически запрашиваются и обновляются через Certbot. Электронная почта для уведомлений указана как hkadm@hostkey.com.
  • Проксирование: В конфигурационном файле /data/nginx/user_conf.d/<prefix><server_id>.hostkey.in.conf настроена пересылка запросов с корня сайта (location /) на локальный адрес http://127.0.0.1:23333.
  • Сетевой режим: Контейнер работает в режиме host, что позволяет ему напрямую использовать порты хоста.

Права доступа и безопасность

  • Каталог /root/nginx принадлежит пользователю root и группе root с правами 0755.
  • Файл compose.yml имеет права 0644.
  • Каталог для данных Mumble создается с правами 0755 для root.
  • Контейнеры запускаются с привилегиями, необходимыми для работы с сетевыми портами и монтирования томов.
  • Доступ к SSL-сертификатам осуществляется через внешний том nginx_secrets, что изолирует их от прямой записи в файловую систему хоста.

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

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

Управление Mumble

  • Запуск контейнера происходит автоматически при установке.
  • Для остановки или перезапуска контейнера используются стандартные команды Docker:
  • docker stop mumble_container_name
  • docker start mumble_container_name
  • docker restart mumble_container_name

Управление Nginx и Certbot

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