Обзор развертывания 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¶
- Устанавливается демон Docker на сервере Ubuntu.
- Создается каталог для данных Mumble с правами доступа
0755для пользователяroot. - Скачивается образ контейнера Mumble из реестра.
- Запускается контейнер Mumble с параметрами:
- Имя контейнера задается переменной
mumble_container_name. - Политика перезапуска установлена в
always. - Порт
64738(TCP и UDP) на хосте маппится на порт64738внутри контейнера. - Каталог с данными монтируется в точку
/dataвнутри контейнера.
Настройка Nginx и Certbot¶
- Создается каталог
/root/nginxс правами0755для пользователяroot. - Генерируется файл
compose.ymlв директории/root/nginxна основе шаблона. - В конфигурационном файле Nginx для конкретного хоста удаляется существующая строка
proxy_pass(если она есть). - Добавляется новая строка
proxy_pass http://127.0.0.1:23333;в блокlocation /конфигурационного файла. - Запускаются контейнеры 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_namedocker start mumble_container_namedocker restart mumble_container_name
Управление Nginx и Certbot¶
- Запуск сервисов выполняется командой: в директории
/root/nginx. - Остановка сервисов:
- Обновление конфигурации требует регенерации файла
compose.ymlи перезапуска контейнеров.