MAATRIX GAMES / Блог / Установка TeamSpeak-сервера — пошаговый гайд

Установка TeamSpeak-сервера — пошаговый гайд

MAATRIX GAMES

Клановый Discord периодически банит войс-канал случайным автомодератором, бесплатный лимит слотов на чужом сервере поджимает, а хочется своих правил модерации и своей структуры каналов без оглядки на чужой сервер. TeamSpeak решает это классическим способом — поднимаете собственный ts3server, и дальше это ваша территория: свои группы прав, свои пароли на каналы, никакой зависимости от политики стороннего войс-чата. Ниже — установка с нуля: от скачивания правильного архива до того, чтобы сервер пережил перезагрузку хоста и не светил административный порт всему интернету.

TeamSpeak 3 и TeamSpeak 5 — что именно ставим

Важно сразу развести два понятия, потому что путаница тут частая. TeamSpeak 5 — это в первую очередь новый клиент с современным интерфейсом, поддержкой нескольких серверов в одном окне и обновлённым звуковым движком. А вот серверная часть, которую вы разворачиваете на VPS, по факту остаётся тем же самым продуктом линейки TeamSpeak 3 Server (дистрибутив teamspeak3-server_linux_amd64) — именно он принимает подключения и от TS3-клиентов, и от TS5-клиентов, протокол совместим в обе стороны. Так что если статья или форумный пост говорит «поставить TeamSpeak 5 сервер» — на практике речь всё равно идёт об установке того же ts3server, просто клиенты у пользователей будут разных версий. Актуальный статус отдельного «next-gen»-сервера под TS5 стоит сверять на официальном сайте перед принятием решений — на момент написания массовый переход на серверную часть под TS5 ещё не завершён, и TS3 Server остаётся рабочей лошадкой.

Для админа сервера это хорошая новость: не нужно гадать, какую версию ставить под какой клиент — один и тот же ts3server обслужит и тех, и других.

Требования к серверу и лицензия

TeamSpeak — один из самых нетребовательных продуктов в игровом хостинге: голосовой трафик не пишется на диск, физика и мир не считаются, основная нагрузка — это диспетчеризация UDP-пакетов и SQLite-база с правами пользователей.

СлотовRAMvCPUДиск
до 32 (без лицензии)512 МБ12-3 ГБ
50-1001 ГБ1-25 ГБ
200+ (нужна лицензия)2 ГБ210 ГБ

512 МБ — это официально заявленный минимум, и с ним сервер стартует и работает, но при одновременном заходе большой части онлайна (например, все разом подключились после объявления о рестарте) лишний запас памяти под своп не помешает. Бесплатная non-commercial лицензия ограничивает сервер 32 слотами — этого с запасом хватает клану или комьюнити на 15-25 активных человек с учётом AFK-каналов. Для большего числа слотов или коммерческого использования нужна платная лицензия с myteamspeak.com — условия и цены там периодически меняются, поэтому перед тем как рассчитывать смету под конкретное число мест, лучше свериться напрямую.

ОС — Ubuntu 22.04/24.04 LTS или Debian 12, ниже команды под них. И главный нюанс, о который спотыкается почти каждый новичок: ts3server принципиально отказывается стартовать из-под root — это встроенная защита продукта, а не баг конфигурации. Понадобится отдельный системный пользователь.

Нужен игровой сервер?

MAATRIX GAMES — 45+ игр, деплой за минуты, DDoS-защита, автобэкапы. Тарифы от 399 ₽/мес.

Создать сервер

Скачивание — не через Steam и не через apt

TeamSpeak Server не лежит ни в Steam, ни в стандартных репозиториях apt/yum — это самостоятельный продукт, который качается напрямую с официального сайта teamspeak.com, раздел Downloads. Клиент и сервер там же, но это два разных архива — не перепутайте, скачивая по памяти.

Подключаемся по SSH и тянем актуальный линуксовый архив (точную ссылку и версию берите со страницы загрузок — они регулярно выкатывают патчи):

mkdir -p ~/downloads && cd ~/downloads
curl -LO "https://files.teamspeak-services.com/releases/server/<версия>/teamspeak3-server_linux_amd64-<версия>.tar.bz2"

Заводим отдельного пользователя, от которого сервис будет жить постоянно:

sudo adduser --disabled-password --gecos "" ts3
sudo su - ts3

Распаковываем в домашнюю папку этого пользователя:

cd ~
tar -xjf ~/downloads/teamspeak3-server_linux_amd64-*.tar.bz2
mv teamspeak3-server_linux_amd64-* ts3-server
cd ts3-server

Внутри — бинарник ts3server, обёртка ts3server_startscript.sh и пустой (пока) ts3server.ini, который сервер сам создаст и заполнит частично при первом запуске.

Первый запуск и привилегированный токен

Запускаем интерактивно один раз, не через systemd — иначе рискуете пропустить вывод, который показывается ровно один раз за всю жизнь сервера:

./ts3server_startscript.sh start

На первом старте выскочит лицензионное соглашение — подтверждаем y, и следом в консоли появляется блок:

ServerAdmin privilege key created, please use it to gain serveradmin rights:
token=abCDefGH1234567890IJKLmnopQRSTuvWXyz1234

ServerQuery Admin Account created:
loginname= "serveradmin", password= "xxxxxxxxxx"

Токен (privilege key) — единственный ключ, дающий права ServerAdmin на этом сервере с нуля. Скопируйте его сразу, пока терминал не закрылся: заново он не сгенерируется, а хранится только в логе внутри папки logs/, что не самое удобное место для поиска через полгода. Пароль serveradmin — это отдельная учётка для входа через ServerQuery (административный текстовый протокол, порт 10011), пригодится позже для автоматизации, но для базовой настройки достаточно токена.

Если токен всё же потерян и учётка ServerAdmin ещё не привязана ни к одному аккаунту — восстановление идёт через тот же ServerQuery-логин serveradmin, либо, в крайнем случае, через пересоздание базы ts3server.sqlitedb с нуля (это сотрёт все каналы и права).

Конфигурация ts3server.ini

Основные параметры сервера удобнее держать в конфиге, а не передавать флагами при каждом запуске. Файл ts3server.ini лежит рядом с бинарником:

default_voice_port=9987
filetransfer_port=30033
voice_ip=0.0.0.0
query_ip=0.0.0.0
query_protocols=raw,ssh
machine_id=
license_accepted=1

Что здесь важно:

  • default_voice_port=9987 — стандартный UDP-порт голосового трафика. Менять смысл есть, если на одной машине планируется поднять несколько независимых виртуальных серверов TeamSpeak в рамках одного процесса ts3server — тогда у каждого свой порт.
  • query_protocols=raw,ssh — разрешает подключаться к ServerQuery не только по «сырому» telnet-подобному протоколу на 10011, но и через SSH-обёртку на 41144, что заметно безопаснее для удалённого администрирования (см. следующий раздел).
  • Максимум слотов и пароль подключения задаются не здесь, а через клиент ServerAdmin (Virtual Server → Edit) или ServerQuery-командой serveredit maxclients=N / serveredit virtualserver_password=....

Изменения в ts3server.ini подхватываются при рестарте сервиса, «на лету» — нет.

Порты, файрвол и безопасность query-порта

Список портов, которые использует TeamSpeak Server:

ПортПротоколНазначение
9987UDPГолосовой трафик (по умолчанию)
30033TCPФайлотранспорт — аватарки, иконки каналов, обмен файлами
10011TCPServerQuery, «сырой» протокол
41144TCPServerQuery через SSH

Клиентам для обычного подключения нужны только два первых:

sudo ufw allow 9987/udp
sudo ufw allow 30033/tcp
sudo ufw status

А вот с 10011 и 41144 стоит быть аккуратнее — это прямой административный доступ к серверу. Открывать их наружу без ограничений — плохая идея: боты сканируют интернет на предмет открытых ServerQuery-портов и перебирают пароль serveradmin брутфорсом. Разумный минимум — вообще не открывать эти порты во внешний файрвол, администрируя через SSH-туннель (ssh -L 10011:127.0.0.1:10011 user@сервер), либо ограничить доступ конкретными IP-адресами через ufw:

sudo ufw allow from 203.0.113.10 to any port 10011 proto tcp

На TS3 ServerQuery есть встроенная защита от подбора пароля (временная блокировка IP после нескольких неудачных попыток), но полагаться только на неё не стоит — заведите правило файрвола и не открывайте эти порты «на всякий случай». У облачных провайдеров, где поверх ufw есть ещё security group на уровне сети, правило нужно продублировать и там. На тарифах MAATRIX GAMES голосовой порт и файлотранспорт открываются автоматически при деплое, а query-порты по умолчанию закрыты наружу.

Автозапуск через systemd и подключение клиентом

Запуск вручную в screen или tmux работает — этот же подход разбирался применительно к игровым процессам в статье про systemd, screen и tmux — но после ребута хоста сервис нужно поднимать заново руками. Юнит systemd закрывает и это, и автоматический рестарт при падении.

Для systemd правильнее запускать не обёртку ts3server_startscript.sh (она форкается в фон, а Type=simple ждёт процесс на переднем плане), а сам бинарник напрямую. Создаём /etc/systemd/system/ts3.service:

[Unit]
Description=TeamSpeak 3 Server
After=network.target

[Service]
Type=simple
User=ts3
WorkingDirectory=/home/ts3/ts3-server
ExecStart=/home/ts3/ts3-server/ts3server inifile=ts3server.ini
Restart=on-failure
RestartSec=15
LimitNOFILE=100000

[Install]
WantedBy=multi-user.target

Поскольку лицензионное соглашение уже принято на первом интерактивном запуске (флаг license_accepted=1 в конфиге это фиксирует), повторного запроса подтверждения при старте через systemd не будет:

sudo systemctl daemon-reload
sudo systemctl enable ts3
sudo systemctl start ts3
journalctl -u ts3 -f

Дальше — клиент, скачанный отдельно с teamspeak.com (раздел Downloads → Client, доступны и TS3, и TS5 клиенты — оба совместимы с поднятым сервером): Connections → Connect, вводим IP или домен (если порт нестандартный — через двоеточие, например 1.2.3.4:9988), никнейм, и при необходимости пароль сервера. Права администратора активируются через Permissions → Use Privilege Key — вставляете токен, сохранённый на шаге установки, и учётка получает группу ServerAdmin со всеми правами: созданием каналов, управлением группами, банами.

Прежде чем звать людей, стоит продумать структуру заранее: отдельные каналы под голос по играм или составам, если комьюнити держит одновременно несколько проектов — например, Rust и ARK: Survival Evolved — плюс закрытые каналы для стаффа с паролем и отдельной группой прав, чтобы не разгребать это на живом сервере с людьми внутри. Если вместо (или вместе с) TeamSpeak комьюнити крутится вокруг Discord — тикеты и whitelist для такого контура разбирались в статье про Discord-интеграцию для RP-сервера, а базовая установка альтернативного лёгкого войс-чата — в гайде по Mumble.

Нужен игровой сервер?

MAATRIX GAMES — 45+ игр, деплой за минуты, DDoS-защита, автобэкапы. Тарифы от 399 ₽/мес.

Создать сервер

Частые вопросы

Чем TeamSpeak в итоге лучше или хуже Discord для войса клана?

Свой сервер — это свои правила модерации, отсутствие сторонних банов и ботов-модераторов чужой платформы, и часто более низкая задержка звука за счёт прямого UDP-соединения. Минус — придётся администрировать это сами и следить за обновлениями, тогда как Discord это делает за вас.

Потерял privilege key — как получить права заново?

Через ServerQuery-логин serveradmin (пароль показывался вместе с токеном при первом запуске и остаётся в logs/), подключившись на порт 10011 или 41144. Если и этот пароль утерян, крайний вариант — остановить сервис и удалить ts3server.sqlitedb: это создаст новый токен, но обнулит все текущие каналы и права.

Нужно ли обновлять сервер вручную?

Да, автообновления нет. Скачиваете новый архив с teamspeak.com, останавливаете сервис (systemctl stop ts3), заменяете только бинарник ts3server (конфиг и база данных не трогаются), запускаете обратно. Перед мажорными обновлениями стоит свериться с changelog на официальном сайте — несовместимости редки, но случаются.

Можно ли держать несколько TeamSpeak-серверов на одном VPS?

Да, через виртуальные серверы внутри одного процесса ts3server — каждый со своим портом и своим набором слотов/прав, создаются командой ServerQuery servercreate (доступность зависит от типа лицензии).

Обязательно ли закрывать порты 10011 и 41144 полностью?

Строго обязательного требования нет, но открывать их без ограничения по IP — риск, который того не стоит: административный доступ к серверу лучше держать либо за SSH-туннелем, либо за белым списком адресов в файрволе.