Як встановити сервер 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+ користувачів) |
|---|
| — | — | — |
|---|
| Ядра CPU | 1 vCPU | 2 vCPU |
|---|
| RAM | 512 MB | 1 GB |
|---|
| Дисковий простір | 1 GB | 5 GB (логи + БД) |
|---|
| Мережа | 10 Mbps | 100 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
- Завантажте та встановіть TeamSpeak 3 Client для вашої настільної ОС (Windows, macOS, Linux).
- Відкрийте клієнт та перейдіть до Connections > Connect.
- Введіть IP-адресу вашого VPS як Server Nickname or Address.
- Залиште порт `9987`, якщо ви не змінили його в `ts3server.ini`.
- При першому підключенні клієнт запропонує вам ввести ключ привілеїв (токен). Вставте токен, отриманий у Кроці 5.
- Тепер ваш клієнт є адміністратором сервера.
Додатково: Використання автоматизованого скрипту встановлення
Для швидкого розгортання 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 3 | Mumble | Discord (хмара) |
|---|
| — | — | — | — |
|---|
| Самостійне розгортання | Так | Так | Ні |
|---|
| Використання RAM (у стані спокою) | ~30 MB | ~15 MB | N/A |
|---|
| Затримка | Дуже низька | Дуже низька | Низька–Середня |
|---|
| Шифрування | TLS (сигналізація) | DTLS + SRTP | Пропрієтарне |
|---|
| Система дозволів | Розширений ACL | Помірний | На основі ролей |
|---|
| Доступність клієнта | Win/Mac/Linux/Mobile | Win/Mac/Linux | Win/Mac/Linux/Mobile |
|---|
| Ліцензія (сервер) | Безкоштовно до 32 слотів | Відкритий код | N/A |
|---|
| Кодек | Opus | Opus/CELT | Opus |
|---|
| 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 periodично випускає патчі безпеки. Підпишіться на їхні оголошення про випуски та повторіть Кроки 3–4 з новим архівом версії, коли з’являться оновлення.
Якщо ви керуєте кількома службами на одному VPS, розгляньте можливість поєднання вашого екземпляра TeamSpeak з рішенням Панелей управління VPS для спрощення управління службами, моніторингу та запланованих завдань з єдиного інтерфейсу.
Матриця рішень: чи підходить вам це налаштування?
| Сценарій | Рекомендована дія |
|---|
| — | — |
|---|
| До 32 одночасних користувачів, ігрова спільнота | VPS початкового рівня, безкоштовна ліцензія TeamSpeak |
|---|
| 32–512 одночасних користувачів, організація | Оновлення ліцензії TeamSpeak + VPS з 2–4 vCPU |
|---|
| Потрібна повна апаратна ізоляція, 500+ користувачів | Виділений сервер, кілька екземплярів віртуальних серверів |
|---|
| Потрібна керована панель + TeamSpeak | VPS з cPanel або DirectAdmin |
|---|
| Потрібна маршрутизація з низькою затримкою ЄС/США | Виберіть розташування дата-центру VPS, найближче до користувачів |
|---|
| Потрібна супутня веб-присутність | Додайте [Shared Web Hosting](https://alexhost.com/uk/shared-hosting/) або субдомен на тому ж VPS |
|---|
| Потрібен власний домен для адреси сервера | [Реєстрація домену](https://alexhost.com/uk/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 до localhost або 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 (наразі в розробці) використовує наскрізне шифрування за замовчуванням.
