Discord заблокирован, и многие пользователи обратили внимание на TeamSpeak как альтернативу. Да, это не полная замена, да, в бесплатной версии без регистрации на серверах компании нельзя поднять больше одного виртуального сервера, имеющего только 32 слота для подключения. Но чтобы получить свой частный сервер, не зависящий от решений регуляторов, это одно из оптимальных решений.
Инструкций по установке такого сервера (а именно, TeamSpeak 3 Server) тоже много, сделать это достаточно просто разными способами, но пользователям среди прочего важен и удобный веб-интерфейс для работы с сервером на VPS. За время существования TeamSpeak было создано немало проектов разной степени законченности и функциональности: TS3 Web, TSDNS Manager, MyTS3Panel, TS3 Admin Panel (by PyTS) и TS3 Manager (https://www.ts3.app/). Последний — относительно живой (последний коммит был 5 месяцев назад), автор по мере возможности обновляет его, поэтому мы решили добавить в деплой TeamSpeak на наших серверах. Но как обычно в проектах с открытых исходным кодом, он страдает от очень скудной документации.
Поскольку мы потратили определенное время на поиски проблем, из-за которых TS3 Manager не работал как нужно (от невозможности залогиниться до проблем с отображением серверов), то решили облегчить жизнь тем, кто пойдет по нашем пути.
Исходные данные: Debian 11+ или Ubuntu 20.04, 22.04, TeamSpeak 3 Server разворачиваемый как docker-контейнер от mbentley/teamspeak и Nginx с Let’s Encrypt (образ jonasal/nginx-certbot). Эта конфигурация разворачивается и работает, позволяя подключаться к себе с клиентов TeamSpeak и управлять ими через использование токена администратора.
TeamSpeak предустановлен на серверах в Европе, США, Турции и России.
Арендуйте виртуальный (VPS) или выделенный сервер с TeamSpeak — бесплатной популярной системой голосовой коммуникации для онлайн-гейминга. Выберите подходящую лицензию, сконфигурируйте сервер и приступите к работе уже через 15 минут.
- Установка уже выполнена — мы позаботились о технической части
- Сервер оптимизирован — высокая производительность для работы TeamSpeak
- Техподдержка 24/7 — мы всегда готовы помочь
К этому docker-бутерброду мы добавляем TS3 Manager, устанавливаемый так же, как docker-контейнер. Официальная документация предлагает использовать для этого docker-compose, но можно обойтись дефолтными настройками и двумя командами:
docker pull joni1802/ts3-manager
docker run -p 8080:8080 --name ts3-manager joni1802/ts3-manager
Если вы хотите повысить безопасность работы TS3 Manager, можете добавить в команду запуска -e WHITELIST=<ip-адрес cервера>,myts3server.com список серверов, которыми хотите управлять. То есть если вы имеете версию, отличающуюся от бесплатной, и можете поставить более одного TS3-сервера на VPS (скажем, запросив NPL-лицензию, которая позволяет создать до 10 виртуальных серверов с 512 слотами), то вы можете управлять и ими (создавать, удалять и настраивать), так как TS3 Manager работает через ServerQuery.
После этого, зайдя по http://<ip-адрес сервера> (TeamSpeak садится на порт 8080, учитывайте это), вы получаете вот такую картину:
Что вводить? Самое смешное, что, если у вас есть ssh-доступ до вашего VPS (а он у вас есть), то, введя в поле Server его IP-адрес, в name — root (или другого вашего пользователя), а в Password — пароль от сервера и поставив Port в 22, вы … зайдете в TS3 Manager. Но получите бесконечную загрузку списка серверов.
Выполнив выход из менеджера, вы получите белый экран с надписью …Loading в левом углу браузера. Поправить положение теперь поможет только очистка куки в браузере.
Что-то мы делаем не так? Где же взять логин и пароль для входа? А брать их нужно из логов запуска сервера TeamSpeak в docker. Для этого придется зайти по ssh (вот тут надо использовать креды, которые вы пытались ввести в TS3 Manager) и выполнить следующую команду:
docker logs teamspeak | tail -n 50
Вы получите вот такой вывод:
Вас будут интересовать loginname и password. Эти параметры останутся такими же и после перезагрузки, но изменятся, если вы остановите и удалите docker-образ и запустите его заново. Токен вам понадобится, если вы вдруг решите подключить сервер TeamSpeak.
Идем назад в браузер и вводим запомненные логин и пароль уже от сервера, нажимаем CONNECT и получаем плашку с сообщением об ошибке. Что делать?
Если посмотреть лог, который вывелся, когда мы смотрели пароль администратора сервера, можно увидеть следующее:
То есть сервер слушает 3 порта для запросов к серверу: 10011 для обычного (небезопасного) соединения, 10022 — для ssh и 10080 для http-запросов.
Пробуем ввести IP-адрес сервера, порт 10011 и снять галочку ssh. Ура — нас пустило. Но это не очень безопасно, хотя способ и рабочий. Хочется зайти и управлять сервером по ssh.
Опять смотрим, есть ли что-то в документации:
У нас сервера разворачиваются с SSL-сертификатом, и эта проблема решается автоматически, но все равно что-то не работает. Вывод сервера показывает, что порт 10022 у нас слушается, а вот если задать вывод:
netstat -tulpn | grep -E '9987|10011|10022|30033|41144'
…То мы увидим, что у нас в выводе порт 10022 отсутствует. Что это значит? Мы забыли пробросить этот порт в docker (тут должен быть эмодзи «рука-лицо»). Точнее этот момент упущен в документации для docker-образа TeamSpeak, который мы использовали для деплоя, потому что его автор посчитал данный метод управления не стоящим внимания.
Добавляем в строку задания портов запуска docker-образа проброс порта 10022 наружу (-p 9987:9987/udp -p 30033:30033 -p 10011:10011 -p 41144:41144 -p 10022:10022), останавливаем, удаляем и заново запускаем docker-образ сервера TeamSpeak (и правим это в деплое ПО). Ура! Теперь мы можем зайти в TS3 Manager через ssh и можем использовать не IP, а доменное имя.
А дальше можно создавать сервера и каналы на них, работать с пользователями и их группами, генерировать админские и API-ключи, банить пользователей, пересылать файлы, создавать текстовые чаты и использовать другие возможности, доступные ранее из консольных запросов. Сразу предупредим — этот инструмент не предназначен для заведения новых пользователей. Он служит именно для управления серверами и пользователями.
TeamSpeak предустановлен на серверах в Европе, США, Турции и России.
Арендуйте виртуальный (VPS) или выделенный сервер с TeamSpeak — бесплатной популярной системой голосовой коммуникации для онлайн-гейминга. Выберите подходящую лицензию, сконфигурируйте сервер и приступите к работе уже через 15 минут.
- Установка уже выполнена — мы позаботились о технической части
- Сервер оптимизирован — высокая производительность для работы TeamSpeak
- Техподдержка 24/7 — мы всегда готовы помочь