RE:NODE

Сеть12 мин чтения

TeamSpeak или Mumble для игрового сообщества

Когда сообществу нужен свой сервер TeamSpeak или Mumble вместо Discord, как настроить каждый, какие порты открыть и сколько CPU, RAM и трафика уходит на голос.

0 прочтений

Для большинства игровых сообществ голосовой сервер - это Discord, и держать собственный незачем. Свой сервер TeamSpeak или Mumble оправдывает себя, когда нужно то, что Discord делает плохо: меньшая и более стабильная задержка голоса, позиционный звук, голосовой плагин, от которого зависит мод игры (радиомоды Arma 3, некоторые сборки FiveM), тонкие права на каналы для больших организованных групп или просто владение сервером и его логами. Оба лёгкие - несколько десятков пользователей укладываются меньше чем в 100 МБ памяти и долю одного ядра CPU - и обоим нужна лишь пара портов: TeamSpeak 3 использует 9987 UDP для голоса и 30033 TCP для передачи файлов, Mumble - 64738 и по TCP, и по UDP. Настоящая цена - это трафик, который растёт с числом слушателей у каждого говорящего, и администрирование, которое вы берёте на себя.

Discord, TeamSpeak или Mumble#

DiscordTeamSpeak 3Mumble
Кто держит серверDiscordВыВы
СтоимостьБесплатно, с платными дополнениямиБесплатно для небольших серверов, лицензия для большихБесплатно, открытый исходный код
Задержка голосаХорошая, зависит от регионаНизкаяОчень низкая
Позиционный звукНетЧерез плагиныВстроен, с поддержкой игр
ПраваРоли и переопределения на каналахОчень детальные, серверные и канальные группыACL и группы на каждом канале
Интеграции с модамиБотыРадиомоды Arma 3, некоторые голосовые системы FiveMПлагины позиционного звука, встроенный голос FiveM
Ваши данныеНа серверах DiscordНа вашем сервереНа вашем сервере

Решающий вопрос обычно не в качестве. Он в том, живёт ли сообщество уже в Discord. Текст, объявления, роли и боты - вот где люди на самом деле проводят время, и просьба поставить второй голосовой клиент - реальная цена. Свои голосовые серверы обычно держат милсим-группы, соревновательные команды, ролевые серверы с радиомодами и давние кланы, которые помнят времена, когда TeamSpeak был стандартом. Если вы строите инфраструктуру сообщества с нуля, начните со статьи Discord для игрового сервера, а голосовой сервер можно добавить позже, если упрётесь в одно из ограничений выше.

TeamSpeak 3: установка, лицензия и первый запуск#

Сервер TeamSpeak 3 - это один исполняемый файл с базой данных SQLite по умолчанию. Он работает в Linux, Windows и macOS. При первом запуске людей подводят две вещи.

Лицензию нужно принять явно. Пока вы этого не сделаете, сервер отказывается запускаться. Либо создайте в каталоге сервера пустой файл .ts3server_license_accepted, либо запустите его с license_accepted=1, либо, с официальным образом Docker, задайте TS3SERVER_LICENSE=accept.

Данные администратора выводятся один раз. При первом запуске выводятся пароль ServerQuery serveradmin и привилегированный ключ (длинный токен). Этот ключ вы вставляете в клиент, чтобы стать Server Admin на виртуальном сервере. Если пропустите оба, их придётся сбрасывать, поэтому в первый раз запустите сервер на переднем плане и скопируйте их в надёжное место.

bash
$ ./ts3server license_accepted=1...------------------------------------------------------------------                      I M P O R T A N T------------------------------------------------------------------ Server Query Admin Account created loginname= "serveradmin", password= "..."------------------------------------------------------------------ ServerAdmin privilege key created, please use it to gain serveradmin rights for your virtualserver. token=...------------------------------------------------------------------

С Docker то же самое в compose-файле выглядит так, а данные администратора появятся в docker compose logs:

compose.yaml
services:  teamspeak:    image: teamspeak    restart: unless-stopped    ports:      - "9987:9987/udp"      - "30033:30033"    environment:      TS3SERVER_LICENSE: accept    volumes:      - ts3data:/var/ts3servervolumes:  ts3data:

Порт query в этом примере намеренно не опубликован. Подробнее об этом ниже.

Ограничения лицензии. Без какой-либо регистрации сервер TeamSpeak 3 разрешает один виртуальный сервер до 32 слотов. Сообществам побольше нужна лицензия от TeamSpeak, а условия и цены за годы менялись - проверяйте текущие на сайте TeamSpeak, а не доверяйте старому посту на форуме. Кроме того, TeamSpeak переводит свои клиенты и серверы на новое поколение; если начинаете с нуля, проверьте, какую версию сервера на самом деле поддерживают клиенты ваших игроков и моды, от которых вы зависите.

Mumble: установка и важные настройки#

Сервер Mumble - долго называвшийся Murmur, а теперь поставляемый как mumble-server - имеет открытый исходный код и вообще не имеет лицензии на слоты. В Debian и Ubuntu это пакет:

bash
$ sudo apt install mumble-server$ sudo dpkg-reconfigure mumble-server     # autostart, priority, SuperUser password

В системах на базе Debian конфигурация лежит в /etc/mumble-server.ini (murmur.ini в старых пакетах и в исходниках). Ключи, которые стоит знать:

/etc/mumble-server.ini
; Port for both TCP (control) and UDP (voice)port=64738; Join password - empty means anyone may connectserverpassword=; Maximum simultaneous usersusers=100; Maximum bandwidth per user, in bits per secondbandwidth=72000; Shown to every user on connectwelcometext="Welcome. Read the rules in the Lobby channel."; Root channel name and public listingregisterName=Our Community; Lock out addresses after repeated failed attemptsautobanAttempts=10autobanTimeframe=120autobanTime=300

Значения по умолчанию различаются между версиями - в частности, пакетные конфиги поставляются с разными значениями bandwidth, - поэтому читайте прокомментированный файл, пришедший с вашей установкой, а не копируйте значения вслепую. Учётная запись SuperUser, которая может всё независимо от ACL, получает пароль через dpkg-reconfigure в Debian или через mumble-server -supw <password> в других системах. Используйте её, чтобы настроить каналы и группы, затем выдайте права администратора своей зарегистрированной учётной записи и перестаньте входить как SuperUser.

Mumble шифрует всё: канал управления идёт по TLS поверх TCP, а голос - зашифрованный UDP. Если у клиента заблокирован UDP, Mumble туннелирует голос через TCP-соединение. Этот запасной вариант сохраняет подключение в строгих сетях ценой задержек из-за блокировки очереди, которые TCP приносит в звук реального времени, - почему это вредит, объясняет статья TCP или UDP для игровых серверов.

Порты и файрвол#

СервисПортПротоколОткрывать наружу?
Голос TeamSpeak 39987UDPДа
Передача файлов TeamSpeak 330033TCPДа, если пользователи делятся файлами или аватарами
ServerQuery TeamSpeak 3 (raw)10011TCPНет - только для администратора
ServerQuery TeamSpeak 3 (SSH)10022TCPНет - только для администратора
WebQuery TeamSpeak 310080 / 10443TCPНет - только для администратора
Mumble64738TCP и UDPДа
bash
# ufw: a TeamSpeak 3 server$ sudo ufw allow 9987/udp$ sudo ufw allow 30033/tcp# ufw: a Mumble server$ sudo ufw allow 64738/tcp$ sudo ufw allow 64738/udp

В старых версиях TeamSpeak этот файл называется query_ip_whitelist.txt; идея та же. Схема «запрещено всё по умолчанию» вокруг этих правил описана в статье правила файрвола, которые имеют значение, а статья безопасный RCON почти дословно применима к ServerQuery.

Адреса, ссылки и имена#

Игрокам нужен адрес, который можно ввести, а ссылка в Discord или на сайте снимает большинство вопросов в поддержку.

TeamSpeak по умолчанию подключается на 9987, поэтому игроки могут ввести только имя хоста. Нестандартный порт пишется после двоеточия: voice.example.com:9988. Кликабельные ссылки используют схему ts3server://, например ts3server://voice.example.com?port=9987, и клиент сразу открывает сервер. Клиент TeamSpeak 3 также ищет SRV-запись _ts3._udp.example.com, которая позволяет голому имени указывать на сервер на другом хосте или порту, - та же идея, что и SRV-записи для Minecraft.

Mumble: ссылки используют mumble://voice.example.com:64738/, и при клике клиент предлагает добавить сервер. На порту по умолчанию номер можно опустить.

Два практических замечания. Многие чат-платформы, включая Discord, не превращают собственные схемы вроде ts3server:// и mumble:// в кликабельные ссылки, поэтому рядом со ссылкой публикуйте обычный адрес. И с первого дня используйте имя, а не IP-адрес: голосовой сервер - как раз та вещь, которая переезжает, когда сообщество растёт, а имя переезжает вместе с ним. Как разумно назвать целый набор сервисов, рассказывает статья поддомены для серверов.

Обновления#

Голосовые серверы живут долго, и о них легко забыть, - именно так старые уязвимые версии годами остаются открытыми наружу. Оба проекта время от времени выпускают исправления безопасности. Подпишитесь на их объявления о релизах, обновляйтесь по расписанию, а не когда что-то сломалось, и перед каждым обновлением делайте backup базы данных - обновление TeamSpeak, которое мигрирует базу, без копии не откатить. Клиенты обычно терпимо относятся к чуть более новому или старому серверу, но переход через мажорную версию может потребовать обновить обе стороны; прочитайте заметки к релизу, прежде чем объявлять его.

Ресурсы: CPU, память и трафик#

Голосовые серверы дёшевы по CPU и памяти, потому что не микшируют звук. Каждый клиент сам кодирует свой голос в Opus, сервер пересылает пакеты всем, кто должен их слышать, а каждый клиент декодирует. Работа сервера - маршрутизация и проверка прав.

Пользователей онлайнRAMCPUИсходящий трафик в пике
До 3050-100 MBмалая доля одного ядра1-5 Mbit/s
30-100100-250 MBменьше половины ядра5-20 Mbit/s
100-300250-500 MBоколо одного ядра20-60 Mbit/s

Важное число - это трафик, и подчиняется он одному правилу: сервер отправляет поток каждого говорящего каждому слушателю в канале. Поэтому исходящий трафик примерно равен:

code
outbound = simultaneous speakers x listeners in their channel x bitrate per stream

Канал на 30 человек, где одновременно говорят трое по 40 кбит/с каждый, отправляет 3 x 29 x 40 = 3,480 kbit/s, около 3,5 Мбит/с. Разделите тех же 30 человек на пять каналов по шесть - и трафик упадёт намного ниже 1 Мбит/с. Голосовой трафик уходит именно в большие общие каналы, а на практике в большинстве групп говорят по одному, что держит среднее значение далеко ниже пика.

Битрейт на поток зависит от настройки качества кодека. Кодек Opus Voice в TeamSpeak с его ползунком качества и ограничение трафика на пользователя в Mumble обычно дают десятки килобит в секунду на активного говорящего. Настройки музыкального качества стоят в несколько раз больше; оставьте их для того единственного канала, которому они нужны. Статья трафик игрового сервера на игрока ставит эти цифры рядом с игровым трафиком, и вывод там тот же: обычный голосовой сервер - нагрузка в несколько мегабит.

Голос как часть игры#

Несколько игр и модов используют голосовой сервер как часть геймплея, и это меняет то, что вам нужно.

  • Радиомоды Arma 3. Task Force Arrowhead Radio и ACRE2 работают как плагины TeamSpeak: игроки должны быть на сервере TeamSpeak с установленным плагином, а мод решает, кто кого слышит, исходя из раций и расстояния в игре. Для милсим-групп это и есть причина, по которой TeamSpeak всё ещё работает. Игровая сторона описана в статье сервер Arma 3 и моды.
  • FiveM. Популярный ресурс pma-voice использует встроенный в FiveM голос на базе Mumble, который работает внутри самого сервера FiveM на его существующих портах. Старые сборки используют SaltyChat или TokoVOIP, которым нужен сервер TeamSpeak с плагином. Прежде чем поднимать голосовой сервер, проверьте, какой вариант ожидает ваш фреймворк, чтобы не построить то, чем он не будет пользоваться.
  • Minecraft. Мод и плагин Simple Voice Chat даёт голос по расстоянию внутри игрового сервера, на собственном UDP-порту - по умолчанию 24454, - который нужно выделить и открыть рядом с игровым портом. Подробности - в статье моды голосового чата для сервера Minecraft.
  • Позиционный звук Mumble. Клиент Mumble умеет читать позиции игроков из поддерживаемых игр и размещать голоса в 3D. Лучше всего это работает для небольших групп, которые уже пользуются Mumble.

Модерация и безопасность#

Голосовой сервер - это публичная точка доступа с учётными записями пользователей, поэтому он привлекает такое же внимание, как игровой сервер. Несколько привычек помогают сделать его скучным.

  • Ставьте пароль на сервер, если сообщество закрытое. Это не даёт случайным сканерам заходить в каналы.
  • Настройте группы до того, как они понадобятся. И TeamSpeak, и Mumble умеют ограничивать, кто может заходить в канал, говорить, перемещать пользователей, кикать и банить. Решите, у кого какое право, пока всё спокойно.
  • Включите ограничения на флуд и автобан. В TeamSpeak есть настройки антифлуда для каждого виртуального сервера; в Mumble - ключи autoban выше и ограничения частоты сообщений.
  • Не публикуйте данные администратора в чате. Привилегированный ключ, вставленный в Discord, - это ключ, которым может воспользоваться кто угодно.
  • Делайте backup. Для TeamSpeak - файл базы данных (по умолчанию ts3server.sqlitedb), каталог files и файл лицензии, если он у вас есть. Для Mumble - его база SQLite (/var/lib/mumble-server/mumble-server.sqlite в Debian) и ini-файл. Остановите сервис или безопасно скопируйте базу, а затем один раз восстановите её на тестовой машине, чтобы убедиться, что всё работает.

Где его держать#

Голосовому серверу нужны публичный адрес, порты из списка выше и машина, которая не выключается. Больше ему почти ничего не нужно.

  • Дома он страдает от всего того же, что и домашний игровой сервер: CGNAT, динамические адреса, ограничения исходящего канала и IP-адрес вашего дома в клиенте у каждого. Первое объясняет статья NAT и CGNAT для домашнего хостинга.
  • Рядом с игровым сервером на той же машине - работает, если машиной управляете вы. В игровой панели каждый сервер - это одна игра в своём контейнере со своими выделенными портами, поэтому отдельный голосовой демон туда не помещается.
  • На VDS у вас есть root, любые порты на выбор, и рядом с TeamSpeak или Mumble можно запустить всё остальное, что нужно сообществу. Линейка VDS у RE:NODE - машины на Intel i9-9900K в Германии, которые готовятся вручную в течение 24 часов; голосовой сервер на несколько сотен пользователей занимает лишь малую часть даже самого маленького тарифа. Обновления, файрвол и backup вы при этом берёте на себя - минимум описан в статье первый час на новом VDS.

FAQ#

Что лучше для игр - Mumble или TeamSpeak?

У обоих задержка голоса ниже и стабильнее, чем у большинства альтернатив. Mumble бесплатный, с открытым исходным кодом и встроенным позиционным звуком. У TeamSpeak более детальная система прав, и он требуется некоторыми игровыми модами, прежде всего радиомодами Arma 3. Выбирайте тот, от которого уже зависит ваша игра или сообщество.

Сколько пользователей может быть на бесплатном сервере TeamSpeak?

Без лицензии - один виртуальный сервер на 32 слота. Серверам побольше нужна лицензия от TeamSpeak, а условия со временем менялись, так что проверьте их текущее предложение.

Какие порты нужны серверу Mumble?

Всего один номер, 64738, и по TCP, и по UDP. По TCP идёт зашифрованное управляющее соединение, по UDP - голос. Если открыт только TCP, Mumble всё равно работает, туннелируя голос через TCP, но при потере пакетов звук хуже.

Можно ли запустить голосовой сервер на тарифе игрового сервера?

В панели, где каждый сервер - это одна игра в своём контейнере, нет: голосовой сервер - отдельный сервис со своими портами. Некоторые игры включают голос в сам игровой сервер, например встроенный голос FiveM или Simple Voice Chat в Minecraft, и они работают на выделенных портах игрового сервера.

Сколько трафика использует голосовой сервер?

Поток каждого говорящего идёт всем в его канале, поэтому трафик растёт как число говорящих, умноженное на число слушателей. Тридцать человек в одном канале, где говорят трое одновременно, при обычном качестве голоса используют около 3,5 Мбит/с; каналы поменьше - гораздо меньше.


Комментарии

Полностью анонимно: без аккаунта, без почты, без cookie. Мы храним имя, которое вы ввели, текст и время - больше ничего. Количество ссылок ограничено, разметка не отображается.

0/2000