Cum să Instalezi un Server TeamSpeak pe un VPS (Ghid Ubuntu/CentOS)
TeamSpeak este o platformă de comunicare vocală auto-găzduită, cu latență redusă, care rulează ca un daemon de server independent pe Linux. Instalarea acestuia pe un VPS vă oferă control administrativ complet asupra canalelor, permisiunilor, codecurilor și politicilor de securitate — fără a depinde de infrastructura terților sau de limite de utilizare.
Acest ghid acoperă instalarea completă a TeamSpeak 3 Server pe Ubuntu (cu note pentru variantele CentOS/RHEL), inclusiv izolarea utilizatorilor, configurarea serviciului systemd, securizarea parolei de administrator și conectarea clientului. Fiecare comandă este gata pentru producție și testată pe un mediu curat 22.04 LTS.
De ce să auto-găzduiți TeamSpeak pe un VPS
Platformele comerciale de voce precum Discord impun politici de retenție a datelor, moderare algoritmică și limite de rată pe care organizațiile nu le pot depăși. O instanță TeamSpeak auto-găzduită elimină complet aceste constrângeri. Controlați:
- Calitatea codecului (Opus Voice, Opus Music) și rata de biți per canal
- Sistemul de permisiuni cu ACL-uri granulare pentru grupuri de server și grupuri de canale
- Criptarea prin TLS pentru semnalizare și criptare vocală opțională
- Rezidența datelor — traficul dvs. vocal nu tranzitează niciodată un releu terț
- SLA de disponibilitate — legat direct de furnizorul dvs. de VPS, nu de un serviciu cloud partajat
Pentru clanuri de gaming, organizații de esports, echipe de dezvoltare la distanță și comunicații corporative, aceasta se traduce în avantaje măsurabile de fiabilitate și conformitate.
Cerințe minime de sistem
TeamSpeak 3 Server este extrem de ușor. Următoarele specificații suportă aproximativ 50–100 de utilizatori concurenți fără degradarea calității audio:
| Resursă | Minim | Recomandat (100+ utilizatori) |
|---|
| — | — | — |
|---|
| Nuclee CPU | 1 vCPU | 2 vCPU |
|---|
| RAM | 512 MB | 1 GB |
|---|
| Spațiu pe disc | 1 GB | 5 GB (jurnale + BD) |
|---|
| Rețea | 10 Mbps | 100 Mbps |
|---|
| SO | Ubuntu 20.04+ / CentOS 7+ | Ubuntu 22.04 LTS |
|---|
| Arhitectură | x86_64 (amd64) | x86_64 (amd64) |
|---|
Un plan de VPS Hosting cu 1 vCPU și 512 MB RAM este suficient pentru o comunitate mică. Scalați vertical pe măsură ce numărul de utilizatori concurenți crește.
Porturi cheie de deschis în firewall-ul dvs.:
- `9987/UDP` — date vocale (implicit)
- `10011/TCP` — ServerQuery (raw sau SSH)
- `30033/TCP` — transfer de fișiere
Pasul 1: Pregătirea serverului
Conectați-vă la VPS-ul dvs. ca root:
“`bash
ssh root@your_server_ip -p your_ssh_port
“`
Actualizați toate pachetele de sistem pentru a elimina vulnerabilitățile cunoscute înainte de a introduce software nou:
“`bash
sudo apt update && sudo apt upgrade -y
“`
Instalați `bzip2`, care este necesar pentru a extrage arhiva TeamSpeak:
“`bash
sudo apt install bzip2 -y
“`
Pe CentOS/AlmaLinux/Rocky Linux, înlocuiți cele de mai sus cu:
“`bash
sudo dnf update -y && sudo dnf install bzip2 wget -y
“`
Pasul 2: Crearea unui utilizator de sistem dedicat
Rularea TeamSpeak ca root este o greșeală critică de securitate. Dacă procesul este vreodată exploatat, un atacator obține acces root imediat la întregul host. Izolați-l întotdeauna sub un utilizator fără privilegii:
“`bash
sudo adduser teamspeak
“`
Urmați instrucțiunile pentru a seta o parolă. Acest utilizator va deține toate binarele TeamSpeak, fișierele de configurare și baza de date SQLite.
> Notă de securitate: Pentru medii întărite, luați în considerare crearea utilizatorului cu `–disabled-login` și utilizarea `sudo -u teamspeak` pentru toate operațiunile, prevenind complet accesul la shell interactiv.
Pasul 3: Descărcarea și extragerea binarului TeamSpeak Server
Comutați la contextul utilizatorului `teamspeak`:
“`bash
sudo su – teamspeak
“`
Descărcați cea mai recentă versiune stabilă de TeamSpeak 3 Server pentru Linux pe 64 de biți. Verificați întotdeauna numărul versiunii curente pe pagina oficială de descărcări TeamSpeak înainte de a rula această comandă, deoarece șirul versiunii se schimbă cu fiecare lansare:
“`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
“`
Extrageți arhiva și eliminați directorul de nivel superior astfel încât toate fișierele să ajungă direct în directorul de lucru curent (`/home/teamspeak/`):
“`bash
tar xvfj teamspeak-server.tar.bz2 –strip-components 1
“`
Acceptați acordul de licență TeamSpeak prin crearea fișierului marker necesar. Daemonul de server va refuza să pornească fără acesta:
“`bash
touch ~/.ts3server_license_accepted
“`
Reveniți la utilizatorul root:
“`bash
exit
“`
Pasul 4: Crearea unei unități de serviciu systemd
Gestionarea TeamSpeak prin systemd asigură că procesul repornește automat după o repornire sau o cădere, se integrează cu `journald` pentru jurnalizare centralizată și respectă ordinea corectă a dependențelor în timpul pornirii.
Deschideți un nou fișier de unitate de serviciu:
“`bash
nano /etc/systemd/system/teamspeak.service
“`
Lipiți următoarea configurație completă a unității:
“`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
“`
Directive cheie explicate:
- `After=network.target` — previne pornirea înainte ca stiva de rețea să fie pregătită, evitând erorile de legare pe `9987/UDP`
- `Type=forking` — corect pentru scriptul de pornire TeamSpeak, care bifurcă un proces în fundal
- `Restart=on-failure` — recuperează automat din căderi neașteptate fără intervenție manuală
- `RestartSec=10s` — adaugă o scurtă întârziere înainte de tentativele de repornire pentru a preveni buclele rapide de cădere
Salvați fișierul (`Ctrl+S`, apoi `Ctrl+X`), apoi reîncărcați daemonul systemd pentru a înregistra noua unitate:
“`bash
systemctl daemon-reload
“`
Activați serviciul pentru a porni la boot și porniți-l imediat:
“`bash
systemctl enable –now teamspeak
“`
Verificați că serviciul este activ și rulează:
“`bash
systemctl status teamspeak
“`
Rezultatul așteptat include `Active: active (running)` cu un PID valid. Dacă starea arată `failed`, inspectați imediat jurnalele:
“`bash
journalctl -u teamspeak -n 50 –no-pager
“`
Pasul 5: Recuperarea cheii de privilegii de administrator (Token)
Când TeamSpeak Server pornește pentru prima dată, generează o cheie de privilegii (token) în fișierele sale de jurnal. Acest token acordă primului client care se conectează drepturi complete de administrator de server. Trebuie să îl recuperați înainte ca oricine altcineva să se conecteze.
“`bash
grep -i token /home/teamspeak/logs/*
“`
Rezultatul va conține o linie similară cu:
“`
token=q1a2b3c4d5e6f7g8h9i0jKLMNOPQRSTUVWXYZ
“`
Copiați acest token. Când vă conectați prin clientul TeamSpeak pentru prima dată, vi se va solicita să îl introduceți. Făcând acest lucru, clientul dvs. este ridicat la grupul de server `Server Admin`.
> Critic: Acest token este de unică folosință și este consumat la prima răscumpărare. Dacă îl pierdeți înainte de a-l folosi, trebuie să setați manual o nouă parolă de administrator (consultați Pasul 6). Păstrați-l în siguranță.
Pasul 6: Setarea sau resetarea parolei ServerAdmin
Contul `serveradmin` este utilizat pentru accesul ServerQuery — o interfață TCP raw sau SSH care permite administrarea prin scripturi, integrarea boturilor și instrumente de management la distanță precum YaTQA sau ts3admin.
Pentru a seta sau reseta această parolă, trebuie să opriți temporar serviciul, să porniți binarul serverului direct cu argumentul parolei, apoi să îl opriți din nou și să îl reporniți prin systemd:
“`bash
systemctl stop teamspeak.service
“`
Comutați la utilizatorul teamspeak și setați parola:
“`bash
su – teamspeak
./ts3server_startscript.sh start serveradmin_password=YourStrongPassword
“`
Așteptați ca serverul să se inițializeze complet (urmăriți `TeamSpeak 3 Server started successfully` în rezultat), apoi opriți-l:
“`bash
./ts3server_startscript.sh stop
exit
“`
Reporniți serviciul gestionat:
“`bash
systemctl start teamspeak.service
“`
Cerințe pentru parolă: Utilizați minimum 16 caractere cu litere mari și mici, cifre și simboluri. Interfața ServerQuery este expusă pe portul TCP `10011` și este o țintă comună pentru atacuri de forță brută dacă este lăsată cu o parolă slabă.
Pasul 7: Configurarea firewall-ului
Dacă `ufw` este activ pe serverul dvs., deschideți porturile necesare:
“`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
“`
Pentru `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
“`
> Sfat de securizare: Dacă nu aveți nevoie de acces public ServerQuery, restricționați portul `10011` doar la IP-uri de management specifice. Expunerea sa publică este inutilă pentru operarea standard a serverului vocal.
Pasul 8: Conectarea din clientul TeamSpeak
- Descărcați și instalați TeamSpeak 3 Client pentru sistemul dvs. de operare desktop (Windows, macOS, Linux).
- Deschideți clientul și navigați la Connections > Connect.
- Introduceți adresa IP a VPS-ului dvs. ca Server Nickname or Address.
- Lăsați portul ca `9987` dacă nu l-ați schimbat în `ts3server.ini`.
- La prima conectare, clientul vă va solicita să introduceți cheia de privilegii (token). Lipiți token-ul recuperat în Pasul 5.
- Clientul dvs. este acum administratorul serverului.
Opțional: Utilizarea scriptului de instalare automatizat
Pentru implementare rapidă, AlexHost oferă un script de instalare automatizat care gestionează instalarea dependențelor, crearea utilizatorului, descărcarea binarului și configurarea serviciului într-o singură execuție:
“`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
“`
Examinați conținutul scriptului înainte de a-l executa pentru a înțelege ce modificări face sistemului dvs. Scripturile automatizate sunt convenabile, dar nu trebuie niciodată rulate orbește pe infrastructura de producție.
TeamSpeak vs. Alternative: Platforme vocale auto-găzduite
| Funcționalitate | TeamSpeak 3 | Mumble | Discord (cloud) |
|---|
| — | — | — | — |
|---|
| Auto-găzduit | Da | Da | Nu |
|---|
| Utilizare RAM (inactiv) | ~30 MB | ~15 MB | N/A |
|---|
| Latență | Foarte mică | Foarte mică | Mică–Medie |
|---|
| Criptare | TLS (semnalizare) | DTLS + SRTP | Proprietară |
|---|
| Sistem de permisiuni | ACL avansat | Moderat | Bazat pe roluri |
|---|
| Disponibilitate client | Win/Mac/Linux/Mobile | Win/Mac/Linux | Win/Mac/Linux/Mobile |
|---|
| Licență (server) | Gratuit până la 32 de sloturi | Open source | N/A |
|---|
| Codec | Opus | Opus/CELT | Opus |
|---|
| ServerQuery API | Da (TCP/SSH) | Nu | Doar REST API |
|---|
ServerQuery API al TeamSpeak este un diferențiator semnificativ pentru organizațiile care au nevoie de management programatic al serverului — creare automată de canale, integrare de boturi sau modificări de permisiuni declanșate de CI/CD.
Probleme comune de instalare și soluții
Serverul nu pornește — „Could not bind to port 9987″
Un alt proces utilizează UDP 9987, sau serviciul a pornit înainte ca rețeaua să fie pregătită. Verificați cu `ss -ulnp | grep 9987` și asigurați-vă că directiva `After=network.target` este prezentă în unitatea dvs. de serviciu.
Eroare de fișier de licență negăsit
Fișierul `.ts3server_license_accepted` trebuie să existe în directorul home al utilizatorului care rulează procesul (`/home/teamspeak/`). Confirmați cu `ls -la /home/teamspeak/.ts3server_license_accepted`.
Token-ul nu a fost găsit în jurnale
Directorul de jurnale implicit este `/home/teamspeak/logs/`. Dacă ați extras arhiva într-o altă cale, ajustați comanda grep în consecință. Token-urile apar în jurnal doar la prima pornire — dacă baza de date există deja, nu se generează niciun token nou.
Conexiunea ServerQuery refuzată
Confirmați că portul `10011/TCP` este deschis în firewall-ul dvs. și că procesul serverului rulează. Testați local cu `telnet 127.0.0.1 10011` — o conexiune reușită returnează un banner `TS3`.
Utilizare ridicată a CPU cu mulți utilizatori
TeamSpeak este single-threaded pentru mixarea vocii. Dacă depășiți ~200 de utilizatori concurenți pe o singură instanță de server virtual, luați în considerare implementarea mai multor servere virtuale sau actualizarea la un plan de Servere Dedicate pentru viteză garantată a ceasului CPU și fără contaminare de la vecini zgomotoși.
Securizarea implementării TeamSpeak
Pe lângă izolarea utilizatorilor și regulile de firewall acoperite mai sus, aplicați aceste măsuri de întărire:
- Schimbați porturile implicite în `ts3server.ini` pentru a reduce expunerea la scanarea automată. Actualizați regulile de firewall în consecință.
- Restricționați ServerQuery (`10011/TCP`) la IP-uri de management folosind filtrarea surselor din firewall.
- Activați autentificarea prin cheie SSH pe VPS-ul dvs. și dezactivați autentificarea root bazată pe parolă. Consultați panoul de control al VPS-ului dvs. pentru opțiunile de gestionare a cheilor SSH.
- Monitorizați jurnalele prin `journalctl -u teamspeak -f` pentru tipare neobișnuite de conexiune sau eșecuri repetate de autentificare ServerQuery.
- Copii de rezervă regulate ale `/home/teamspeak/ts3server.sqlitedb` — acest fișier conține toate configurațiile de canale, grupurile de server, permisiunile și identitățile clienților. Pierderea sa înseamnă reconstruirea întregii structuri a serverului de la zero.
- Mențineți binarul actualizat. TeamSpeak lansează periodic patch-uri de securitate. Abonați-vă la anunțurile lor de lansare și repetați Pașii 3–4 cu noul tarball de versiune când sunt disponibile actualizări.
Dacă gestionați mai multe servicii pe același VPS, luați în considerare asocierea instanței dvs. TeamSpeak cu o soluție de Panouri de Control VPS pentru a simplifica gestionarea serviciilor, monitorizarea și sarcinile programate dintr-o interfață unificată.
Matrice de decizie: Este această configurare potrivită pentru dvs.?
| Scenariu | Acțiune recomandată |
|---|
| — | — |
|---|
| Sub 32 de utilizatori concurenți, comunitate de gaming | VPS de nivel de intrare, licență gratuită TeamSpeak |
|---|
| 32–512 utilizatori concurenți, organizație | Actualizare licență TeamSpeak + VPS cu 2–4 vCPU |
|---|
| Necesită izolare completă a hardware-ului, 500+ utilizatori | Server dedicat, mai multe instanțe de server virtual |
|---|
| Dorește panou gestionat + TeamSpeak | VPS cu cPanel sau DirectAdmin |
|---|
| Necesită rutare EU/US cu latență redusă | Alegeți locația centrului de date VPS cel mai aproape de utilizatori |
|---|
| Necesită prezență web complementară | Adăugați [Găzduire Web Partajată](https://alexhost.com/ro/shared-hosting/) sau subdomeniu pe același VPS |
|---|
| Necesită domeniu personalizat pentru adresa serverului | [Înregistrare Domeniu](https://alexhost.com/ro/domains/) + înregistrare DNS A care indică spre IP-ul VPS |
|---|
Concluzii tehnice cheie
- Rulați întotdeauna TeamSpeak sub un utilizator dedicat non-root. Aceasta este non-negociabilă pentru orice serviciu expus pe internet.
- Fișierul marker `ts3server_license_accepted` trebuie să existe înainte ca daemonul să pornească — un punct comun de eșec la prima pornire.
- Utilizați `Type=forking` în unitatea systemd, nu `Type=simple`. Scriptul de pornire bifurcă un proces în fundal; `simple` va face ca systemd să urmărească greșit PID-ul.
- Recuperați token-ul cheii de privilegii din jurnale imediat după prima pornire. Este consumat la prima utilizare și nu poate fi regenerat fără o procedură manuală de resetare a parolei.
- Portul `9987/UDP` este singurul port necesar pentru operarea vocală de bază. `10011/TCP` și `30033/TCP` sunt opționale în funcție de cazul dvs. de utilizare.
- Faceți copii de rezervă ale `ts3server.sqlitedb` conform unui program. Toată configurația serverului se află în acest singur fișier.
- Pentru implementările de producție, restricționați ServerQuery la localhost sau un VLAN de management — nu îl expuneți niciodată public fără liste de IP-uri permise.
—
Întrebări frecvente
Care este numărul maxim de utilizatori pe o licență gratuită de server TeamSpeak?
Licența gratuită non-profit suportă până la 32 de sloturi simultane. Pentru implementări mai mari, TeamSpeak oferă licențe anuale pentru 64, 128, 256 sau 512 sloturi, precum și o „Licență de Activare” cu sloturi nelimitate pentru organizațiile eligibile.
Pot rula TeamSpeak Server pe un VPS cu 512 MB RAM?
Da. Daemonul TeamSpeak 3 Server consumă aproximativ 25–40 MB de RAM în stare inactivă și scalează modest cu utilizatorii concurenți. Un VPS cu 512 MB este suficient pentru comunități cu sub 50 de utilizatori simultani, cu spațiu confortabil pentru SO și procesele de sistem.
Cum actualizez TeamSpeak Server fără a pierde configurația?
Opriți serviciul cu `systemctl stop teamspeak`, descărcați noul tarball de versiune ca utilizator `teamspeak`, extrageți-l cu `–strip-components 1` în același director (suprascriind doar binarele), apoi reporniți serviciul. Baza de date `ts3server.sqlitedb` și fișierul de configurare `ts3server.ini` nu sunt suprascrise prin acest proces.
De ce serverul meu TeamSpeak nu este vizibil în lista publică de servere?
În mod implicit, serverele TeamSpeak nu se înregistrează în lista publică de servere. Pentru a activa listarea, setați `machine_id=` și configurați `serverip` în `ts3server.ini`, apoi activați opțiunea de listare publică prin ServerQuery sau panoul de administrare a serverului din client. Asigurați-vă că portul UDP `9987` este accesibil de pe internet.
Este traficul TeamSpeak criptat în mod implicit?
Traficul de semnalizare (configurarea conexiunii, chat, permisiuni) este criptat prin TLS. Datele vocale transmise prin UDP nu sunt criptate în mod implicit în TeamSpeak 3. Criptarea vocii poate fi activată per canal sau la nivel de server prin setările serverului, cu costul unei mici creșteri a utilizării CPU. TeamSpeak 5 (în prezent în dezvoltare) utilizează criptare end-to-end în mod implicit.
