Voice · no KYC
Host TeamSpeak on an Offshore VPS
Run your own TeamSpeak voice server on an offshore, no-KYC VPS and keep every call, channel, and ban list under your own control instead of a third party's.
What it is
TeamSpeak is a self-hosted, low-latency voice chat server built for gaming clans, communities, and teams who need crystal-clear push-to-talk audio and persistent channels. The official TeamSpeak 3 server ships as a single container that runs on a modest VPS and serves dozens of users with a tiny CPU and RAM footprint.
Why host it offshore
A voice server logs who talks to whom and when, so hosting it yourself on a no-KYC, crypto-paid VPS means no account identity, phone number, or payment trail is tied to your community. ChainVPS's unmetered bandwidth and included DDoS protection matter here because UDP voice services are a frequent flood target and voice traffic is continuous.
The deploy
A working reference setup
Copy this onto a fresh ChainVPS instance. Replace the placeholders, then bring it up.
# docker-compose.yml — TeamSpeak 3 server (official image, SQLite backend)
# Deploy: docker compose up -d
# Then grab the one-time admin token:
# docker compose logs teamspeak | grep -i token
# Paste that token into your TeamSpeak client on first connect to become ServerAdmin.
services:
teamspeak:
image: teamspeak:3
container_name: teamspeak
restart: unless-stopped
environment:
TS3SERVER_LICENSE: accept
ports:
- "9987:9987/udp" # voice (required, public)
- "30033:30033/tcp" # file transfer: avatars/icons (optional)
- "10011:10011/tcp" # ServerQuery admin (KEEP PRIVATE — see hardening)
volumes:
- ts3data:/var/ts3server/
volumes:
ts3data:
Firewall
Ports to open
| Port | Protocol | Purpose |
|---|---|---|
| 9987 | UDP | Voice — the only port clients need; must be open to the public. |
| 30033 | TCP | File transfer for avatars and channel/group icons; optional, close it if unused. |
| 10011 | TCP | ServerQuery (raw) admin/automation interface; do NOT expose publicly. |
| 10022 | TCP | ServerQuery over SSH (newer server builds); keep firewalled/localhost-only. |
Right-sizing
Which plan you need
VPS Nano / Small (1 vCPU, 1-2 GB RAM)
TeamSpeak is extremely light; a single virtual server with a full 32 slots barely touches CPU. Pick the plan by location/latency, not horsepower.
VPS Small / Pro (1-2 vCPU, 2-4 GB RAM)
Headroom for file transfers, a bot (e.g. SinusBot for music), and the ServerQuery interface running alongside voice.
VPS Pro (2-4 vCPU, 4-8 GB RAM)
The bottleneck is network, not compute — ChainVPS unmetered bandwidth is what carries many concurrent voice streams. A TeamSpeak license is required to exceed 32 slots per instance.
Best locations: Voice is latency-sensitive, so pick the privacy-tier location closest to your members: NL and LU sit on top of Europe's best-connected backbones and give most EU communities sub-30 ms ping, CH adds strong legal privacy for a small latency trade-off, and RO/MD serve Eastern Europe well. IS is the outlier — great for a hardened privacy stance but higher latency, so use it only if jurisdiction matters more than a few extra milliseconds.
Lock it down
Hardening checklist
- Capture the ServerAdmin token from the container logs on first boot (docker compose logs teamspeak | grep -i token), claim it in your client immediately, and store it in a password manager — it is a one-time key and there is no built-in recovery.
- Never expose ServerQuery (10011/10022) to the internet. Firewall it to localhost or your own IP with UFW (ufw allow 9987/udp, then default-deny the rest); ServerQuery brute-force is the most common way TeamSpeak servers get taken over.
- Set a strong query_admin password and use the query_ip_allowlist.txt / query_ip_denylist.txt files in the data volume to restrict who can even reach the query interface.
- Lean on ChainVPS's included DDoS protection and unmetered bandwidth — public 9987/udp is a routine reflection/flood target, and voice packets are constant, so a metered plan would be the wrong tool here.
- Back up the SQLite database regularly: it lives in the ts3data volume as ts3server.sqlitedb and holds all channels, permissions, and bans — snapshot the volume or copy the file on a cron schedule.
- Pin the image to a specific tag (e.g. teamspeak:3.13.7) rather than :latest for reproducible restarts, and rebuild deliberately when you want to update rather than on every pull.
Deploy it on
The right ChainVPS product
Questions
Hosting TeamSpeak — FAQ
Do I need a paid TeamSpeak license to self-host?
No. A non-licensed TeamSpeak 3 server is free for up to 32 slots and one virtual server, which covers most clans and small communities. You only need a (paid or free-tier) license from TeamSpeak if you want more slots or multiple virtual servers on one instance.
How many people can one VPS handle?
Compute is almost never the limit — even a Nano VPS runs a full 32-slot server comfortably. The real constraint is bandwidth, which is why unmetered plans matter. A larger licensed deployment with hundreds of concurrent talkers is still light on CPU but needs the network capacity a VPS Pro plus unmetered bandwidth provides.
Why offshore instead of a rented TeamSpeak host?
A rented voice host ties your community to an account and payment identity and can log or hand over connection metadata. A no-KYC, crypto-paid VPS lets you run the exact same official server software with no identity attached and full root control over logs, bans, and data.
Which port do my members actually need open?
Only 9987/udp. That single UDP port carries all voice traffic. File transfer (30033) is optional and ServerQuery (10011) should stay private, so members never connect to those.
What about TeamSpeak 6?
TeamSpeak 6 server images exist and are newer, but TeamSpeak 3 remains the stable, battle-tested self-hosting standard with the widest client and bot support. This guide uses TS3; the same VPS sizing and hardening apply if you later switch to a TS6 image.
More to self-host
Other one-click stacks
Spin up TeamSpeak
in the next 60 seconds.
Unmetered bandwidth · DDoS included · 21 cryptocurrencies · no KYC.