15%

Сэкономьте 15% на всех хостинговых услугах

Проверьте свои навыки и получите скидку на любой тарифный план

Используйте код:

Skills
Начать
09.10.2024

Как установить сервер TeamSpeak на VPS (руководство для Ubuntu/CentOS)

TeamSpeak — это самостоятельно размещаемая платформа голосовой связи с низкой задержкой, работающая как автономный серверный демон на Linux. Установка на VPS даёт вам полный административный контроль над каналами, разрешениями, кодеками и политиками безопасности — без зависимости от сторонней инфраструктуры или ограничений использования.

Это руководство охватывает полную установку TeamSpeak 3 Server на Ubuntu (с примечаниями для вариантов CentOS/RHEL), включая изоляцию пользователей, настройку службы systemd, защиту пароля администратора и подключение клиента. Каждая команда готова к использованию в производственной среде и протестирована на чистой среде 22.04 LTS.

Зачем размещать TeamSpeak на VPS самостоятельно

Коммерческие голосовые платформы, такие как Discord, навязывают политику хранения данных, алгоритмическую модерацию и ограничения скорости, которые организации не могут обойти. Самостоятельно размещённый экземпляр TeamSpeak полностью устраняет эти ограничения. Вы контролируете:

  • Качество кодека (Opus Voice, Opus Music) и побитовую скорость для каждого канала
  • Систему разрешений с детализированными ACL групп серверов и групп каналов
  • Шифрование через TLS для сигнализации и опциональное шифрование голоса
  • Хранение данных — ваш голосовой трафик никогда не проходит через сторонний ретранслятор
  • SLA по времени работы — напрямую зависит от вашего провайдера VPS, а не от общего облачного сервиса

Для игровых кланов, киберспортивных организаций, удалённых команд разработчиков и корпоративных коммуникаций это обеспечивает измеримые преимущества в надёжности и соответствии требованиям.

Минимальные системные требования

TeamSpeak 3 Server исключительно легковесен. Следующие характеристики поддерживают приблизительно 50–100 одновременных пользователей без ухудшения качества звука:

РесурсМинимумРекомендуется (100+ пользователей)
Ядра CPU1 vCPU2 vCPU
RAM512 MB1 GB
Дисковое пространство1 GB5 GB (логи + БД)
Сеть10 Mbps100 Mbps
ОСUbuntu 20.04+ / CentOS 7+Ubuntu 22.04 LTS
Архитектураx86_64 (amd64)x86_64 (amd64)

Тарифный план VPS Хостинг с 1 vCPU и 512 MB RAM достаточен для небольшого сообщества. Масштабируйте вертикально по мере роста числа одновременных пользователей.

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

  • `9987/UDP` — голосовые данные (по умолчанию)
  • `10011/TCP` — ServerQuery (raw или SSH)
  • `30033/TCP` — передача файлов

Шаг 1: Подготовка сервера

Подключитесь к вашему VPS как root:

“`bash

ssh root@your_server_ip -p your_ssh_port

“`

Обновите все системные пакеты для устранения известных уязвимостей перед установкой нового программного обеспечения:

“`bash

sudo apt update && sudo apt upgrade -y

“`

Установите `bzip2`, который необходим для извлечения архива TeamSpeak:

“`bash

sudo apt install bzip2 -y

“`

На CentOS/AlmaLinux/Rocky Linux замените вышеуказанное на:

“`bash

sudo dnf update -y && sudo dnf install bzip2 wget -y

“`

Шаг 2: Создание выделенного системного пользователя

Запуск TeamSpeak от имени root — критическая ошибка безопасности. Если процесс будет когда-либо взломан, злоумышленник немедленно получит root-доступ ко всему хосту. Всегда изолируйте его под непривилегированным пользователем:

“`bash

sudo adduser teamspeak

“`

Следуйте подсказкам для установки пароля. Этот пользователь будет владеть всеми бинарными файлами TeamSpeak, файлами конфигурации и базой данных SQLite.

> Примечание по безопасности: Для защищённых сред рассмотрите создание пользователя с `–disabled-login` и использование `sudo -u teamspeak` для всех операций, полностью предотвращая интерактивный доступ к оболочке.

Шаг 3: Загрузка и извлечение бинарного файла TeamSpeak Server

Переключитесь в контекст пользователя `teamspeak`:

“`bash

sudo su – teamspeak

“`

Загрузите последний стабильный выпуск TeamSpeak 3 Server для 64-битного Linux. Всегда проверяйте актуальный номер версии на официальной странице загрузок TeamSpeak перед выполнением этой команды, так как строка версии меняется с каждым выпуском:

“`bash

wget https://files.teamspeak-services.com/releases/server/3.13.7/teamspeak3-server_linux_amd64-3.13.7.tar.bz2 -O teamspeak-server.tar.bz2

“`

Извлеките архив и уберите верхний каталог, чтобы все файлы оказались непосредственно в текущем рабочем каталоге (`/home/teamspeak/`):

“`bash

tar xvfj teamspeak-server.tar.bz2 –strip-components 1

“`

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

“`bash

touch ~/.ts3server_license_accepted

“`

Вернитесь к пользователю root:

“`bash

exit

“`

Шаг 4: Создание юнита службы systemd

Управление TeamSpeak через systemd гарантирует автоматический перезапуск процесса после перезагрузки или сбоя, интеграцию с `journald` для централизованного ведения журналов и соблюдение правильного порядка зависимостей при загрузке.

Откройте новый файл юнита службы:

“`bash

nano /etc/systemd/system/teamspeak.service

“`

Вставьте следующую полную конфигурацию юнита:

“`ini

[Unit]

Description=TeamSpeak 3 Server

After=network.target

[Service]

WorkingDirectory=/home/teamspeak/

User=teamspeak

Group=teamspeak

Type=forking

ExecStart=/home/teamspeak/ts3server_startscript.sh start inifile=ts3server.ini

ExecStop=/home/teamspeak/ts3server_startscript.sh stop

PIDFile=/home/teamspeak/ts3server.pid

Restart=on-failure

RestartSec=10s

[Install]

WantedBy=multi-user.target

“`

Объяснение ключевых директив:

  • `After=network.target` — предотвращает запуск до готовности сетевого стека, избегая ошибок привязки к `9987/UDP`
  • `Type=forking` — корректно для стартового скрипта TeamSpeak, который разветвляет фоновый процесс
  • `Restart=on-failure` — автоматически восстанавливается после неожиданных сбоев без ручного вмешательства
  • `RestartSec=10s` — добавляет небольшую задержку перед попытками перезапуска для предотвращения быстрых циклов сбоев

Сохраните файл (`Ctrl+S`, затем `Ctrl+X`), затем перезагрузите демон systemd для регистрации нового юнита:

“`bash

systemctl daemon-reload

“`

Включите службу для запуска при загрузке и немедленно запустите её:

“`bash

systemctl enable –now teamspeak

“`

Проверьте, что служба активна и работает:

“`bash

systemctl status teamspeak

“`

Ожидаемый вывод включает `Active: active (running)` с действительным PID. Если статус показывает `failed`, немедленно проверьте журналы:

“`bash

journalctl -u teamspeak -n 50 –no-pager

“`

Шаг 5: Получение ключа привилегий администратора (токена)

При первом запуске TeamSpeak Server генерирует ключ привилегий (токен) в своих файлах журналов. Этот токен предоставляет первому подключающемуся клиенту полные права администратора сервера. Вы должны получить его до того, как кто-либо другой подключится.

“`bash

grep -i token /home/teamspeak/logs/*

“`

Вывод будет содержать строку, похожую на:

“`

token=q1a2b3c4d5e6f7g8h9i0jKLMNOPQRSTUVWXYZ

“`

Скопируйте этот токен. При первом подключении через клиент TeamSpeak вам будет предложено его ввести. Это повысит ваш клиент до группы сервера `Server Admin`.

> Важно: Этот токен одноразовый и используется при первом применении. Если вы потеряете его до использования, вам придётся вручную установить новый пароль администратора (см. Шаг 6). Храните его в надёжном месте.

Шаг 6: Установка или сброс пароля ServerAdmin

Учётная запись `serveradmin` используется для доступа через ServerQuery — интерфейс raw TCP или SSH, позволяющий выполнять скриптовое администрирование, интеграцию ботов и использование инструментов удалённого управления, таких как YaTQA или ts3admin.

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

“`bash

systemctl stop teamspeak.service

“`

Переключитесь на пользователя teamspeak и установите пароль:

“`bash

su – teamspeak

./ts3server_startscript.sh start serveradmin_password=YourStrongPassword

“`

Дождитесь полной инициализации сервера (следите за `TeamSpeak 3 Server started successfully` в выводе), затем остановите его:

“`bash

./ts3server_startscript.sh stop

exit

“`

Перезапустите управляемую службу:

“`bash

systemctl start teamspeak.service

“`

Требования к паролю: Используйте минимум 16 символов со смешанным регистром, цифрами и символами. Интерфейс ServerQuery открыт на TCP-порту `10011` и является распространённой целью для атак методом перебора при слабом пароле.

Шаг 7: Настройка брандмауэра

Если `ufw` активен на вашем сервере, откройте необходимые порты:

“`bash

ufw allow 9987/udp comment "TeamSpeak voice"

ufw allow 10011/tcp comment "TeamSpeak ServerQuery"

ufw allow 30033/tcp comment "TeamSpeak file transfer"

ufw reload

“`

Для `firewalld` (CentOS/AlmaLinux):

“`bash

firewall-cmd –permanent –add-port=9987/udp

firewall-cmd –permanent –add-port=10011/tcp

firewall-cmd –permanent –add-port=30033/tcp

firewall-cmd –reload

“`

> Совет по защите: Если вам не нужен публичный доступ к ServerQuery, ограничьте порт `10011` только определёнными IP-адресами управления. Открывать его публично не нужно для стандартной работы голосового сервера.

Шаг 8: Подключение из клиента TeamSpeak

  1. Загрузите и установите TeamSpeak 3 Client для вашей настольной ОС (Windows, macOS, Linux).
  2. Откройте клиент и перейдите в Connections > Connect.
  3. Введите IP-адрес вашего VPS в поле Server Nickname or Address.
  4. Оставьте порт `9987`, если вы не изменили его в `ts3server.ini`.
  5. При первом подключении клиент предложит вам ввести ключ привилегий (токен). Вставьте токен, полученный на Шаге 5.
  6. Теперь ваш клиент является администратором сервера.

Дополнительно: использование автоматизированного скрипта установки

Для быстрого развёртывания AlexHost предоставляет автоматизированный скрипт установки, который выполняет установку зависимостей, создание пользователя, загрузку бинарных файлов и настройку службы за одно выполнение:

“`bash

ssh root@your_server_ip -p your_ssh_port

wget https://bill.alexhost.com/downloads/teamspeak_install.sh

chmod +x teamspeak_install.sh

./teamspeak_install.sh

“`

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

TeamSpeak против альтернатив: самостоятельно размещаемые голосовые платформы

ФункцияTeamSpeak 3MumbleDiscord (облако)
Самостоятельное размещениеДаДаНет
Использование RAM (в простое)~30 MB~15 MBН/Д
ЗадержкаОчень низкаяОчень низкаяНизкая–Средняя
ШифрованиеTLS (сигнализация)DTLS + SRTPПроприетарное
Система разрешенийРасширенный ACLУмеренныйНа основе ролей
Доступность клиентаWin/Mac/Linux/MobileWin/Mac/LinuxWin/Mac/Linux/Mobile
Лицензия (сервер)Бесплатно до 32 слотовОткрытый исходный кодН/Д
КодекOpusOpus/CELTOpus
ServerQuery APIДа (TCP/SSH)НетТолько REST API

ServerQuery API TeamSpeak является значительным отличием для организаций, которым необходимо программное управление сервером — автоматизированное создание каналов, интеграция ботов или изменения разрешений, запускаемые CI/CD.

Распространённые проблемы установки и их решения

Сервер не запускается — «Could not bind to port 9987»

Другой процесс использует UDP 9987, или служба запустилась до готовности сети. Проверьте с помощью `ss -ulnp | grep 9987` и убедитесь, что директива `After=network.target` присутствует в вашем юните службы.

Ошибка «License file not found»

Файл `.ts3server_license_accepted` должен существовать в домашнем каталоге пользователя, запускающего процесс (`/home/teamspeak/`). Проверьте с помощью `ls -la /home/teamspeak/.ts3server_license_accepted`.

Токен не найден в журналах

Каталог журналов по умолчанию — `/home/teamspeak/logs/`. Если вы извлекли архив в другой путь, скорректируйте команду grep соответственно. Токены появляются в журнале только при самом первом запуске — если база данных уже существует, новый токен не генерируется.

Отказ в подключении к ServerQuery

Убедитесь, что порт `10011/TCP` открыт в вашем брандмауэре и что процесс сервера запущен. Проверьте локально с помощью `telnet 127.0.0.1 10011` — успешное подключение возвращает баннер `TS3`.

Высокая загрузка CPU при большом количестве пользователей

TeamSpeak однопоточен для микширования голоса. Если вы превышаете ~200 одновременных пользователей на одном экземпляре виртуального сервера, рассмотрите развёртывание нескольких виртуальных серверов или переход на план Выделенные серверы для гарантированной тактовой частоты CPU и отсутствия конкуренции с соседями.

Защита вашего развёртывания TeamSpeak

Помимо изоляции пользователей и правил брандмауэра, рассмотренных выше, примените следующие меры защиты:

  • Измените порты по умолчанию в `ts3server.ini` для снижения воздействия автоматического сканирования. Обновите правила брандмауэра соответственно.
  • Ограничьте ServerQuery (`10011/TCP`) IP-адресами управления с помощью фильтрации источников в брандмауэре.
  • Включите аутентификацию по SSH-ключу на вашем VPS и отключите вход по паролю для root. Обратитесь к панели управления VPS для управления SSH-ключами.
  • Мониторинг журналов через `journalctl -u teamspeak -f` для выявления необычных паттернов подключений или повторяющихся сбоев аутентификации ServerQuery.
  • Регулярное резервное копирование `/home/teamspeak/ts3server.sqlitedb` — этот файл содержит все конфигурации каналов, группы серверов, разрешения и идентификаторы клиентов. Его потеря означает восстановление всей структуры сервера с нуля.
  • Поддерживайте бинарный файл в актуальном состоянии. TeamSpeak периодически выпускает патчи безопасности. Подпишитесь на их объявления о выпусках и повторите Шаги 3–4 с новым архивом версии при появлении обновлений.

Если вы управляете несколькими службами на одном VPS, рассмотрите сочетание вашего экземпляра TeamSpeak с решением Панели управления VPS для упрощения управления службами, мониторинга и запланированных задач из единого интерфейса.

Матрица решений: подходит ли вам эта настройка?

СценарийРекомендуемое действие
До 32 одновременных пользователей, игровое сообществоНачальный VPS, бесплатная лицензия TeamSpeak
32–512 одновременных пользователей, организацияОбновление лицензии TeamSpeak + VPS с 2–4 vCPU
Требуется полная аппаратная изоляция, 500+ пользователейВыделенный сервер, несколько экземпляров виртуальных серверов
Нужна управляемая панель + TeamSpeakVPS с cPanel или DirectAdmin
Требуется маршрутизация с низкой задержкой ЕС/СШАВыберите расположение дата-центра VPS, ближайшее к пользователям
Нужно сопутствующее веб-присутствиеДобавьте [Общий веб-хостинг](https://alexhost.com/ru/shared-hosting/) или поддомен на том же VPS
Требуется пользовательский домен для адреса сервера[Регистрация домена](https://alexhost.com/ru/domains/) + DNS A-запись, указывающая на IP VPS

Ключевые технические выводы

  • Всегда запускайте TeamSpeak под выделенным пользователем без прав root. Это обязательное требование для любого сервиса, доступного из интернета.
  • Файл-маркер `ts3server_license_accepted` должен существовать до запуска демона — распространённая точка отказа при первой загрузке.
  • Используйте `Type=forking` в юните systemd, а не `Type=simple`. Стартовый скрипт разветвляет фоновый процесс; `simple` приведёт к некорректному отслеживанию PID системой systemd.
  • Получите токен ключа привилегий из журналов сразу после первого запуска. Он используется при первом применении и не может быть восстановлен без ручной процедуры сброса пароля.
  • Порт `9987/UDP` — единственный порт, необходимый для базовой голосовой связи. `10011/TCP` и `30033/TCP` опциональны в зависимости от вашего случая использования.
  • Создавайте резервные копии `ts3server.sqlitedb` по расписанию. Вся конфигурация сервера хранится в этом единственном файле.
  • Для производственных развёртываний ограничьте ServerQuery локальным хостом или управляющей VLAN — никогда не открывайте его публично без белого списка IP-адресов.

Часто задаваемые вопросы

Каково максимальное количество пользователей на бесплатной лицензии TeamSpeak?

Бесплатная некоммерческая лицензия поддерживает до 32 одновременных слотов. Для более крупных развёртываний TeamSpeak предлагает годовые лицензии на 64, 128, 256 или 512 слотов, а также «Лицензию активации» с неограниченным количеством слотов для соответствующих организаций.

Можно ли запустить TeamSpeak Server на VPS с 512 MB RAM?

Да. Демон TeamSpeak 3 Server потребляет приблизительно 25–40 MB RAM в простое и умеренно масштабируется с ростом числа одновременных пользователей. VPS с 512 MB RAM достаточен для сообществ до 50 одновременных пользователей, с комфортным запасом для ОС и системных процессов.

Как обновить TeamSpeak Server без потери конфигурации?

Остановите службу с помощью `systemctl stop teamspeak`, загрузите новый архив версии от имени пользователя `teamspeak`, извлеките его с помощью `–strip-components 1` в тот же каталог (перезаписав только бинарные файлы), затем перезапустите службу. База данных `ts3server.sqlitedb` и файл конфигурации `ts3server.ini` не перезаписываются в этом процессе.

Почему мой сервер TeamSpeak не виден в публичном списке серверов?

По умолчанию серверы TeamSpeak не регистрируются в публичном списке серверов. Для включения листинга установите `machine_id=` и настройте `serverip` в `ts3server.ini`, затем включите опцию публичного листинга через ServerQuery или панель администрирования сервера в клиенте. Убедитесь, что UDP-порт `9987` доступен из интернета.

Шифруется ли трафик TeamSpeak по умолчанию?

Сигнальный трафик (установка соединения, чат, разрешения) шифруется через TLS. Голосовые данные, передаваемые по UDP, по умолчанию не шифруются в TeamSpeak 3. Шифрование голоса можно включить для каждого канала или для всего сервера через настройки сервера, ценой небольшого увеличения загрузки CPU. TeamSpeak 5 (в настоящее время в разработке) использует сквозное шифрование по умолчанию.

15%

Сэкономьте 15% на всех хостинговых услугах

Проверьте свои навыки и получите скидку на любой тарифный план

Используйте код:

Skills
Начать