15%

15% auf alle Hosting-Dienste sparen

Teste deine Fähigkeiten und erhalte Rabatt auf jeden Hosting-Plan

Benutze den Code:

Skills
Anfangen
09.10.2024

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:

RessourceMinimumEmpfohlen (100+ Benutzer)
CPU Cores1 vCPU2 vCPU
RAM512 MB1 GB
Festplattenspeicher1 GB5 GB (Logs + DB)
Netzwerk10 Mbps100 Mbps
BetriebssystemUbuntu 20.04+ / CentOS 7+Ubuntu 22.04 LTS
Architekturx86_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

  1. Laden Sie den TeamSpeak 3 Client für Ihr Desktop-Betriebssystem herunter und installieren Sie ihn (Windows, macOS, Linux).
  2. Öffnen Sie den Client und navigieren Sie zu Verbindungen > Verbinden.
  3. Geben Sie Ihre VPS-IP-Adresse als Server-Spitzname oder Adresse ein.
  4. Lassen Sie den Port als `9987`, es sei denn, Sie haben ihn in `ts3server.ini` geändert.
  5. Bei der ersten Verbindung fordert der Client Sie auf, den Privilegienschlüssel (Token) einzugeben. Fügen Sie den in Schritt 5 abgerufenen Token ein.
  6. 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

FunktionTeamSpeak 3MumbleDiscord (Cloud)
Selbst gehostetJaJaNein
RAM-Nutzung (Leerlauf)~30 MB~15 MBN/A
LatenzSehr niedrigSehr niedrigNiedrig–Mittel
VerschlüsselungTLS (Signalisierung)DTLS + SRTPProprietär
BerechtigungssystemErweitertes ACLModeratRollenbasiert
Client-VerfügbarkeitWin/Mac/Linux/MobileWin/Mac/LinuxWin/Mac/Linux/Mobile
Lizenz (Server)Kostenlos bis 32 SlotsOpen SourceN/A
CodecOpusOpus/CELTOpus
ServerQuery APIJa (TCP/SSH)NeinNur 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?

SzenarioEmpfohlene Maßnahme
Unter 32 gleichzeitige Benutzer, Gaming-CommunityEinstiegs-VPS, TeamSpeak-Gratis-Lizenz
32–512 gleichzeitige Benutzer, OrganisationTeamSpeak-Lizenz-Upgrade + 2–4 vCPU VPS
Vollständige Hardware-Isolierung benötigt, 500+ BenutzerDedizierter Server, mehrere virtuelle Serverinstanzen
Verwaltetes Panel + TeamSpeak gewünschtVPS mit cPanel oder DirectAdmin
Niedrige Latenz EU/US-Routing erforderlichVPS-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.

15%

15% auf alle Hosting-Dienste sparen

Teste deine Fähigkeiten und erhalte Rabatt auf jeden Hosting-Plan

Benutze den Code:

Skills
Anfangen