Dein eigener TeamSpeak 3-Server in Docker: Schritt für Schritt
Ja, ich weiß – TeamSpeak 3 ist nicht mehr das jüngste Pferd im Stall. Es gibt schon neuere Versionen wie TeamSpeak 5 oder sogar den TS6-Server. Und klar, es gibt auch moderne Alternativen wie Discord, die viele inzwischen nutzen.
Ich persönlich mag Discord jedoch nicht besonders – vor allem wegen der fragwürdigen Datenschutzpraxis und der Tatsache, dass alle Daten über deren Server laufen.
TS3 läuft dagegen vorallem lokal und stabil, frisst wenig Ressourcen und funktioniert einfach. Viele Communities, Clans und Teams setzen deshalb nach wie vor auf den Klassiker – und mit Docker wird die Installation noch einfacher.
🛠 Die Vorbereitung
Bevor wir den Container starten, erstelle ich gerne ein eigenes Docker-Netzwerk. So hat der Docker Container eine feste IP und kann auch unter einem Alias erreicht werden.
Erstelle das Netzwerk mit:
docker network create --subnet=172.19.68.0/24 ts3.dockernetwork.local
Diese IPs kannst du natürlich anpassen – wichtig ist nur, dass sie zu deinem Setup passen.
📦 Docker-Compose
Hier das Minimal-Setup für einen lauffähigen TS3-Server in Docker.
--- services: teamspeak-app: image: teamspeak:latest container_name: teamspeak3 restart: always ports: - 9987:9987/udp - 10011:10011 - 30033:30033 - 41144:41144 - 10022:10022 volumes: - ./data:/var/ts3server/ environment: TS3SERVER_LICENSE: accept networks: ts3.dockernetwork.local: ipv4_address: 172.19.68.10 aliases: - ts3.domain.com networks: ts3.dockernetwork.local: external: true
🌐 Wichtige Ports für den Betrieb
Damit dein TeamSpeak-Server auch von außen erreichbar ist, musst du ein paar Ports in deiner Firewall oder im Router freigeben:
- Standard-Voice-Port (UDP, eingehend):
9987
→ absolut notwendig, sonst kommt niemand auf den Server. - Filetransfer (TCP, eingehend):
30033
→ nur nötig, wenn du Dateien über den TS3-Client austauschen willst. - ServerQuery (TCP, eingehend):
10011
→ optional, wird für externe Tools oder Automatisierungen gebraucht, z. B. für ts3index oder YaTQA. - Weblist (UDP, ausgehend):
2010
→ sorgt dafür, dass dein Server in der globalen TS3-Liste auftaucht. - TSDNS (TCP, eingehend):
41144
→ nur relevant, wenn du TSDNS nutzt, um Domains auf Server-Instanzen zu mappen. - Accounting (TCP, ausgehend):
2008
→ wird für Lizenz- und Accounting-Checks von TeamSpeak selbst benötigt. - SSH (TCP, eingehend):
10022
(falls aktiviert) → für die abgesicherte Remote-Administration, standardmäßig aber oft gar nicht im Einsatz.
👉 Wichtig: Für einen reinen Sprachserver reichen in den meisten Fällen die Ports 9987
und 30033
. Alles andere ist optional, je nachdem, wie du deinen TS3-Server nutzen möchtest.
🔑 Der erste Start
Gestartet wird der Container initial mit:
docker compose up
Beim allerersten Start des TS3-Containers spuckt das Log zwei sehr wichtige Infos aus – und die haben unterschiedliche Aufgaben. Hier ein Beispiel aus meinen Logs:
teamspeak3 | 2025-08-08 10:48:56.056013|INFO |ServerLibPriv | |TeamSpeak 3 Server 3.13.7 (2022-06-20 12:21:53) teamspeak3 | 2025-08-08 10:48:56.056091|INFO |ServerLibPriv | |SystemInformation: Linux 6.8.12-11-pve #1 SMP PREEMPT_DYNAMIC PMX 6.8.12-11 (2025-05-22T09:39Z) x86_64 Binary: 64bit teamspeak3 | 2025-08-08 10:48:56.056117|INFO |ServerLibPriv | |Using hardware aes teamspeak3 | 2025-08-08 10:48:56.056391|INFO |DatabaseQuery | |dbPlugin name: SQLite3 plugin, Version 3, (c)TeamSpeak Systems GmbH teamspeak3 | 2025-08-08 10:48:56.056450|INFO |DatabaseQuery | |dbPlugin version: 3.11.1 teamspeak3 | 2025-08-08 10:48:56.056654|INFO |DatabaseQuery | |checking database integrity (may take a while) teamspeak3 | 2025-08-08 10:48:56.066339|INFO |SQL | |db_CreateTables() tables created teamspeak3 | teamspeak3 | ------------------------------------------------------------------ teamspeak3 | I M P O R T A N T teamspeak3 | ------------------------------------------------------------------ teamspeak3 | Server Query Admin Account created teamspeak3 | loginname= "serveradmin", password= "e1JB4Trv" teamspeak3 | apikey= "BAB0J_rFa4mc8ZbrIEAVQ2X4MdTSxSiJhS-0KQA" teamspeak3 | ------------------------------------------------------------------ teamspeak3 | teamspeak3 | 2025-08-08 10:48:56.102399|WARNING |Accounting | |Unable to open licensekey.dat, falling back to limited functionality teamspeak3 | 2025-08-08 10:48:56.109161|INFO |Accounting | |Licensing Information teamspeak3 | 2025-08-08 10:48:56.109201|INFO |Accounting | |licensed to : Anonymous teamspeak3 | 2025-08-08 10:48:56.109214|INFO |Accounting | |type : No License teamspeak3 | 2025-08-08 10:48:56.109228|INFO |Accounting | |starting date : Tue Feb 1 00:00:00 2022 teamspeak3 | 2025-08-08 10:48:56.109258|INFO |Accounting | |ending date : Thu Jul 1 00:00:00 2027 teamspeak3 | 2025-08-08 10:48:56.109337|INFO |Accounting | |max virtualservers: 1 teamspeak3 | 2025-08-08 10:48:56.109377|INFO |Accounting | |max slots : 32 teamspeak3 | 2025-08-08 10:48:56.616594|INFO | | |Puzzle precompute time: 490 teamspeak3 | 2025-08-08 10:48:56.617454|INFO |FileManager | |listening on 0.0.0.0:30033, [::]:30033 teamspeak3 | 2025-08-08 10:48:56.618223|INFO |VirtualSvrMgr | |executing monthly interval teamspeak3 | 2025-08-08 10:48:56.618365|INFO |VirtualSvrMgr | |reset virtualserver traffic statistics teamspeak3 | 2025-08-08 10:48:56.665351|INFO |Query | |Using a query thread pool size of 2 teamspeak3 | 2025-08-08 10:48:56.683005|INFO |VirtualServerBase|1 |listening on 0.0.0.0:9987, [::]:9987 teamspeak3 | 2025-08-08 10:48:56.683403|WARNING |VirtualServer |1 |-------------------------------------------------------- teamspeak3 | 2025-08-08 10:48:56.683436|WARNING |VirtualServer |1 |ServerAdmin privilege key created, please use the line below teamspeak3 | 2025-08-08 10:48:56.683453|WARNING |VirtualServer |1 |token=N3rGIAk7JEfZwjG1uhUraJteQmK3lwF8yyF9dCee teamspeak3 | 2025-08-08 10:48:56.683464|WARNING |VirtualServer |1 |-------------------------------------------------------- teamspeak3 | teamspeak3 | ------------------------------------------------------------------ teamspeak3 | I M P O R T A N T teamspeak3 | ------------------------------------------------------------------ teamspeak3 | ServerAdmin privilege key created, please use it to gain teamspeak3 | serveradmin rights for your virtualserver. please teamspeak3 | also check the doc/privilegekey_guide.txt for details. teamspeak3 | teamspeak3 | token=N3rGIAk7JEfZwjG1uhUraJteQmK3lwF8yyF9dCee teamspeak3 | ------------------------------------------------------------------ teamspeak3 | teamspeak3 | 2025-08-08 10:48:56.683618|INFO |Query | |listening for query on 0.0.0.0:10011, [::]:10011 teamspeak3 | 2025-08-08 10:48:56.683820|INFO |CIDRManager | |updated query_ip_allowlist ips: 127.0.0.1/32, ::1/128, teamspeak3 | 2025-08-08 10:48:56.837909|INFO | | |myTeamSpeak identifier revocation list was downloaded successfully - all related features are activated
1. Server Query Admin Account
Das ist der Zugang für die Server Query – also die Fernsteuerung des TS3-Servers über Port 10011
.
- Wird z. B. für Tools wie YaTQA oder Automatisierungsskripte genutzt.
- Das Passwort gehört zu dem Benutzer
serveradmin
. - Alternativ kann der
apikey
verwendet werden, der oft bequemer ist, weil er keine Session-basierten Logins benötigt.
2. ServerAdmin Privilege Key
Das ist ein einmaliger Einlösecode, den du direkt im TS3-Client verwendest, um dich selbst zum höchsten Admin (Server Admin
) auf dem Virtual Server zu machen.
- Einlösen im Client unter Berechtigungen → Berechtigungsschlüssel verwenden.
- Danach ist der Token verbraucht und dein Benutzer dauerhaft Admin.
Mein Tipp: Speichere den Server Query Admin Key sicher ab. Den Privilege Key brauchst du nur einmal, den Query-Login kannst du später immer wieder nutzen.
🖱️ Erster Login: So nutzt du den Berechtigungsschlüssel
Sobald der TS3-Server läuft, verbindest du dich einfach mit der IP oder Domain deines Servers. Stelle dabei sicher, dass du die Firewall vorher konfiguriert hast, sonst wird das nichts! 😉
Beim ersten Verbinden wirst du automatisch aufgefordert, einen Berechtigungsschlüssel einzugeben. Kopiere hier den Privilege Key aus den Container-Logs hinein und bestätige.

Ist die Eingabe erfolgreich, bekommst du sofort die Rückmeldung, dass der Schlüssel erfolgreich verwendet wurde – schon hast du alle Admin-Rechte auf dem Server.

✅ Fazit
Ein TS3-Server in Docker ist schnell eingerichtet, läuft stabil und lässt sich bei Bedarf einfach auf andere Server umziehen. Für mich ist es nach wie vor die unkomplizierteste Methode, eine kleine Community oder ein Team-Setup zu betreiben. Und weißt du was? Nach all den Jahren habe ich immer noch meinen eigenen TS3-Server am Laufen – und ich nutze ihn regelmäßig. Wenn du neugierig bist: ts3.techniverse.net.
👥 Techniverse Community
Matrix, Selfhosting, smarte IT-Lösungen und jede Menge Nerd-Talk – das findest du in der Techniverse Community.
Komm vorbei, tausch dich aus und werde ein Teil von uns.
👉 Unsere Gruppe auf Matrix: #community:techniverse.net
Wir freuen uns auf dich!