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.