Hosting TeamSpeak 6 with Docker & Modern Orchestration
In 2026, Docker has become the preferred way to host TeamSpeak 6 servers. Containerization provides isolated environments, easy updates, and better resource management compared to traditional "bare metal" installations.
🐳 Why Docker for TS6?
TeamSpeak 6's new features (Web Query, Screen Sharing) require more complex networking and dependency management. Docker simplifies this by bundling everything into a single, portable image that works anywhere.
Prerequisites
- A Linux VPS (Ubuntu 24.04+ recommended)
- Docker and Docker Compose installed
- A domain name for your Web Query (optional but recommended)
- Ports 9987 (UDP), 10080 (TCP), and 30033 (TCP) open in your firewall
The Docker Compose Setup
We recommend using docker-compose.yml for easy management. This setup includes the TS6 server and an automated backup volume.
docker-compose.yml
services:
teamspeak6:
image: teamspeak/teamspeak6-server:latest
container_name: ts6_server
restart: always
ports:
- "9987:9987/udp" # Voice
- "10080:10080" # Web Query (HTTP)
- "30033:30033" # File Transfer
environment:
- TS6SERVER_LICENSE=accept
- TS6SERVER_WEBQUERY_PORT=10080
volumes:
- ./ts6_data:/var/ts6server
- ./ts6_logs:/var/ts6server/logs
volumes:
ts6_data:
ts6_logs:
Networking: Handling UDP & TCP
Standard HTTP reverse proxies (like Nginx) often struggle with TeamSpeak's primary traffic because it's UDP. However, the new Web Query (REST API) is standard TCP/HTTP.
Using Traefik for the Web API
If you want to use a domain name (like api.yourserver.com) for your REST API with SSL, add these labels to your service:
labels:
- "traefik.enable=true"
- "traefik.http.routers.ts6api.rule=Host(`api.yourserver.com`)"
- "traefik.http.routers.ts6api.entrypoints=websecure"
- "traefik.http.routers.ts6api.tls.certresolver=myresolver"
- "traefik.http.services.ts6api.loadbalancer.server.port=10080"
Performance Tuning in Docker
TeamSpeak is highly sensitive to CPU latency. To ensure crystal-clear audio even under high load, consider "pinning" your TS6 container to specific CPU cores.
CPU Affinity in Compose:
cpuset: "0-1" # Uses the first two cores of your CPU
cpus: 2.0 # Limits usage to 2 full cores
Securing Your Container
🔒 Hardening Checklist
- Non-Root User: Ensure the container runs as a standard user, not root. The official image handles this by default.
- Read-Only Root: If possible, run with
read_only: trueand only mount specific writable volumes (data, logs). - Rate Limiting: Use Docker's
network_priorityor external firewalls to prevent UDP flood attacks.
Automated Updates
Updating your TS6 server in Docker is a two-command process:
docker-compose pull
docker-compose up -d
Ensure you have Backups before running these commands, as TeamSpeak database migrations are sometimes one-way.
Advanced: Multi-Instance Hosting
With TS6 Communities, you might want to run multiple virtual instances. Docker makes this easy via mapping different ports:
# Instance 1
- "9987:9987/udp"
# Instance 2
- "9988:9987/udp"
Pro Tip: Use Portainer or a similar web GUI to manage your TeamSpeak Docker containers if you prefer not to use the command line for daily monitoring.