MAATRIX GAMES / Блог / Как поднять сервер TeamSpeak: пошаговая инструкция

Как поднять сервер TeamSpeak: пошаговая инструкция

MAATRIX GAMES

Голосовой чат в игре или в Discord периодически ложится, режет качество звука на весь канал или просто не устраивает задержкой — а команде или комьюнити нужен стабильный голос, который не зависит от чужих серверов и настроек модерации сторонней платформы. TeamSpeak 3 для этого и существует: свой сервер, свои правила, свои каналы, и всё это поднимается на обычном VPS за полчаса. Разберём установку по шагам — от скачивания до автозапуска, с упором на грабли, о которые обычно спотыкаются в первый раз.

Что нужно для сервера TeamSpeak

TeamSpeak Server — один из самых лёгких по ресурсам продуктов в игровом хостинге вообще. Он не считает физику, не генерирует мир и не хранит инвентари тысяч игроков — по сути это диспетчер голосовых потоков и база данных с правами пользователей. Ориентировочные цифры по памяти (точная нагрузка зависит от числа каналов, активности разговоров и того, держите ли вы файловый обмен и аватарки):

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

512 МБ RAM — это официальный минимум, ниже которого сервер может стартовать, но будет упираться в своп при активном заходе пользователей одновременно. Диск почти не расходуется на сам голосовой трафик — он не пишется на диск, — основной расход идёт на базу SQLite с правами и логи.

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

Если параллельно держите игровой сервер — например, Rust или ARK: Survival Evolved — TeamSpeak разумнее вынести на отдельный VPS или как минимум не сажать на тот же лимит RAM впритык: голос должен работать даже когда игровой сервер проседает под нагрузкой при вайпе или ивенте.

Установка TeamSpeak Server — не через Steam

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

Заходим на сервер по SSH и качаем актуальный архив под Linux (имя файла на сайте выглядит как teamspeak3-server_linux_amd64-X.X.X.tar.bz2, версию проверьте на странице загрузок — она периодически обновляется):

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 "" teamspeak
sudo su - teamspeak

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

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

Внутри — бинарник ts3server, скрипт-обёртка ts3server_startscript.sh и конфиг ts3server.ini, который на первом старте ещё не создан и генерируется автоматически.

Поднять сервер TeamSpeak за пару минут

Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.

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

Первый запуск и privilege key — самое важное

Запускаем сервер первый раз интерактивно, не через systemd, чтобы увидеть лицензионное соглашение и ключевую информацию, которая выводится только один раз:

./ts3server_startscript.sh start

При самом первом запуске TeamSpeak Server покажет лицензионное соглашение и спросит подтверждение — нужно ответить y. После этого в консоли появится блок примерно такого вида:

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

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

Это и есть привилегированный ключ (privilege key / token) — единственный способ получить права ServerAdmin на только что созданном сервере. Он не хранится в отдельном файле для удобного просмотра позже (хотя и попадает в лог в папке logs/), поэтому первым делом скопируйте его в безопасное место — пароль-менеджер, заметку, что угодно, лишь бы не потерять. Второй такой ключ по умолчанию не сгенерируется — если токен потерян и вы ещё не привязали к серверу свою учётную запись, восстановить админ-права можно только через ServerQuery-логин serveradmin с паролем из того же вывода, либо пересозданием базы сервера с нуля.

Логин serveradmin и пароль к нему — это отдельная сущность, доступ через ServerQuery (текстовый административный протокол на порту 10011), а не через обычный голосовой клиент. Для базовой эксплуатации сервера он не нужен, но пригодится, если когда-нибудь захотите автоматизировать управление сервером скриптами.

Проброс портов и файрвол

TeamSpeak 3 Server использует несколько портов, и часть из них легко забыть при настройке файрвола:

ПортПротоколНазначение
9987UDPОсновной голосовой порт (по умолчанию)
30033TCPФайловый транспорт — аватарки, иконки каналов, обмен файлами
10011TCPServerQuery — административный доступ по протоколу telnet-подобного типа
41144TCPServerQuery через SSH (более безопасная альтернатива 10011)

Для обычного голосового сервера, к которому подключаются только клиентом, достаточно открыть 9987/UDP и 30033/TCP:

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

Порты 10011 и 41144 стоит либо не открывать наружу вовсе, либо ограничить доступ конкретными IP через файрвол — это административный вход, и светить его всему интернету не лучшая идея. Если хостинг-провайдер держит облачный файрвол или security group поверх ufw — правила нужно продублировать и там, иначе пакеты срежет ещё на уровне сети до того, как долетят до VPS. На тарифах MAATRIX GAMES нужные порты для TeamSpeak открываются автоматически при деплое.

Базовая настройка: слоты, порт и лицензия

Основные параметры сервера задаются либо флагами при запуске, либо (что удобнее для постоянной эксплуатации) в файле ts3server.ini, который лежит в рабочей папке рядом с бинарником и на первом старте создаётся пустым — заполняем сами:

default_voice_port=9987
filetransfer_port=30033
voice_ip=0.0.0.0
query_ip=0.0.0.0
machine_id=
license_accepted=1

Ключевые параметры, которые обычно правят сразу:

  • default_voice_port — тот самый порт 9987, менять есть смысл, если на одной машине планируется несколько инстансов сервера (виртуальные серверы TeamSpeak поддерживают запуск не одного, а нескольких «виртуальных серверов» на разных портах в рамках одного процесса ts3server).
  • Максимум слотов — задаётся не в ts3server.ini, а внутри клиента через ServerAdmin: вкладка Virtual Server → Edit → Max Clients, либо через ServerQuery-команду serveredit maxclients=N.
  • Лицензия — бесплатный (non-commercial) режим TeamSpeak Server ограничивает сервер 32 слотами без дополнительной регистрации. Для большего числа слотов нужна лицензия с сайта myteamspeak.com — условия периодически меняются, актуальные лимиты и цены смотрите там перед тем, как рассчитывать на конкретное число мест.

Пароль на подключение к серверу (не путать с приви-ключом) выставляется тоже через ServerAdmin — Virtual Server → Edit → Password, либо ServerQuery-командой serveredit virtualserver_password=ваш_пароль.

Подключение клиентом и активация прав администратора

Клиент скачивается отдельно — там же, на teamspeak.com, раздел Downloads → Client, для Windows/macOS/Linux. После установки:

  1. Открываем клиент, идём в Connections → Connect.
  2. В поле Server Address указываем IP или домен сервера. Если голосовой порт отличается от 9987 — дописываем через двоеточие, например 1.2.3.4:9988.
  3. Указываем Nickname, при необходимости — Server Password, если он задан.
  4. Жмём Connect.

Чтобы получить права администратора на только что созданном сервере, используем сохранённый ранее privilege key: в меню клиента Permissions → Use Privilege Key, вставляем токен и подтверждаем. После этого учётная запись, под которой вы подключены, получает группу ServerAdmin и полный доступ к настройкам — созданию каналов, правам групп, банам, модерации.

Дальше типовая последовательность: создаём структуру каналов (каналы создаются через правый клик на дереве сервера → Create Channel), настраиваем права групп через Permissions → Server Groups. Если TeamSpeak поднимается для комьюнити вокруг конкретного игрового сервера — скажем, Minecraft — удобно сразу завести под него отдельную ветку каналов с паролем, чтобы не мешать остальным гостям сервера.

Автозапуск через systemd

Стартовать сервер вручную в screen или tmux работает, но после перезагрузки VPS придётся заходить и поднимать его заново. Юнит systemd решает и это, и автоматический рестарт при падении.

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

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

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

[Install]
WantedBy=multi-user.target

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

sudo systemctl daemon-reload
sudo systemctl enable teamspeak
sudo systemctl start teamspeak
sudo systemctl status teamspeak

Логи в реальном времени:

journalctl -u teamspeak -f

Restart=on-failure подстрахует от падений процесса (например, при OOM на слабых тарифах с 512 МБ RAM под большим числом одновременных подключений) — systemd поднимет сервис сам, без ручного вмешательства среди ночи. Если вы уже разворачивали автозапуск для игровых серверов вроде Valheim, принцип тот же — отдельный пользователь, отдельный юнит, Restart=on-failure.

Поднять сервер TeamSpeak за пару минут

Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.

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

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

Забыл или потерял privilege key — что делать?

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

Сколько слотов реально нужно для команды из 10-15 человек?

С запасом хватит стандартных 32 слотов бесплатной лицензии — даже с несколькими AFK-каналами и запасом под гостей редко упираются в потолок раньше 25-30 одновременных подключений.

Почему сервер не стартует под root с ошибкой в консоли?

Это встроенное ограничение TeamSpeak Server — он отказывается запускаться от имени root из соображений безопасности. Решение — создать отдельного системного пользователя, как описано выше, и запускать сервис от его имени.

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

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

Нужно ли вручную обновлять сервер при выходе новой версии?

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