Jak zainstalować serwer TeamSpeak na VPS (Przewodnik Ubuntu/CentOS)
TeamSpeak to samodzielnie hostowana platforma komunikacji głosowej o niskich opóźnieniach, działająca jako samodzielny demon serwera na Linux. Instalacja jej na VPS daje pełną kontrolę administracyjną nad kanałami, uprawnieniami, kodekami i politykami bezpieczeństwa — bez polegania na infrastrukturze zewnętrznych dostawców ani limitach użytkowania.
Ten przewodnik obejmuje pełną instalację TeamSpeak 3 Server na Ubuntu (z uwagami dla wariantów CentOS/RHEL), w tym izolację użytkowników, konfigurację usługi systemd, zabezpieczenie hasła administratora i połączenie klienta. Każde polecenie jest gotowe do użycia produkcyjnego i przetestowane w czystym środowisku 22.04 LTS.
Dlaczego warto samodzielnie hostować TeamSpeak na VPS
Komercyjne platformy głosowe, takie jak Discord, narzucają polityki przechowywania danych, algorytmiczną moderację i limity szybkości, których organizacje nie mogą zmienić. Samodzielnie hostowana instancja TeamSpeak całkowicie eliminuje te ograniczenia. Kontrolujesz:
- Jakość kodeka (Opus Voice, Opus Music) i przepustowość na kanał
- System uprawnień z granularnymi ACL grup serwerowych i kanałowych
- Szyfrowanie przez TLS dla sygnalizacji i opcjonalne szyfrowanie głosu
- Rezydencję danych — ruch głosowy nigdy nie przechodzi przez przekaźnik zewnętrzny
- SLA czasu działania — powiązane bezpośrednio z dostawcą VPS, nie z udostępnioną usługą chmurową
Dla klanów gamingowych, organizacji esportowych, zdalnych zespołów deweloperskich i komunikacji korporacyjnej przekłada się to na wymierne korzyści w zakresie niezawodności i zgodności.
Minimalne wymagania systemowe
TeamSpeak 3 Server jest wyjątkowo lekki. Poniższe specyfikacje obsługują około 50–100 jednoczesnych użytkowników bez pogorszenia jakości dźwięku:
| Zasób | Minimum | Zalecane (100+ użytkowników) |
|---|---|---|
| — | — | — |
| Rdzenie CPU | 1 vCPU | 2 vCPU |
| RAM | 512 MB | 1 GB |
| Miejsce na dysku | 1 GB | 5 GB (logi + DB) |
| Sieć | 10 Mbps | 100 Mbps |
| System operacyjny | Ubuntu 20.04+ / CentOS 7+ | Ubuntu 22.04 LTS |
| Architektura | x86_64 (amd64) | x86_64 (amd64) |
Plan VPS Hosting z 1 vCPU i 512 MB RAM jest wystarczający dla małej społeczności. Skaluj pionowo wraz ze wzrostem liczby jednoczesnych użytkowników.
Kluczowe porty do otwarcia w zaporze sieciowej:
- `9987/UDP` — dane głosowe (domyślnie)
- `10011/TCP` — ServerQuery (raw lub SSH)
- `30033/TCP` — transfer plików
Krok 1: Przygotowanie serwera
Połącz się z VPS jako root:
“`bash
ssh root@your_server_ip -p your_ssh_port
“`
Zaktualizuj wszystkie pakiety systemowe, aby wyeliminować znane luki w zabezpieczeniach przed instalacją nowego oprogramowania:
“`bash
sudo apt update && sudo apt upgrade -y
“`
Zainstaluj `bzip2`, który jest wymagany do wyodrębnienia archiwum TeamSpeak:
“`bash
sudo apt install bzip2 -y
“`
Na CentOS/AlmaLinux/Rocky Linux zastąp powyższe polecenie:
“`bash
sudo dnf update -y && sudo dnf install bzip2 wget -y
“`
Krok 2: Tworzenie dedykowanego użytkownika systemowego
Uruchamianie TeamSpeak jako root to krytyczny błąd bezpieczeństwa. Jeśli proces zostanie kiedykolwiek wykorzystany, atakujący uzyska natychmiastowy dostęp root do całego hosta. Zawsze izoluj go pod nieuprzywilejowanym użytkownikiem:
“`bash
sudo adduser teamspeak
“`
Postępuj zgodnie z instrukcjami, aby ustawić hasło. Ten użytkownik będzie właścicielem wszystkich plików binarnych TeamSpeak, plików konfiguracyjnych i bazy danych SQLite.
> Uwaga dotycząca bezpieczeństwa: W środowiskach o podwyższonym poziomie bezpieczeństwa rozważ utworzenie użytkownika z `–disabled-login` i używanie `sudo -u teamspeak` do wszystkich operacji, całkowicie uniemożliwiając interaktywny dostęp do powłoki.
Krok 3: Pobieranie i wyodrębnianie pliku binarnego serwera TeamSpeak
Przełącz się na kontekst użytkownika `teamspeak`:
“`bash
sudo su – teamspeak
“`
Pobierz najnowszą stabilną wersję TeamSpeak 3 Server dla 64-bitowego Linux. Zawsze sprawdzaj aktualny numer wersji na oficjalnej stronie pobierania TeamSpeak przed uruchomieniem tego polecenia, ponieważ ciąg wersji zmienia się z każdym wydaniem:
“`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
“`
Wyodrębnij archiwum i usuń katalog najwyższego poziomu, aby wszystkie pliki trafiły bezpośrednio do bieżącego katalogu roboczego (`/home/teamspeak/`):
“`bash
tar xvfj teamspeak-server.tar.bz2 –strip-components 1
“`
Zaakceptuj umowę licencyjną TeamSpeak, tworząc wymagany plik znacznika. Demon serwera odmówi uruchomienia bez niego:
“`bash
touch ~/.ts3server_license_accepted
“`
Wróć do użytkownika root:
“`bash
exit
“`
Krok 4: Tworzenie jednostki usługi systemd
Zarządzanie TeamSpeak przez systemd zapewnia automatyczne ponowne uruchomienie procesu po restarcie lub awarii, integrację z `journald` dla scentralizowanego logowania i respektowanie właściwej kolejności zależności podczas uruchamiania systemu.
Otwórz nowy plik jednostki usługi:
“`bash
nano /etc/systemd/system/teamspeak.service
“`
Wklej następującą kompletną konfigurację jednostki:
“`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
“`
Wyjaśnienie kluczowych dyrektyw:
- `After=network.target` — zapobiega uruchomieniu przed gotowością stosu sieciowego, unikając błędów powiązania na `9987/UDP`
- `Type=forking` — prawidłowe dla skryptu startowego TeamSpeak, który rozwidla proces w tle
- `Restart=on-failure` — automatycznie odzyskuje sprawność po nieoczekiwanych awariach bez ręcznej interwencji
- `RestartSec=10s` — dodaje krótkie opóźnienie przed próbami ponownego uruchomienia, aby zapobiec szybkim pętlom awarii
Zapisz plik (`Ctrl+S`, następnie `Ctrl+X`), a następnie przeładuj demona systemd, aby zarejestrować nową jednostkę:
“`bash
systemctl daemon-reload
“`
Włącz usługę, aby uruchamiała się przy starcie systemu i uruchom ją natychmiast:
“`bash
systemctl enable –now teamspeak
“`
Sprawdź, czy usługa jest aktywna i działa:
“`bash
systemctl status teamspeak
“`
Oczekiwane wyjście zawiera `Active: active (running)` z prawidłowym PID. Jeśli status pokazuje `failed`, natychmiast sprawdź logi:
“`bash
journalctl -u teamspeak -n 50 –no-pager
“`
Krok 5: Pobieranie klucza uprawnień administratora (tokenu)
Gdy TeamSpeak Server uruchamia się po raz pierwszy, generuje klucz uprawnień (token) w plikach logów. Ten token nadaje pierwszemu łączącemu się klientowi pełne prawa administratora serwera. Musisz go pobrać, zanim ktokolwiek inny się połączy.
“`bash
grep -i token /home/teamspeak/logs/*
“`
Wyjście będzie zawierać linię podobną do:
“`
token=q1a2b3c4d5e6f7g8h9i0jKLMNOPQRSTUVWXYZ
“`
Skopiuj ten token. Gdy po raz pierwszy połączysz się przez klienta TeamSpeak, zostaniesz poproszony o jego wprowadzenie. Spowoduje to przypisanie klienta do grupy serwerowej `Server Admin`.
> Ważne: Ten token jest jednorazowy i zostaje zużyty przy pierwszym użyciu. Jeśli zgubisz go przed użyciem, musisz ręcznie ustawić nowe hasło administratora (patrz Krok 6). Przechowuj go bezpiecznie.
Krok 6: Ustawianie lub resetowanie hasła ServerAdmin
Konto `serveradmin` jest używane do dostępu ServerQuery — interfejsu raw TCP lub SSH, który umożliwia skryptowe administrowanie, integrację botów i narzędzia do zdalnego zarządzania, takie jak YaTQA lub ts3admin.
Aby ustawić lub zresetować to hasło, musisz tymczasowo zatrzymać usługę, uruchomić plik binarny serwera bezpośrednio z argumentem hasła, a następnie zatrzymać go i ponownie uruchomić przez systemd:
“`bash
systemctl stop teamspeak.service
“`
Przełącz się na użytkownika teamspeak i ustaw hasło:
“`bash
su – teamspeak
./ts3server_startscript.sh start serveradmin_password=YourStrongPassword
“`
Poczekaj na pełną inicjalizację serwera (obserwuj `TeamSpeak 3 Server started successfully` w wyjściu), a następnie zatrzymaj go:
“`bash
./ts3server_startscript.sh stop
exit
“`
Uruchom ponownie zarządzaną usługę:
“`bash
systemctl start teamspeak.service
“`
Wymagania dotyczące hasła: Użyj minimum 16 znaków z mieszanymi wielkościami liter, cyframi i symbolami. Interfejs ServerQuery jest dostępny na porcie TCP `10011` i jest częstym celem ataków brute-force, jeśli pozostawiony ze słabym hasłem.
Krok 7: Konfiguracja zapory sieciowej
Jeśli `ufw` jest aktywny na serwerze, otwórz wymagane porty:
“`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
“`
Dla `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
“`
> Wskazówka dotycząca zabezpieczeń: Jeśli nie potrzebujesz publicznego dostępu do ServerQuery, ogranicz port `10011` tylko do określonych adresów IP zarządzania. Publiczne udostępnianie go jest niepotrzebne do standardowej obsługi serwera głosowego.
Krok 8: Połączenie z klienta TeamSpeak
- Pobierz i zainstaluj klienta TeamSpeak 3 dla swojego systemu operacyjnego (Windows, macOS, Linux).
- Otwórz klienta i przejdź do Połączenia > Połącz.
- Wprowadź adres IP swojego VPS jako Nazwa lub adres serwera.
- Pozostaw port jako `9987`, chyba że zmieniłeś go w `ts3server.ini`.
- Przy pierwszym połączeniu klient poprosi o wprowadzenie klucza uprawnień (tokenu). Wklej token pobrany w Kroku 5.
- Twój klient jest teraz administratorem serwera.
Opcjonalnie: Użycie automatycznego skryptu instalacyjnego
Do szybkiego wdrożenia AlexHost udostępnia automatyczny skrypt instalacyjny, który obsługuje instalację zależności, tworzenie użytkownika, pobieranie pliku binarnego i konfigurację usługi w jednym wykonaniu:
“`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
“`
Przejrzyj zawartość skryptu przed jego wykonaniem, aby zrozumieć, jakie zmiany wprowadza w systemie. Automatyczne skrypty są wygodne, ale nigdy nie należy uruchamiać ich ślepo na infrastrukturze produkcyjnej.
TeamSpeak vs. alternatywy: samodzielnie hostowane platformy głosowe
| Funkcja | TeamSpeak 3 | Mumble | Discord (chmura) |
|---|---|---|---|
| — | — | — | — |
| Samodzielny hosting | Tak | Tak | Nie |
| Użycie RAM (bezczynność) | ~30 MB | ~15 MB | N/A |
| Opóźnienie | Bardzo niskie | Bardzo niskie | Niskie–Średnie |
| Szyfrowanie | TLS (sygnalizacja) | DTLS + SRTP | Zastrzeżone |
| System uprawnień | Zaawansowane ACL | Umiarkowane | Oparte na rolach |
| Dostępność klienta | Win/Mac/Linux/Mobile | Win/Mac/Linux | Win/Mac/Linux/Mobile |
| Licencja (serwer) | Bezpłatna do 32 slotów | Open source | N/A |
| Kodek | Opus | Opus/CELT | Opus |
| ServerQuery API | Tak (TCP/SSH) | Nie | Tylko REST API |
ServerQuery API TeamSpeak jest istotnym wyróżnikiem dla organizacji potrzebujących programowego zarządzania serwerem — automatycznego tworzenia kanałów, integracji botów lub zmian uprawnień wyzwalanych przez CI/CD.
Typowe problemy z instalacją i rozwiązania
Serwer nie uruchamia się — „Could not bind to port 9987″
Inny proces używa UDP 9987 lub usługa uruchomiła się przed gotowością sieci. Sprawdź za pomocą `ss -ulnp | grep 9987` i zweryfikuj, czy dyrektywa `After=network.target` jest obecna w jednostce usługi.
Błąd braku pliku licencji
Plik `.ts3server_license_accepted` musi istnieć w katalogu domowym użytkownika uruchamiającego proces (`/home/teamspeak/`). Potwierdź za pomocą `ls -la /home/teamspeak/.ts3server_license_accepted`.
Token nie znaleziony w logach
Domyślny katalog logów to `/home/teamspeak/logs/`. Jeśli wyodrębniłeś archiwum do innej ścieżki, odpowiednio dostosuj polecenie grep. Tokeny pojawiają się w logu tylko przy pierwszym uruchomieniu — jeśli baza danych już istnieje, nowy token nie jest generowany.
Odmowa połączenia ServerQuery
Potwierdź, że port `10011/TCP` jest otwarty w zaporze sieciowej i że proces serwera działa. Przetestuj lokalnie za pomocą `telnet 127.0.0.1 10011` — pomyślne połączenie zwraca baner `TS3`.
Wysokie użycie CPU przy wielu użytkownikach
TeamSpeak jest jednowątkowy w zakresie miksowania głosu. Jeśli przekroczysz ~200 jednoczesnych użytkowników na jednej instancji wirtualnego serwera, rozważ wdrożenie wielu wirtualnych serwerów lub uaktualnienie do planu Serwery dedykowane dla gwarantowanej częstotliwości taktowania CPU i braku zakłóceń od sąsiednich użytkowników.
Zabezpieczanie wdrożenia TeamSpeak
Poza izolacją użytkowników i regułami zapory sieciowej omówionymi powyżej, zastosuj następujące środki wzmacniające:
- Zmień domyślne porty w `ts3server.ini`, aby zmniejszyć narażenie na automatyczne skanowanie. Odpowiednio zaktualizuj reguły zapory sieciowej.
- Ogranicz ServerQuery (`10011/TCP`) do adresów IP zarządzania za pomocą filtrowania źródłowego zapory sieciowej.
- Włącz uwierzytelnianie kluczem SSH na VPS i wyłącz logowanie root oparte na haśle. Sprawdź panel sterowania VPS w celu uzyskania opcji zarządzania kluczami SSH.
- Monitoruj logi przez `journalctl -u teamspeak -f` pod kątem nietypowych wzorców połączeń lub powtarzających się błędów uwierzytelniania ServerQuery.
- Regularne kopie zapasowe `/home/teamspeak/ts3server.sqlitedb` — ten plik zawiera wszystkie konfiguracje kanałów, grupy serwerowe, uprawnienia i tożsamości klientów. Jego utrata oznacza odbudowanie całej struktury serwera od podstaw.
- Aktualizuj plik binarny. TeamSpeak okresowo wydaje poprawki bezpieczeństwa. Subskrybuj ogłoszenia o wydaniach i powtórz Kroki 3–4 z nowym archiwum tarball po udostępnieniu aktualizacji.
Jeśli zarządzasz wieloma usługami na tym samym VPS, rozważ połączenie instancji TeamSpeak z rozwiązaniem Panele sterowania VPS, aby usprawnić zarządzanie usługami, monitorowanie i zaplanowane zadania z jednego interfejsu.
Macierz decyzyjna: czy ta konfiguracja jest odpowiednia dla Ciebie?
| Scenariusz | Zalecane działanie |
|---|---|
| — | — |
| Poniżej 32 jednoczesnych użytkowników, społeczność gamingowa | VPS podstawowy, bezpłatna licencja TeamSpeak |
| 32–512 jednoczesnych użytkowników, organizacja | Uaktualnienie licencji TeamSpeak + VPS z 2–4 vCPU |
| Potrzebna pełna izolacja sprzętowa, 500+ użytkowników | Serwer dedykowany, wiele instancji wirtualnych serwerów |
| Potrzebny zarządzany panel + TeamSpeak | VPS z cPanel lub DirectAdmin |
| Wymagane trasowanie EU/US z niskim opóźnieniem | Wybierz lokalizację centrum danych VPS najbliższą użytkownikom |
| Potrzebna towarzysząca obecność w sieci | Dodaj [Shared Web Hosting](https://dev.alexhost.com/pl/shared-hosting/) lub subdomenę na tym samym VPS |
| Wymagana niestandardowa domena dla adresu serwera | [Rejestracja domeny](https://dev.alexhost.com/pl/domains/) + rekord DNS A wskazujący na IP VPS |
Kluczowe wnioski techniczne
- Zawsze uruchamiaj TeamSpeak pod dedykowanym użytkownikiem bez uprawnień root. Jest to bezwzględny wymóg dla każdej usługi dostępnej z internetu.
- Plik znacznika `ts3server_license_accepted` musi istnieć przed uruchomieniem demona — jest to częsty punkt awarii przy pierwszym uruchomieniu.
- Używaj `Type=forking` w jednostce systemd, nie `Type=simple`. Skrypt startowy rozwidla proces w tle; `simple` spowoduje błędne śledzenie PID przez systemd.
- Pobierz token klucza uprawnień z logów natychmiast po pierwszym uruchomieniu. Jest on zużywany przy pierwszym użyciu i nie może być ponownie wygenerowany bez ręcznej procedury resetowania hasła.
- Port `9987/UDP` jest jedynym portem wymaganym do podstawowej obsługi głosu. `10011/TCP` i `30033/TCP` są opcjonalne w zależności od przypadku użycia.
- Regularnie twórz kopie zapasowe `ts3server.sqlitedb`. Cała konfiguracja serwera znajduje się w tym jednym pliku.
- W przypadku wdrożeń produkcyjnych ogranicz ServerQuery do localhost lub sieci VLAN zarządzania — nigdy nie udostępniaj go publicznie bez listy dozwolonych adresów IP.
—
Często zadawane pytania
Jaka jest maksymalna liczba użytkowników na bezpłatnej licencji serwera TeamSpeak?
Bezpłatna licencja non-profit obsługuje do 32 jednoczesnych slotów. W przypadku większych wdrożeń TeamSpeak oferuje roczne licencje na 64, 128, 256 lub 512 slotów, a także „Licencję aktywacyjną” z nieograniczoną liczbą slotów dla kwalifikujących się organizacji.
Czy mogę uruchomić TeamSpeak Server na VPS z 512 MB RAM?
Tak. Demon TeamSpeak 3 Server zużywa około 25–40 MB RAM w stanie bezczynności i skaluje się umiarkowanie wraz z liczbą jednoczesnych użytkowników. VPS z 512 MB RAM jest wystarczający dla społeczności poniżej 50 jednoczesnych użytkowników, z wygodnym zapasem dla systemu operacyjnego i procesów systemowych.
Jak zaktualizować TeamSpeak Server bez utraty konfiguracji?
Zatrzymaj usługę za pomocą `systemctl stop teamspeak`, pobierz nowe archiwum tarball jako użytkownik `teamspeak`, wyodrębnij je za pomocą `–strip-components 1` do tego samego katalogu (nadpisując tylko pliki binarne), a następnie uruchom ponownie usługę. Baza danych `ts3server.sqlitedb` i plik konfiguracyjny `ts3server.ini` nie są nadpisywane w tym procesie.
Dlaczego mój serwer TeamSpeak nie jest widoczny na publicznej liście serwerów?
Domyślnie serwery TeamSpeak nie rejestrują się na publicznej liście serwerów. Aby włączyć listowanie, ustaw `machine_id=` i skonfiguruj `serverip` w `ts3server.ini`, a następnie włącz opcję publicznego listowania przez ServerQuery lub panel administracji serwera klienta. Upewnij się, że port UDP `9987` jest dostępny z internetu.
Czy ruch TeamSpeak jest domyślnie szyfrowany?
Ruch sygnalizacyjny (konfiguracja połączenia, czat, uprawnienia) jest szyfrowany przez TLS. Dane głosowe przesyłane przez UDP nie są domyślnie szyfrowane w TeamSpeak 3. Szyfrowanie głosu można włączyć per kanał lub dla całego serwera przez ustawienia serwera, kosztem niewielkiego wzrostu użycia CPU. TeamSpeak 5 (obecnie w fazie rozwoju) domyślnie używa szyfrowania end-to-end.
