Wie man einen TeamSpeak Server auf einem VPS installiert (Ubuntu/CentOS Anleitung)
TeamSpeak ist eine selbst gehostete Sprachkommunikationsplattform mit niedriger Latenz, die als eigenständiger Server-Daemon unter Linux läuft. Die Installation auf einem VPS gibt Ihnen vollständige administrative Kontrolle über Kanäle, Berechtigungen, Codecs und Sicherheitsrichtlinien – ohne auf Infrastruktur von Drittanbietern oder Nutzungsbeschränkungen angewiesen zu sein.
Dieser Leitfaden behandelt die vollständige Installation von TeamSpeak 3 Server auf Ubuntu (mit Hinweisen für CentOS/RHEL-Varianten), einschließlich Benutzerisolierung, systemd-Dienstkonfiguration, Admin-Passwort-Absicherung und Client-Verbindung. Jeder Befehl ist produktionsreif und in einer sauberen 22.04 LTS-Umgebung getestet.
Warum TeamSpeak selbst auf einem VPS hosten
Kommerzielle Sprachplattformen wie Discord setzen Datenaufbewahrungsrichtlinien, algorithmische Moderation und Ratenbegrenzungen durch, die Organisationen nicht außer Kraft setzen können. Eine selbst gehostete TeamSpeak-Instanz beseitigt diese Einschränkungen vollständig. Sie kontrollieren:
- Codec-Qualität (Opus Voice, Opus Music) und kanalspezifische Bitrate
- Berechtigungssystem mit granularen Server-Gruppen- und Kanal-Gruppen-ACLs
- Verschlüsselung via TLS für Signalisierung und optionale Sprachverschlüsselung
- Datenspeicherort — Ihr Sprachverkehr durchläuft niemals ein Relay eines Drittanbieters
- Uptime-SLA — direkt an Ihren VPS-Anbieter gebunden, nicht an einen gemeinsamen Cloud-Dienst
Für Gaming-Clans, Esports-Organisationen, Remote-Entwicklungsteams und Unternehmenskommunikation bedeutet dies messbare Vorteile bei Zuverlässigkeit und Compliance.
Mindestsystemanforderungen
TeamSpeak 3 Server ist außergewöhnlich ressourcenschonend. Die folgenden Spezifikationen unterstützen ungefähr 50–100 gleichzeitige Benutzer ohne Beeinträchtigung der Audioqualität:
| Ressource | Minimum | Empfohlen (100+ Benutzer) |
|---|
| — | — | — |
|---|
| CPU Cores | 1 vCPU | 2 vCPU |
|---|
| RAM | 512 MB | 1 GB |
|---|
| Festplattenspeicher | 1 GB | 5 GB (Logs + DB) |
|---|
| Netzwerk | 10 Mbps | 100 Mbps |
|---|
| Betriebssystem | Ubuntu 20.04+ / CentOS 7+ | Ubuntu 22.04 LTS |
|---|
| Architektur | x86_64 (amd64) | x86_64 (amd64) |
|---|
Ein VPS Hosting-Plan mit 1 vCPU und 512 MB RAM ist für eine kleine Community ausreichend. Skalieren Sie vertikal, wenn Ihre Anzahl gleichzeitiger Benutzer wächst.
Wichtige Ports, die in Ihrer Firewall geöffnet werden müssen:
- `9987/UDP` — Sprachdaten (Standard)
- `10011/TCP` — ServerQuery (raw oder SSH)
- `30033/TCP` — Dateiübertragung
Schritt 1: Den Server vorbereiten
Verbinden Sie sich als Root mit Ihrem VPS:
“`bash
ssh root@your_server_ip -p your_ssh_port
“`
Aktualisieren Sie alle Systempakete, um bekannte Sicherheitslücken zu beseitigen, bevor neue Software eingeführt wird:
“`bash
sudo apt update && sudo apt upgrade -y
“`
Installieren Sie `bzip2`, das zum Entpacken des TeamSpeak-Archivs benötigt wird:
“`bash
sudo apt install bzip2 -y
“`
Auf CentOS/AlmaLinux/Rocky Linux ersetzen Sie das Obige durch:
“`bash
sudo dnf update -y && sudo dnf install bzip2 wget -y
“`
Schritt 2: Einen dedizierten Systembenutzer erstellen
TeamSpeak als Root auszuführen ist ein kritischer Sicherheitsfehler. Wenn der Prozess jemals ausgenutzt wird, erhält ein Angreifer sofortigen Root-Zugriff auf den gesamten Host. Isolieren Sie ihn immer unter einem nicht privilegierten Benutzer:
“`bash
sudo adduser teamspeak
“`
Folgen Sie den Aufforderungen, um ein Passwort festzulegen. Dieser Benutzer wird alle TeamSpeak-Binärdateien, Konfigurationsdateien und die SQLite-Datenbank besitzen.
> Sicherheitshinweis: Erwägen Sie für gehärtete Umgebungen, den Benutzer mit `–disabled-login` zu erstellen und `sudo -u teamspeak` für alle Operationen zu verwenden, um den interaktiven Shell-Zugriff vollständig zu verhindern.
Schritt 3: Die TeamSpeak Server-Binärdatei herunterladen und entpacken
Wechseln Sie in den `teamspeak`-Benutzerkontext:
“`bash
sudo su – teamspeak
“`
Laden Sie die neueste stabile TeamSpeak 3 Server-Version für 64-Bit Linux herunter. Überprüfen Sie immer die aktuelle Versionsnummer auf der offiziellen TeamSpeak-Downloads-Seite, bevor Sie diesen Befehl ausführen, da sich die Versionszeichenfolge mit jeder Version ändert:
“`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
“`
Entpacken Sie das Archiv und entfernen Sie das oberste Verzeichnis, sodass alle Dateien direkt im aktuellen Arbeitsverzeichnis (`/home/teamspeak/`) landen:
“`bash
tar xvfj teamspeak-server.tar.bz2 –strip-components 1
“`
Akzeptieren Sie die TeamSpeak-Lizenzvereinbarung, indem Sie die erforderliche Markierungsdatei erstellen. Der Server-Daemon wird ohne sie nicht starten:
“`bash
touch ~/.ts3server_license_accepted
“`
Kehren Sie zum Root-Benutzer zurück:
“`bash
exit
“`
Schritt 4: Eine systemd-Diensteinheit erstellen
Die Verwaltung von TeamSpeak über systemd stellt sicher, dass der Prozess nach einem Neustart oder Absturz automatisch neu gestartet wird, sich mit `journald` für zentralisiertes Logging integriert und während des Bootvorgangs die richtige Abhängigkeitsreihenfolge einhält.
Öffnen Sie eine neue Diensteinheitsdatei:
“`bash
nano /etc/systemd/system/teamspeak.service
“`
Fügen Sie die folgende vollständige Einheitskonfiguration ein:
“`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
“`
Erklärung der wichtigsten Direktiven:
- `After=network.target` — verhindert den Start, bevor der Netzwerk-Stack bereit ist, und vermeidet Bind-Fehler auf `9987/UDP`
- `Type=forking` — korrekt für das TeamSpeak-Startskript, das einen Hintergrundprozess forkt
- `Restart=on-failure` — erholt sich automatisch von unerwarteten Abstürzen ohne manuellen Eingriff
- `RestartSec=10s` — fügt eine kurze Verzögerung vor Neustartversuchen hinzu, um schnelle Absturzschleifen zu verhindern
Speichern Sie die Datei (`Ctrl+S`, dann `Ctrl+X`), laden Sie dann den systemd-Daemon neu, um die neue Einheit zu registrieren:
“`bash
systemctl daemon-reload
“`
Aktivieren Sie den Dienst, um beim Booten zu starten, und starten Sie ihn sofort:
“`bash
systemctl enable –now teamspeak
“`
Überprüfen Sie, ob der Dienst aktiv und in Betrieb ist:
“`bash
systemctl status teamspeak
“`
Die erwartete Ausgabe enthält `Active: active (running)` mit einer gültigen PID. Wenn der Status `failed` anzeigt, überprüfen Sie sofort die Logs:
“`bash
journalctl -u teamspeak -n 50 –no-pager
“`
Schritt 5: Den Admin-Privilegienschlüssel (Token) abrufen
Wenn TeamSpeak Server zum ersten Mal startet, generiert er einen Privilegienschlüssel (Token) in seinen Log-Dateien. Dieser Token gewährt dem ersten verbindenden Client vollständige Server-Administratorrechte. Sie müssen ihn abrufen, bevor sich jemand anderes verbindet.
“`bash
grep -i token /home/teamspeak/logs/*
“`
Die Ausgabe enthält eine Zeile ähnlich wie:
“`
token=q1a2b3c4d5e6f7g8h9i0jKLMNOPQRSTUVWXYZ
“`
Kopieren Sie diesen Token. Wenn Sie sich zum ersten Mal über den TeamSpeak-Client verbinden, werden Sie aufgefordert, ihn einzugeben. Dadurch wird Ihr Client in die `Server Admin`-Servergruppe aufgenommen.
> Kritisch: Dieser Token ist einmalig verwendbar und wird bei der ersten Einlösung verbraucht. Wenn Sie ihn verlieren, bevor Sie ihn verwenden, müssen Sie manuell ein neues Admin-Passwort festlegen (siehe Schritt 6). Bewahren Sie ihn sicher auf.
Schritt 6: Das ServerAdmin-Passwort festlegen oder zurücksetzen
Das `serveradmin`-Konto wird für den ServerQuery-Zugriff verwendet — eine rohe TCP- oder SSH-Schnittstelle, die skriptgesteuerte Administration, Bot-Integration und Remote-Verwaltungstools wie YaTQA oder ts3admin ermöglicht.
Um dieses Passwort festzulegen oder zurückzusetzen, müssen Sie den Dienst vorübergehend stoppen, die Server-Binärdatei direkt mit dem Passwortargument starten, sie dann wieder stoppen und über systemd neu starten:
“`bash
systemctl stop teamspeak.service
“`
Wechseln Sie zum teamspeak-Benutzer und legen Sie das Passwort fest:
“`bash
su – teamspeak
./ts3server_startscript.sh start serveradmin_password=YourStrongPassword
“`
Warten Sie, bis der Server vollständig initialisiert ist (achten Sie auf `TeamSpeak 3 Server started successfully` in der Ausgabe), dann stoppen Sie ihn:
“`bash
./ts3server_startscript.sh stop
exit
“`
Starten Sie den verwalteten Dienst neu:
“`bash
systemctl start teamspeak.service
“`
Passwortanforderungen: Verwenden Sie mindestens 16 Zeichen mit gemischter Groß-/Kleinschreibung, Zahlen und Symbolen. Die ServerQuery-Schnittstelle ist auf TCP-Port `10011` verfügbar und ist ein häufiges Brute-Force-Ziel, wenn sie mit einem schwachen Passwort belassen wird.
Schritt 7: Die Firewall konfigurieren
Wenn `ufw` auf Ihrem Server aktiv ist, öffnen Sie die erforderlichen Ports:
“`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
“`
Für `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
“`
> Härtungstipp: Wenn Sie keinen öffentlichen ServerQuery-Zugriff benötigen, beschränken Sie Port `10011` auf bestimmte Verwaltungs-IPs. Eine öffentliche Freigabe ist für den normalen Sprachserverbetrieb nicht erforderlich.
Schritt 8: Vom TeamSpeak-Client aus verbinden
- Laden Sie den TeamSpeak 3 Client für Ihr Desktop-Betriebssystem herunter und installieren Sie ihn (Windows, macOS, Linux).
- Öffnen Sie den Client und navigieren Sie zu Verbindungen > Verbinden.
- Geben Sie Ihre VPS-IP-Adresse als Server-Spitzname oder Adresse ein.
- Lassen Sie den Port als `9987`, es sei denn, Sie haben ihn in `ts3server.ini` geändert.
- Bei der ersten Verbindung fordert der Client Sie auf, den Privilegienschlüssel (Token) einzugeben. Fügen Sie den in Schritt 5 abgerufenen Token ein.
- Ihr Client ist jetzt der Server-Administrator.
Optional: Das automatisierte Installationsskript verwenden
Für eine schnelle Bereitstellung stellt AlexHost ein automatisiertes Installationsskript bereit, das Abhängigkeitsinstallation, Benutzererstellung, Binär-Download und Dienstkonfiguration in einer einzigen Ausführung übernimmt:
“`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
“`
Überprüfen Sie den Skriptinhalt, bevor Sie ihn ausführen, um zu verstehen, welche Änderungen er an Ihrem System vornimmt. Automatisierte Skripte sind praktisch, sollten aber niemals blind auf Produktionsinfrastruktur ausgeführt werden.
TeamSpeak vs. Alternativen: Selbst gehostete Sprachplattformen
| Funktion | TeamSpeak 3 | Mumble | Discord (Cloud) |
|---|
| — | — | — | — |
|---|
| Selbst gehostet | Ja | Ja | Nein |
|---|
| RAM-Nutzung (Leerlauf) | ~30 MB | ~15 MB | N/A |
|---|
| Latenz | Sehr niedrig | Sehr niedrig | Niedrig–Mittel |
|---|
| Verschlüsselung | TLS (Signalisierung) | DTLS + SRTP | Proprietär |
|---|
| Berechtigungssystem | Erweitertes ACL | Moderat | Rollenbasiert |
|---|
| Client-Verfügbarkeit | Win/Mac/Linux/Mobile | Win/Mac/Linux | Win/Mac/Linux/Mobile |
|---|
| Lizenz (Server) | Kostenlos bis 32 Slots | Open Source | N/A |
|---|
| Codec | Opus | Opus/CELT | Opus |
|---|
| ServerQuery API | Ja (TCP/SSH) | Nein | Nur REST API |
|---|
Die ServerQuery API von TeamSpeak ist ein wesentliches Unterscheidungsmerkmal für Organisationen, die programmatische Serververwaltung benötigen — automatisierte Kanalerstellung, Bot-Integration oder CI/CD-ausgelöste Berechtigungsänderungen.
Häufige Installationsprobleme und Lösungen
Server startet nicht — „Could not bind to port 9987″
Ein anderer Prozess verwendet UDP 9987, oder der Dienst wurde gestartet, bevor das Netzwerk bereit war. Überprüfen Sie mit `ss -ulnp | grep 9987` und stellen Sie sicher, dass die `After=network.target`-Direktive in Ihrer Diensteinheit vorhanden ist.
Fehler: Lizenzdatei nicht gefunden
Die `.ts3server_license_accepted`-Datei muss im Home-Verzeichnis des Benutzers vorhanden sein, der den Prozess ausführt (`/home/teamspeak/`). Bestätigen Sie dies mit `ls -la /home/teamspeak/.ts3server_license_accepted`.
Token nicht in den Logs gefunden
Das Log-Verzeichnis ist standardmäßig `/home/teamspeak/logs/`. Wenn Sie das Archiv in einem anderen Pfad entpackt haben, passen Sie den grep-Befehl entsprechend an. Tokens erscheinen nur im Log des allerersten Starts — wenn die Datenbank bereits existiert, wird kein neuer Token generiert.
ServerQuery-Verbindung verweigert
Bestätigen Sie, dass Port `10011/TCP` in Ihrer Firewall geöffnet ist und der Serverprozess läuft. Testen Sie lokal mit `telnet 127.0.0.1 10011` — eine erfolgreiche Verbindung gibt ein `TS3`-Banner zurück.
Hohe CPU-Auslastung bei vielen Benutzern
TeamSpeak ist für die Sprachmischung single-threaded. Wenn Sie ~200 gleichzeitige Benutzer auf einer einzelnen virtuellen Serverinstanz überschreiten, erwägen Sie die Bereitstellung mehrerer virtueller Server oder ein Upgrade auf einen Dedicated Servers-Plan für garantierte CPU-Taktgeschwindigkeit und keine Noisy-Neighbor-Konkurrenz.
Ihre TeamSpeak-Bereitstellung absichern
Wenden Sie zusätzlich zu den oben behandelten Benutzerisolierungs- und Firewall-Regeln diese Härtungsmaßnahmen an:
- Standard-Ports ändern in `ts3server.ini`, um die Exposition gegenüber automatisiertem Scanning zu reduzieren. Aktualisieren Sie die Firewall-Regeln entsprechend.
- ServerQuery einschränken (`10011/TCP`) auf Verwaltungs-IPs mithilfe von Firewall-Quellfilterung.
- SSH-Schlüsselauthentifizierung aktivieren auf Ihrem VPS und passwortbasiertes Root-Login deaktivieren. Informationen zu SSH-Schlüsselverwaltungsoptionen finden Sie in Ihrem VPS-Kontrollpanel.
- Logs überwachen über `journalctl -u teamspeak -f` auf ungewöhnliche Verbindungsmuster oder wiederholte ServerQuery-Authentifizierungsfehler.
- Regelmäßige Backups von `/home/teamspeak/ts3server.sqlitedb` — diese Datei enthält alle Kanalkonfigurationen, Servergruppen, Berechtigungen und Client-Identitäten. Ihr Verlust bedeutet, dass Sie Ihre gesamte Serverstruktur von Grund auf neu aufbauen müssen.
- Die Binärdatei aktuell halten. TeamSpeak veröffentlicht regelmäßig Sicherheits-Patches. Abonnieren Sie ihre Release-Ankündigungen und wiederholen Sie die Schritte 3–4 mit dem neuen Versions-Tarball, wenn Updates verfügbar sind.
Wenn Sie mehrere Dienste auf demselben VPS verwalten, erwägen Sie, Ihre TeamSpeak-Instanz mit einer VPS Control Panels-Lösung zu kombinieren, um Dienstverwaltung, Überwachung und geplante Aufgaben über eine einheitliche Oberfläche zu optimieren.
Entscheidungsmatrix: Ist dieses Setup das Richtige für Sie?
| Szenario | Empfohlene Maßnahme |
|---|
| — | — |
|---|
| Unter 32 gleichzeitige Benutzer, Gaming-Community | Einstiegs-VPS, TeamSpeak-Gratis-Lizenz |
|---|
| 32–512 gleichzeitige Benutzer, Organisation | TeamSpeak-Lizenz-Upgrade + 2–4 vCPU VPS |
|---|
| Vollständige Hardware-Isolierung benötigt, 500+ Benutzer | Dedizierter Server, mehrere virtuelle Serverinstanzen |
|---|
| Verwaltetes Panel + TeamSpeak gewünscht | VPS mit cPanel oder DirectAdmin |
|---|
| Niedrige Latenz EU/US-Routing erforderlich | VPS-Rechenzentrumsstandort am nächsten zu den Benutzern wählen |
|---|
| Web-Präsenz als Ergänzung benötigt | [Shared Web Hosting](https://alexhost.com/de/shared-hosting/) oder Subdomain auf demselben VPS hinzufügen |
|---|
| Benutzerdefinierte Domain für Serveradresse erforderlich | [Domain Registration](https://alexhost.com/de/domains/) + DNS A-Eintrag, der auf VPS-IP zeigt |
|---|
Technische Kernpunkte
- Führen Sie TeamSpeak immer unter einem dedizierten Nicht-Root-Benutzer aus. Dies ist für jeden internetfähigen Dienst nicht verhandelbar.
- Die `ts3server_license_accepted`-Markierungsdatei muss vorhanden sein, bevor der Daemon startet — ein häufiger Fehlerpunkt beim ersten Start.
- Verwenden Sie `Type=forking` in der systemd-Einheit, nicht `Type=simple`. Das Startskript forkt einen Hintergrundprozess; `simple` führt dazu, dass systemd die PID falsch verfolgt.
- Rufen Sie den Privilegienschlüssel-Token sofort nach dem ersten Start aus den Logs ab. Er wird bei der ersten Verwendung verbraucht und kann ohne ein manuelles Passwort-Reset-Verfahren nicht neu generiert werden.
- Port `9987/UDP` ist der einzige Port, der für den grundlegenden Sprachbetrieb erforderlich ist. `10011/TCP` und `30033/TCP` sind je nach Anwendungsfall optional.
- Sichern Sie `ts3server.sqlitedb` nach einem Zeitplan. Die gesamte Serverkonfiguration befindet sich in dieser einzelnen Datei.
- Beschränken Sie für Produktionsbereitstellungen ServerQuery auf localhost oder ein Verwaltungs-VLAN — stellen Sie es niemals öffentlich ohne IP-Allowlisting bereit.
—
Häufig gestellte Fragen
Was ist die maximale Anzahl von Benutzern bei einer kostenlosen TeamSpeak-Serverlizenz?
Die kostenlose Non-Profit-Lizenz unterstützt bis zu 32 gleichzeitige Slots. Für größere Bereitstellungen bietet TeamSpeak Jahreslizenzpakete für 64, 128, 256 oder 512 Slots sowie eine unbegrenzte „Activation License” für qualifizierende Organisationen an.
Kann ich TeamSpeak Server auf einem VPS mit 512 MB RAM betreiben?
Ja. Der TeamSpeak 3 Server-Daemon verbraucht im Leerlauf ungefähr 25–40 MB RAM und skaliert moderat mit gleichzeitigen Benutzern. Ein VPS mit 512 MB RAM ist für Communities mit unter 50 gleichzeitigen Benutzern ausreichend, mit komfortablem Spielraum für das Betriebssystem und Systemprozesse.
Wie aktualisiere ich TeamSpeak Server, ohne meine Konfiguration zu verlieren?
Stoppen Sie den Dienst mit `systemctl stop teamspeak`, laden Sie den neuen Versions-Tarball als `teamspeak`-Benutzer herunter, entpacken Sie ihn mit `–strip-components 1` in dasselbe Verzeichnis (wobei nur die Binärdateien überschrieben werden), und starten Sie dann den Dienst neu. Die `ts3server.sqlitedb`-Datenbank und die `ts3server.ini`-Konfigurationsdatei werden durch diesen Vorgang nicht überschrieben.
Warum ist mein TeamSpeak-Server nicht in der öffentlichen Serverliste sichtbar?
Standardmäßig registrieren sich TeamSpeak-Server nicht bei der öffentlichen Serverliste. Um die Auflistung zu aktivieren, setzen Sie `machine_id=` und konfigurieren Sie `serverip` in `ts3server.ini`, aktivieren Sie dann die öffentliche Auflistungsoption über ServerQuery oder das Server-Administrationspanel des Clients. Stellen Sie sicher, dass UDP-Port `9987` vom Internet aus erreichbar ist.
Ist TeamSpeak-Datenverkehr standardmäßig verschlüsselt?
Signalisierungsverkehr (Verbindungsaufbau, Chat, Berechtigungen) wird über TLS verschlüsselt. Sprachdaten, die über UDP übertragen werden, sind in TeamSpeak 3 standardmäßig nicht verschlüsselt. Die Sprachverschlüsselung kann pro Kanal oder serverweit über die Servereinstellungen aktiviert werden, auf Kosten einer geringen Erhöhung der CPU-Auslastung. TeamSpeak 5 (derzeit in Entwicklung) verwendet standardmäßig Ende-zu-Ende-Verschlüsselung.
