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 доставчик, а не с споделена облачна услуга

За геймърски кланове, esports организации, отдалечени екипи за разработка и корпоративни комуникации, това се превръща в измеримо предимство по отношение на надеждност и съответствие.

Минимални системни изисквания

TeamSpeak 3 Server е изключително лек. Следните спецификации поддържат приблизително 50–100 едновременни потребители без влошаване на качеството на звука:

РесурсМинимумПрепоръчително (100+ потребители)
CPU ядра1 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` и е честа цел за 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 клиента

  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 MBN/A
ЛатентностМного нискаМного нискаНиска–Средна
КриптиранеTLS (сигнализация)DTLS + SRTPСобствено
Система за разрешенияРазширен ACLУмеренБазиран на роли
Наличност на клиентWin/Mac/Linux/MobileWin/Mac/LinuxWin/Mac/Linux/Mobile
Лиценз (сървър)Безплатен до 32 слотаС отворен кодN/A
Кодек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` е налична в сервизната ви единица.

Грешка за ненамерен лицензен файл

Файлът `.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 сървър, множество екземпляри на виртуален сървър
Желан управляван панел + TeamSpeakVPS с 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 (в момента в разработка) използва криптиране от край до край по подразбиране.

15%

Спести 15% на всички хостинг услуги

Тествай уменията си и получи Отстъпка за всеки хостинг план

Използвайте код:

Skills
За начало