Сервер TeamSpeak 6 в Docker Compose на VPS

Запуск официального образа TeamSpeak 6 Server через Docker Compose: порты в UFW, ключ привилегий ServerAdmin, обновление и резервная копия тома без потери каналов и прав. Ubuntu 24.04 и Debian 12.

26 октября 2026 г.·4 мин чтения·teamspeak, docker, voice

TeamSpeak 6 — новое поколение голосового сервера TeamSpeak. Сервер пока в бете, но TeamSpeak распространяет его официальным образом Docker с бесплатной бета-лицензией на 32 слота. Поднимается за десять минут: Docker, два порта, один compose-файл, ключ привилегий из лога.

Это бета. Встроенная лицензия даёт 32 слота и обновляется вместе с новыми сборками. Лицензии от TeamSpeak 3 не подходят, миграции с сервера TS3 пока нет.

Что нужно

  • Сервер на tanaka.host с Ubuntu 24.04 или Debian 12. Сам сервер лёгкий, хватит минимального тарифа с 1 ядром и 2 ГБ памяти; для голосового сервера, который работает круглосуточно, важнее лимит трафика, чем процессор.
  • Доступ по SSH — подключение по SSH.
  • Клиент TeamSpeak 6 на вашем компьютере, чтобы подключиться и забрать права администратора.

1. Обновите систему

ssh root@YOUR_SERVER_IP
apt update && apt upgrade -y

2. Установите Docker

Официальный скрипт Docker добавляет репозиторий и ставит Docker Engine вместе с плагином Compose:

curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh

Проверка:

docker --version
docker compose version

Другие способы установки — в статье Docker на VPS.

3. Откройте порты в UFW

TeamSpeak 6 в обычной работе использует два порта:

Порт Протокол Назначение
9987 UDP голос
30033 TCP передача файлов: аватарки, иконки, файлы каналов

Есть ещё query-интерфейс (HTTP на 10080, SSH на 10022), но он выключен по умолчанию и для работы сервера не нужен.

Сначала SSH, чтобы не закрыть себе доступ, потом порты TeamSpeak:

ufw allow OpenSSH
ufw allow 9987/udp
ufw allow 30033/tcp
ufw enable
ufw status

Docker и UFW. Порты, опубликованные контейнерами, обходят правила UFW. Здесь это не мешает — 9987 и 30033 мы и так открываем, — но реальный список открытых портов определяется секцией ports: в compose-файле. Не публикуйте лишнего. Подробнее — UFW и firewalld.

4. Создайте compose-файл

mkdir -p /opt/teamspeak
cd /opt/teamspeak
nano compose.yaml

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

services:
  teamspeak:
    image: teamspeaksystems/teamspeak6-server:latest
    container_name: teamspeak-server
    restart: unless-stopped
    ports:
      - "9987:9987/udp"
      - "30033:30033/tcp"
    environment:
      - TSSERVER_LICENSE_ACCEPTED=accept
    volumes:
      - teamspeak-data:/var/tsserver

volumes:
  teamspeak-data:
    name: teamspeak-data
  • TSSERVER_LICENSE_ACCEPTED=accept принимает лицензию TeamSpeak. Без этой строки сервер не стартует.
  • teamspeak-data:/var/tsserver хранит базу, каналы, права и загруженные файлы в именованном томе Docker. Контейнер можно удалить и пересоздать — данные останутся.
  • restart: unless-stopped поднимает сервер после сбоя или перезагрузки VPS.

Сохраните: Ctrl+O, Enter, Ctrl+X. Если Compose для вас новый инструмент — есть шпаргалка.

5. Запустите и заберите ключ привилегий

docker compose up -d

При самом первом старте сервер создаёт одноразовый ключ привилегий ServerAdmin и печатает его в лог:

docker compose logs -f

Найдите строку с privilege key и сохраните ключ в надёжное место. Ctrl+C закрывает просмотр лога, сервер продолжает работать.

Ключ печатается один раз — только при первом запуске с пустым томом. Если пропустили его и терять пока нечего, быстрее всего удалить контейнер вместе с томом командой docker compose down -v и запустить заново.

6. Подключитесь и станьте администратором

Откройте клиент TeamSpeak 6 и подключитесь к YOUR_SERVER_IP — стандартный порт 9987 указывать не нужно. При первом подключении к новому серверу клиент предложит ввести ключ привилегий; можно сделать это и позже через соответствующий пункт меню.

После принятия ключа ваша identity получает группу Server Admin: можно создавать каналы, ставить пароль на сервер, раздавать права. Ключ после использования сгорает — права другим администраторам выдавайте из клиента, а не передавайте токены.

Обновление

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

cd /opt/teamspeak
docker compose pull
docker compose up -d

Старые образы занимают место — удалите:

docker image prune -f

Резервная копия

Всё важное лежит в томе teamspeak-data. Ненадолго остановите сервер и заархивируйте том:

cd /opt/teamspeak
docker compose stop
docker run --rm -v teamspeak-data:/data -v /root:/backup alpine tar czf /backup/teamspeak-backup.tar.gz -C /data .
docker compose start

Скачайте /root/teamspeak-backup.tar.gz к себе через scp и храните копию вне сервера — при удалении VPS его диск пропадает безвозвратно. Автоматизировать выгрузку можно через restic в S3.

Частые ошибки

Проблема Что проверить
Клиент не подключается docker compose ps — поднят ли контейнер; ufw status — есть ли правило для 9987/udp
Голос работает, аватарки и файлы нет закрыт или не опубликован 30033/tcp
Контейнер перезапускается по кругу docker compose logs; обычно не хватает TSSERVER_LICENSE_ACCEPTED=accept
Сервер перестал отвечать проверьте состояние VPS в кабинете tanaka.host и ресурсы сервера — docker stats --no-stream

Следить за доступностью сервера удобно через Uptime Kuma — он умеет проверять UDP-порты. Официальный репозиторий образа: https://github.com/teamspeak/teamspeak6-server.