Как да инсталирате 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 доставчик, а не с споделена облачна услуга
За геймърски кланове, esports организации, отдалечени екипи за разработка и корпоративни комуникации, това се превръща в измеримо предимство по отношение на надеждност и съответствие.
Минимални системни изисквания
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` и е честа цел за brute-force атаки при слаба парола.
Стъпка 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` е налична в сервизната ви единица.
Грешка за ненамерен лицензен файл
Файлът `.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 едновременни потребители на един виртуален сървърен екземпляр, обмислете разгръщането на множество виртуални сървъри или надграждане до план за Dedicated Servers за гарантирана тактова честота на 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 с новия tarball на версията, когато са налични актуализации.
Ако управлявате множество услуги на същия VPS, обмислете съчетаването на вашия TeamSpeak екземпляр с решение за VPS Control Panels, за да рационализирате управлението на услуги, наблюдението и планираните задачи от единен интерфейс.
Матрица за решения: Подходяща ли е тази настройка за вас?
| Сценарий | Препоръчително действие |
|---|
| — | — |
|---|
| До 32 едновременни потребители, геймърска общност | Начален VPS, безплатен лиценз за TeamSpeak |
|---|
| 32–512 едновременни потребители, организация | Надграждане на лиценз за TeamSpeak + VPS с 2–4 vCPU |
|---|
| Необходима пълна хардуерна изолация, 500+ потребители | Dedicated сървър, множество екземпляри на виртуален сървър |
|---|
| Желан управляван панел + TeamSpeak | VPS с cPanel или DirectAdmin |
|---|
| Необходима маршрутизация с ниска латентност EU/US | Изберете местоположение на VPS дата център, най-близо до потребителите |
|---|
| Необходимо уеб присъствие като допълнение | Добавете Споделен уеб хостинг или поддомейн на същия VPS |
|---|
| Необходим персонализиран домейн за адреса на сървъра | Регистрация на домейн + DNS A запис, сочещ към IP на VPS |
|---|
Технически ключови изводи
- Винаги стартирайте TeamSpeak под специален непривилегирован потребител. Това е задължително за всяка услуга, достъпна от интернет.
- Маркерният файл `ts3server_license_accepted` трябва да съществува преди демонът да стартира — честа точка на неуспех при първото зареждане.
- Използвайте `Type=forking` в systemd единицата, а не `Type=simple`. Стартовият скрипт разклонява фонов процес; `simple` ще накара systemd да проследява неправилно PID.
- Извлечете токена на ключа за привилегии от логовете незабавно след първото стартиране. Той се изразходва при първата употреба и не може да бъде регенериран без ръчна процедура за нулиране на парола.
- Порт `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 е достатъчен за общности под 50 едновременни потребители, с комфортен резерв за ОС и системни процеси.
Как да актуализирам TeamSpeak Server без да загубя конфигурацията си?
Спрете услугата с `systemctl stop teamspeak`, изтеглете новия tarball на версията като потребителя `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 (в момента в разработка) използва криптиране от край до край по подразбиране.
