Short answer: to host your own TeamSpeak server, download the TeamSpeak 3 server for Linux (version 3.13.8 as of October 2026), accept its licence, run it under systemd as its own user, open UDP 9987 and TCP 30033, and claim admin rights with the privilege key from the first log. Without a licence key it serves 32 slots.
This guide does that on Debian 12 or 13 and Ubuntu 22.04 or 24.04, keeps the admin ports off the internet, adds nightly backups, and explains where TeamSpeak 5 and the TeamSpeak 6 server beta fit in. Versions and licence terms below were read from teamspeak.com, TeamSpeak’s support articles and its GitHub repository in October 2026.
| Item | Value |
|---|---|
| Stable server | TeamSpeak 3 server 3.13.8 (security release, 27 May 2026) |
| New server | TeamSpeak 6 server 6.0.0-beta13.1 (22 September 2026), a beta |
| Voice | UDP 9987 |
| File transfer | TCP 30033 |
| ServerQuery | TCP 10011 (raw) and 10022 (SSH): keep them local |
| Free use | 1 virtual server, 32 slots, non-commercial use only |
| Data | ts3server.sqlitedb and the files folder |
TeamSpeak 3, 5 or 6: which server do I run?
The names cover two different things: clients and servers. TeamSpeak 5 was the working name of the rebuilt client, which now ships as the TeamSpeak 6 client. TeamSpeak’s support pages say it connects to TeamSpeak 3 servers, with the TeamSpeak 3 feature set on them, so a TeamSpeak 3 server still serves every current client.
On the server side there are two programs:
- TeamSpeak 3 server: the stable release, for Linux, Windows, macOS and FreeBSD, plus an official Docker image. 3.13.8 fixed three denial-of-service flaws, and TeamSpeak asked operators to update as soon as possible, so do not run anything older.
- TeamSpeak 6 server: published as a beta in TeamSpeak’s GitHub repository. It comes with a 32-slot beta licence that is renewed every two months, TeamSpeak describes the beta as not intended for production use, TeamSpeak 3 licences do not work on it, and there is no migration path from a TeamSpeak 3 database.
For a community that should keep its channels and permissions, run the TeamSpeak 3 server; the rest of this guide sets it up. The TeamSpeak 6 beta is worth a look on the side, and the last section shows how.
How many slots can I use without paying?
Without a licence key, the TeamSpeak 3 server runs one virtual server with up to 32 slots, and TeamSpeak limits that unlicensed use to non-commercial groups and private users. A clan or a group of friends on its own VPS is exactly that case. More slots or more virtual servers need a licence bought from TeamSpeak, and selling TeamSpeak servers to others needs a hosting licence of its own. Licence names, slot steps and prices change, so check the licensing pages on teamspeak.com before you plan beyond 32.
How much server does TeamSpeak need?
Very little: the server is one small native process with an SQLite database. Two things grow with use:
- Bandwidth. The server forwards each speaker’s voice to every listener in the channel, so traffic grows with speakers times listeners, and the codec quality you set per channel multiplies it.
- Disk. Uploaded files, icons and avatars land in the
filesfolder, and logs collect inlogs.
After a busy evening, systemctl status teamspeak shows the service’s real memory on its Memory: line. That is the number to size by, and on most groups it leaves the smallest VPS mostly idle, which is why TeamSpeak often shares a machine with a game server or a Discord bot.
How do I install the TeamSpeak 3 server on Linux?
The server needs no root rights, so it gets its own unprivileged account. The commands below were written from TeamSpeak’s server quickstart; the unpacking step and the backup script further down were checked on Debian 12 (GNU tar 1.34) against a mock server folder.
- 1Create the user and install the tools
Debian · Ubuntu sudo apt update sudo apt install -y bzip2 curl ca-certificates sudo useradd --system --create-home --home-dir /opt/teamspeak --shell /usr/sbin/nologin teamspeak - 2Download and unpack the server
Take the Linux 64-bit server from the downloads page on teamspeak.com. As of October 2026 the file follows this pattern; if the version has moved on, copy the new link instead:
Debian · Ubuntu VERSION=3.13.8 cd /tmp curl -fLO "https://files.teamspeak-services.com/releases/server/$VERSION/teamspeak3-server_linux_amd64-$VERSION.tar.bz2" sudo -u teamspeak mkdir -p /opt/teamspeak/server sudo -u teamspeak tar -xjf "teamspeak3-server_linux_amd64-$VERSION.tar.bz2" \ --strip-components=1 -C /opt/teamspeak/server ls /opt/teamspeak/server # ts3server, ts3server_minimal_runscript.sh, LICENSE, sql, ... - 3Read and accept the licence
Since version 3.1.0 the server refuses to start until you accept its licence. TeamSpeak documents three equivalent ways: an empty file named
.ts3server_license_acceptedin the working directory, the start parameterlicense_accepted=1, or the environment variableTS3SERVER_LICENSE=accept. Read the terms first:Debian · Ubuntu less /opt/teamspeak/server/LICENSEThe service below passes
license_accepted=1, so the acceptance sits visibly in one place. - 4Create the systemd service
The two
query_*_ipparameters bind ServerQuery to localhost, so the admin interface never listens on the public address in the first place:/etc/systemd/system/teamspeak.service [Unit] Description=TeamSpeak 3 server Wants=network-online.target After=network-online.target [Service] Type=simple User=teamspeak Group=teamspeak WorkingDirectory=/opt/teamspeak/server ExecStart=/opt/teamspeak/server/ts3server_minimal_runscript.sh license_accepted=1 query_ip=127.0.0.1 query_ssh_ip=127.0.0.1 Restart=on-failure RestartSec=10 [Install] WantedBy=multi-user.targetThe systemd service guide explains each line if you want to adapt it.
- 5Start it and save the credentials
Debian · Ubuntu sudo systemctl daemon-reload sudo systemctl enable --now teamspeak # the ServerQuery login, printed to the console once, on the very first start sudo journalctl -u teamspeak | grep -i -A2 'loginname' # the ServerAdmin privilege key, written to the server log sudo grep -h 'token=' /opt/teamspeak/server/logs/*.logThe quickstart is blunt about it: the ServerQuery password for
serveradminis shown only once. Copy both into your password manager now.
Which ports does a TeamSpeak server need?
Two, per TeamSpeak’s own port list. Everything else is optional and should stay closed:
| Port | Protocol | Used for | Open it? |
|---|---|---|---|
| 9987 | UDP | Voice, the port clients connect to | Yes |
| 30033 | TCP | File transfer: uploads, icons, avatars | Yes |
| 10011 | TCP | ServerQuery, raw text | No: localhost only |
| 10022 | TCP | ServerQuery over SSH | No: localhost only |
| 10080 / 10443 | TCP | WebQuery over HTTP / HTTPS, off unless you enable it | No |
| 41144 | TCP | TSDNS, only if you run the separate tsdns server | Only then |
sudo ufw allow 22/tcp # your SSH port, first
sudo ufw allow 9987/udp comment 'TeamSpeak voice'
sudo ufw allow 30033/tcp comment 'TeamSpeak files'
sudo ufw enable
sudo ss -tulpn | grep ts3server # what the server really listens onIn the ss output, 9987 and 30033 should listen on 0.0.0.0 (or *), and 10011 and 10022 on 127.0.0.1 only. The UFW guide covers default-deny rules in depth. To test from outside, the open port checker confirms TCP 30033; it cannot test the voice port, because UDP has no handshake to answer. UFW lets outgoing traffic through by default, which the server needs to reach TeamSpeak’s licence servers.
How do I become admin with the privilege key?
Connect to YOUR_IP with any TeamSpeak client. On a fresh server the client normally asks for a privilege key right away; if it does not, open Permissions, Use Privilege Key in the TeamSpeak 3 client, or look for the same option in the newer client’s menus. Paste the value after token=, and your identity joins the Server Admin group. The key works once.
Lost it, or used it with an identity you no longer have? Make a new one over ServerQuery with the saved serveradmin password:
ssh -p 10022 serveradmin@127.0.0.1 # password: the ServerQuery one
use 1
privilegekeyadd tokentype=0 tokenid1=6 tokenid2=0
# token=... (6 is the default Server Admin group; older guides use tokenadd, the deprecated alias)
quitHow do I back up a TeamSpeak server?
Everything that defines your server sits in the install folder: channels, groups, permissions and bans in ts3server.sqlitedb, uploads and icons in files, plus licensekey.dat if you bought a licence and the query allow and deny lists. SQLite should not be copied mid-write, so the job stops the service for the few seconds the archive takes:
sudo tee /opt/teamspeak/backup.sh >/dev/null <<'EOF'
#!/bin/sh
set -e
DEST=/opt/teamspeak/backups
mkdir -p "$DEST"
# licensekey.dat only exists with a paid licence; --ignore-failed-read skips what is missing
tar -czf "$DEST/teamspeak-$(date +%F-%H%M).tar.gz" --ignore-failed-read -C /opt/teamspeak/server \
ts3server.sqlitedb files licensekey.dat query_ip_allowlist.txt query_ip_denylist.txt ssh_host_rsa_key
# keep the newest 14 archives
ls -1t "$DEST"/teamspeak-*.tar.gz | tail -n +15 | xargs -r rm --
EOF
sudo chmod 750 /opt/teamspeak/backup.sh
# every night at 04:30: stop, archive, start
(sudo crontab -l 2>/dev/null; echo "30 4 * * * systemctl stop teamspeak; /opt/teamspeak/backup.sh; systemctl start teamspeak") | sudo crontab -A missing file only prints a warning, as the run on Debian 12 showed, and the archive still lands. Copy the archives off the machine now and then with rsync. To restore, stop the service, unpack an archive into /opt/teamspeak/server as the teamspeak user, and start it again.
How do I update the TeamSpeak 3 server?
Stop it, take a backup, and unpack the new archive over the old folder: the database and your files are not part of the archive, so they stay. On the next start the server upgrades its database itself:
VERSION=3.13.8 # the new version from teamspeak.com
sudo systemctl stop teamspeak
sudo /opt/teamspeak/backup.sh
cd /tmp && curl -fLO "https://files.teamspeak-services.com/releases/server/$VERSION/teamspeak3-server_linux_amd64-$VERSION.tar.bz2"
sudo -u teamspeak tar -xjf "teamspeak3-server_linux_amd64-$VERSION.tar.bz2" --strip-components=1 -C /opt/teamspeak/server
sudo systemctl start teamspeak && sudo journalctl -u teamspeak -n 20Why can’t clients connect?
| Symptom | Check | Fix |
|---|---|---|
| Service exits right after start | journalctl -u teamspeak -n 30 | Licence not accepted: license_accepted=1 missing from ExecStart |
| Client times out | ss -ulpn | grep 9987 | Not listening: service down. Listening: open UDP 9987 in ufw |
| Connects, but uploads and avatars fail | Port checker on TCP 30033 | Open TCP 30033 |
| Server full at 32 | Server info in the client | The free limit; a licence raises it |
| Admin tool cannot reach ServerQuery | It runs on your PC | Use an SSH tunnel to 127.0.0.1:10011 or 10022 |
How do I try the TeamSpeak 6 server beta?
TeamSpeak’s repository recommends Docker. The beta keeps the familiar voice and file ports; the licence is accepted with an environment variable:
docker run -d --name teamspeak6 \
-p 9987:9987/udp -p 30033:30033 \
-e TSSERVER_LICENSE_ACCEPTED=accept \
-v teamspeak6-data:/var/tsserver/ \
teamspeaksystems/teamspeak6-server:latest
docker logs teamspeak6 # look for the ServerAdmin privilege keyThe binary release works the same way: ./tsserver --accept-license, with persistent settings in tsserver.yaml. Run it on a second VPS or with other ports if your TeamSpeak 3 server already holds 9987 and 30033, and treat what you build there as a test: the beta licence expires unless TeamSpeak renews it, and nothing moves over from TeamSpeak 3. If Docker is new to you, start with installing Docker on Ubuntu or Debian.
Should I rent TeamSpeak slots or run my own server?
Rented TeamSpeak hosting sells you slots on someone else’s server: nothing to maintain, but you get only the admin rights the host passes on, and the price follows the slot count. Your own VPS costs the same each month whether 5 or 32 people talk, gives you ServerQuery, the database and the backups, and can run a game server or a bot next to TeamSpeak. Every VMHeaven server has its own IPv4 address and always-on DDoS mitigation at no extra cost, which voice servers need as much as game servers do, and the smallest plans are usually enough for a 32-slot TeamSpeak on its own. The gaming VPS page compares both lines if you want to put a game server on the same machine.
Frequently asked
Is a TeamSpeak 3 server free?
For non-commercial use, yes. Without a licence key the TeamSpeak 3 server runs one virtual server with up to 32 slots, which TeamSpeak allows for private users and non-commercial groups. More slots, more virtual servers or selling servers to others need a licence from TeamSpeak; check the current terms on teamspeak.com.
Which ports does a TeamSpeak server use?
UDP 9987 for voice and TCP 30033 for file transfers are the two to open. ServerQuery uses TCP 10011 (raw) and 10022 (SSH); keep those bound to localhost or firewalled, because the serveradmin login controls the whole server. WebQuery on 10080 and 10443 is off unless you enable it.
What is the difference between TeamSpeak 3, 5 and 6?
TeamSpeak 5 was the working name of the rebuilt client, which now ships as the TeamSpeak 6 client and also connects to TeamSpeak 3 servers. On the server side, the TeamSpeak 3 server is the stable release (3.13.8 as of October 2026), while the TeamSpeak 6 server is a beta with a 32-slot beta licence that TeamSpeak says is not meant for production use.
Where do I find the TeamSpeak privilege key?
On the first start the server writes a ServerAdmin privilege key to its log, on a line beginning with token=; search the logs folder for token=. Use it once in the client to join the Server Admin group. If it is lost, log in to ServerQuery as serveradmin and create a new one with privilegekeyadd tokentype=0 tokenid1=6 tokenid2=0.