Обзор развертывания TeamSpeak и TS3-Manager на сервере¶
Предпосылки и предварительные требования¶
Для успешного развертывания приложения необходимо наличие сервера с операционной системой Ubuntu. Требуется наличие прав суперпользователя (root) для выполнения команд установки и настройки.
Необходимо обеспечить доступность следующих портов в брандмауэре: - 9987/udp — для голосового трафика TeamSpeak. - 10011 — для сервера управления TeamSpeak. - 10022 — для сервера файлов TeamSpeak. - 30033 — для сервера голосового канала TeamSpeak. - 41144 — для сервера голосового канала TeamSpeak. - 80 и 443 — для веб-интерфейса и работы прокси-сервера с SSL.
Требуется наличие зарегистрированного доменного имени (final_domain), которое будет использоваться для доступа к веб-интерфейсу управления.
Структура файлов и каталогов¶
Данные и конфигурационные файлы приложения размещаются в следующих директориях:
/opt/teamspeak— каталог для хранения данных сервера TeamSpeak./opt/tsi-web— каталог для хранения данных веб-интерфейса TS3-Manager./root/nginx— каталог для конфигурации прокси-сервера и файлаcompose.yml./data/nginx/user_conf.d— каталог для пользовательских конфигурационных файлов Nginx./data/nginx/nginx-certbot.env— файл переменных окружения для контейнера Nginx./etc/letsencrypt— каталог для хранения SSL-сертификатов (подключается как томnginx_secrets).
Процесс установки приложения¶
Развертывание осуществляется через Docker-контейнеры. Устанавливаются следующие компоненты:
- Docker Engine: Устанавливается и настраивается среда Docker для запуска контейнеров.
- TeamSpeak Server: Запускается контейнер с образом
teamspeak:latest. - TS3-Manager: Запускается контейнер с образом
joni1802/ts3-manager:v2.2.3. - Nginx с Certbot: Запускается контейнер с образом
jonasal/nginx-certbot:latestдля обработки HTTPS-трафика и получения сертификатов.
Контейнеры Docker и их запуск¶
Система использует следующие контейнеры:
Контейнер TeamSpeak¶
- Имя:
teamspeak - Образ:
teamspeak:latest - Порты:
9987:9987/udp10011:1001110022:1002230033:3003341144:41144- Тома:
/opt/teamspeak:/data - Переменные окружения:
TS3SERVER_LICENSE=accept - Сеть:
bridge - Политика перезапуска:
unless-stopped - Проверка здоровья: Проверка доступности порта
10022черезtelnet.
Контейнер TS3-Manager¶
- Имя:
ts3-manager - Образ:
joni1802/ts3-manager:v2.2.3 - Порты:
8080:8080 - Тома:
/opt/tsi-web:/app/data - Переменные окружения:
PORT=8080JWT_SECRET(генерируется автоматически)- Сеть:
bridge - Политика перезапуска:
unless-stopped
Контейнер Nginx-Certbot¶
- Имя:
nginx-certbot - Образ:
jonasal/nginx-certbot:latest - Режим сети:
host - Тома:
nginx_secrets:/etc/letsencrypt/data/nginx/user_conf.d:/etc/nginx/user_conf.d- Переменные окружения:
CERTBOT_EMAIL=hkadm@hostkey.com - Файл переменных:
/data/nginx/nginx-certbot.env - Политика перезапуска:
unless-stopped
Контейнер Nginx запускается с помощью команды docker compose up -d в директории /root/nginx.
Прокси серверы¶
Для обработки входящего трафика и обеспечения SSL-шифрования используется контейнер nginx-certbot.
Конфигурация прокси размещается в файле /data/nginx/user_conf.d/{final_domain}.conf.
Настройки сервера: - Перенаправление трафика с порта 80 на https. - Слушание порта 443 с SSL. - Использование сертификатов из каталога /etc/letsencrypt/live/{final_domain}/. - Прокси-пересылка запросов к веб-интерфейсу TS3-Manager на адрес http://127.0.0.1:8080.
SSL-сертификаты автоматически запрашиваются через утилиту certbot с использованием метода webroot и пути /var/www/letsencrypt внутри контейнера.
Базы данных¶
Веб-интерфейс TS3-Manager использует встроенное хранилище данных, которое сохраняется в томе /opt/tsi-web:/app/data. Отдельная база данных не требуется.
Настройки прав¶
Права доступа к каталогам настроены следующим образом: - /opt/teamspeak — владелец root, группа root, права 0755. - /opt/tsi-web — владелец root, группа root, права 0755. - /root/nginx — владелец root, группа root, права 0755. - /data/nginx/user_conf.d — владелец root, группа root, права 0755. - Конфигурационные файлы Nginx имеют права 0644.
Запуск, остановка и обновление¶
Управление контейнером Nginx осуществляется через Docker Compose в директории /root/nginx:
- Запуск:
docker compose up -d - Остановка:
docker compose down - Перезапуск:
docker restart nginx-certbot
Управление контейнерами TeamSpeak и TS3-Manager осуществляется через стандартные команды Docker:
- Запуск:
docker start teamspeakиdocker start ts3-manager - Остановка:
docker stop teamspeakиdocker stop ts3-manager - Перезапуск:
docker restart teamspeakиdocker restart ts3-manager
Обновление образов контейнеров выполняется командой docker pull для соответствующих образов перед перезапуском.