RE:NODE

Networking12 min read

TeamSpeak vs Mumble for gaming communities

When a community needs its own TeamSpeak or Mumble server instead of Discord, how to set each up, the ports to open, and how much CPU, RAM and bandwidth voice uses.

0 readers

For most gaming communities, Discord is the voice server and running your own is unnecessary. A self-hosted TeamSpeak or Mumble server earns its place when you need something Discord does not do well: lower and steadier voice latency, positional audio, a voice plugin that a game mod depends on (Arma 3 radio mods, some FiveM setups), fine-grained channel permissions for large organised groups, or simply owning the server and its logs. Both are light - a few dozen users fit in under 100 MB of memory and a fraction of one CPU core - and both need only a couple of ports: TeamSpeak 3 uses 9987 UDP for voice and 30033 TCP for file transfer, Mumble uses 64738 on both TCP and UDP. The real cost is bandwidth, which grows with the number of people listening to each speaker, and the administration you take on.

Discord, TeamSpeak or Mumble#

DiscordTeamSpeak 3Mumble
Who runs the serverDiscordYouYou
CostFree, with paid extrasFree for small servers, licence for largerFree and open source
Voice latencyGood, varies by regionLowVery low
Positional audioNoThrough pluginsBuilt in, with game support
PermissionsRoles and channel overridesVery detailed, server and channel groupsACLs and groups per channel
Mod integrationsBotsArma 3 radio mods, some FiveM voicePositional audio plugins, FiveM's built-in voice
Your dataOn Discord's serversOn your serverOn your server

The deciding question is usually not quality. It is whether the community already lives in Discord. Text, announcements, roles and bots are where people actually spend their time, and asking them to install a second voice client is a real cost. The communities that run their own voice servers tend to be milsim groups, competitive teams, roleplay servers with radio mods, and long-lived clans that remember when TeamSpeak was the default. If you are building community infrastructure from scratch, setting up Discord for a game server is the place to start, and a voice server can be added later if you hit one of the limits above.

TeamSpeak 3: setup, licence and first start#

The TeamSpeak 3 server is a single binary with an SQLite database by default. It runs on Linux, Windows and macOS. Two things trip people up on the first start.

The licence must be accepted explicitly. The server refuses to start until you do. Either create an empty file called .ts3server_license_accepted in the server directory, start it with license_accepted=1, or, with the official Docker image, set TS3SERVER_LICENSE=accept.

The admin credentials are printed once. The first start prints the ServerQuery serveradmin password and a privilege key (a long token). The privilege key is what you paste into the client to become Server Admin on the virtual server. If you miss both, you have to reset them - so start the server in the foreground the first time and copy them somewhere safe.

bash
$ ./ts3server license_accepted=1...------------------------------------------------------------------                      I M P O R T A N T------------------------------------------------------------------ Server Query Admin Account created loginname= "serveradmin", password= "..."------------------------------------------------------------------ ServerAdmin privilege key created, please use it to gain serveradmin rights for your virtualserver. token=...------------------------------------------------------------------

With Docker, the same thing in a compose file looks like this, and the credentials appear in docker compose logs:

compose.yaml
services:  teamspeak:    image: teamspeak    restart: unless-stopped    ports:      - "9987:9987/udp"      - "30033:30033"    environment:      TS3SERVER_LICENSE: accept    volumes:      - ts3data:/var/ts3servervolumes:  ts3data:

The query port is deliberately not published in that example. More on that below.

The licence limits. Without registering anything, a TeamSpeak 3 server allows one virtual server with up to 32 slots. Larger communities need a licence from TeamSpeak, and the terms and prices have changed over the years - check the current ones on TeamSpeak's site rather than trusting an old forum post. TeamSpeak has also been moving its clients and servers to a newer generation; if you are starting fresh, check which server version your players' clients and any mods you depend on actually support.

Mumble: setup and the settings that matter#

Mumble's server - long called Murmur, now packaged as mumble-server - is open source and has no slot licence at all. On Debian and Ubuntu it is a package:

bash
$ sudo apt install mumble-server$ sudo dpkg-reconfigure mumble-server     # autostart, priority, SuperUser password

The configuration lives in /etc/mumble-server.ini on Debian-based systems (murmur.ini in older packages and in the source tree). The keys worth knowing:

/etc/mumble-server.ini
; Port for both TCP (control) and UDP (voice)port=64738; Join password - empty means anyone may connectserverpassword=; Maximum simultaneous usersusers=100; Maximum bandwidth per user, in bits per secondbandwidth=72000; Shown to every user on connectwelcometext="Welcome. Read the rules in the Lobby channel."; Root channel name and public listingregisterName=Our Community; Lock out addresses after repeated failed attemptsautobanAttempts=10autobanTimeframe=120autobanTime=300

Defaults vary between versions - in particular, packaged configs ship different bandwidth values - so read the commented file that came with your install rather than copying values blindly. The SuperUser account, which can do anything regardless of ACLs, gets its password from dpkg-reconfigure on Debian or from mumble-server -supw <password> on other systems. Use it to set up channels and groups, then give admin rights to your own registered account and stop logging in as SuperUser.

Mumble encrypts everything: the control channel runs over TLS on TCP, and voice is encrypted UDP. If UDP is blocked for a client, Mumble tunnels voice over the TCP connection instead. That fallback keeps people connected on restrictive networks, at the cost of the head-of-line stalls TCP brings to real-time audio - TCP vs UDP for game servers explains why that hurts.

Ports and firewall#

ServicePortProtocolExpose publicly?
TeamSpeak 3 voice9987UDPYes
TeamSpeak 3 file transfer30033TCPYes, if users share files or avatars
TeamSpeak 3 ServerQuery (raw)10011TCPNo - admin only
TeamSpeak 3 ServerQuery (SSH)10022TCPNo - admin only
TeamSpeak 3 WebQuery10080 / 10443TCPNo - admin only
Mumble64738TCP and UDPYes
bash
# ufw: a TeamSpeak 3 server$ sudo ufw allow 9987/udp$ sudo ufw allow 30033/tcp# ufw: a Mumble server$ sudo ufw allow 64738/tcp$ sudo ufw allow 64738/udp

Older TeamSpeak versions call that file query_ip_whitelist.txt; the idea is the same. Firewall rules that matter covers the default-deny shape around these rules, and RCON safely applies to ServerQuery almost word for word.

Players need an address to type, and a link in Discord or on a website saves most of the support questions.

TeamSpeak joins on 9987 by default, so players can type just the hostname. A non-default port goes after a colon: voice.example.com:9988. Clickable links use the ts3server:// scheme, for example ts3server://voice.example.com?port=9987, and the client opens straight into the server. The TeamSpeak 3 client also looks up an SRV record, _ts3._udp.example.com, which lets a bare name point at a server on another host or port - the same idea as SRV records for Minecraft.

Mumble links use mumble://voice.example.com:64738/, and the client offers to add the server when one is clicked. On the default port the number can be left off.

Two practical notes. Many chat platforms, Discord included, do not turn custom schemes such as ts3server:// and mumble:// into clickable links, so post the plain address beside the link. And use a name rather than an IP address from day one: a voice server is the kind of thing that moves when the community grows, and a name moves with it. Subdomains for servers covers naming a whole set of services sensibly.

Keeping it updated#

Voice servers are long-lived and easy to forget, which is exactly how old, vulnerable versions end up exposed for years. Both projects publish security fixes from time to time. Subscribe to their release announcements, update on a schedule rather than when something breaks, and back up the database before each update - a TeamSpeak update that migrates the database is not something you can undo without the copy. Clients usually tolerate a slightly newer or older server, but a jump across a major version can need both sides updated; read the release notes before you announce it.

Sizing: CPU, memory and bandwidth#

Voice servers are cheap in CPU and memory because they do not mix audio. Each client encodes its own voice with Opus, the server forwards the packets to everyone who should hear them, and each client decodes. The server's work is routing and permission checks.

Users onlineRAMCPUUpload at peak
Up to 3050-100 MBa small fraction of one core1-5 Mbit/s
30-100100-250 MBunder half a core5-20 Mbit/s
100-300250-500 MBabout one core20-60 Mbit/s

Bandwidth is the number that matters, and it follows one rule: the server sends each speaker's stream to every listener in the channel. So outbound traffic is roughly:

code
outbound = simultaneous speakers x listeners in their channel x bitrate per stream

A channel of 30 people with three talking at once at 40 kbit/s each sends 3 x 29 x 40 = 3,480 kbit/s, about 3.5 Mbit/s. Split the same 30 people into five channels of six and it drops to well under 1 Mbit/s. Big all-hands channels are where voice bandwidth goes, and in practice most groups talk one at a time, which keeps the average far below the peak.

Per-stream bitrate depends on the codec quality setting. TeamSpeak's Opus Voice codec with its quality slider, and Mumble's per-user bandwidth cap, both land typically in the tens of kilobits per second per active speaker. Music-quality settings cost several times more; leave them for the one channel that needs them. Game server bandwidth per player puts these numbers next to game traffic, and the conclusion is the same as there - a normal voice server is a low-megabit workload.

Voice that is part of the game#

Several games and mods use a voice server as part of gameplay, and that changes what you need.

  • Arma 3 radio mods. Task Force Arrowhead Radio and ACRE2 run as TeamSpeak plugins: players must be on a TeamSpeak server with the plugin installed, and the mod controls who hears whom based on radios and distance in the game. For milsim groups this is the reason TeamSpeak is still running. Arma 3 server and mods covers the game side.
  • FiveM. The popular pma-voice resource uses FiveM's built-in Mumble-based voice, which runs inside the FiveM server itself on its existing ports. Older setups use SaltyChat or TokoVOIP, which need a TeamSpeak server with a plugin. Check which one your framework expects before you build a voice server it will not use.
  • Minecraft. The Simple Voice Chat mod and plugin runs proximity voice inside the game server, on its own UDP port - 24454 by default - which needs to be allocated and opened alongside the game port. Minecraft voice chat server mods has the details.
  • Mumble positional audio. Mumble's client can read player positions from supported games and place voices in 3D. It works best for small groups that already use Mumble.

Moderation and security#

A voice server is a public endpoint with user accounts, so it attracts the same attention as a game server. A few habits keep it boring.

  • Use a server password if the community is closed. It stops random scanners joining channels.
  • Set up groups before you need them. Both TeamSpeak and Mumble can restrict who may join a channel, speak, move users, kick and ban. Decide who has which right while things are calm.
  • Turn on flood and autoban limits. TeamSpeak has anti-flood settings per virtual server; Mumble has the autoban keys above and message rate limits.
  • Keep admin credentials out of chat. A privilege key pasted into Discord is a privilege key anybody can use.
  • Back it up. For TeamSpeak, the database file (ts3server.sqlitedb by default), the files directory and your licence file if you have one. For Mumble, its SQLite database - /var/lib/mumble-server/mumble-server.sqlite on Debian - and the ini. Stop the service or copy the database safely, then restore it once on a test machine to prove it works.

Where to run it#

A voice server needs a public address, the ports above, and a machine that stays up. It does not need much else.

  • At home it suffers from everything a home game server does: CGNAT, dynamic addresses, upload limits, and your house's IP address in everybody's client. NAT and CGNAT for game hosts explains the first.
  • Beside your game server on the same machine works if you control the machine. On a game panel, each server is a single game in its own container with its own allocated ports, so a separate voice daemon does not fit there.
  • On a VDS you have root, any ports you like, and can run TeamSpeak or Mumble next to whatever else the community needs. RE:NODE's VDS line is an Intel i9-9900K machine in Germany, prepared by hand within 24 hours; a voice server for a few hundred users uses a small corner of even the smallest plan. You also take on the updates, firewall and backups yourself - first hour on a new VDS is the minimum.

FAQ#

Is Mumble or TeamSpeak better for gaming?

Both have lower and steadier voice latency than most alternatives. Mumble is free, open source and has built-in positional audio. TeamSpeak has the more detailed permission system and is required by some game mods, notably Arma 3 radio mods. Pick the one your game or community already depends on.

How many users can a TeamSpeak server have for free?

Without a licence, one virtual server with 32 slots. Larger servers need a licence from TeamSpeak, and the terms have changed over time, so check their current offer.

Which ports does a Mumble server need?

Just one number, 64738, on both TCP and UDP. TCP carries the encrypted control connection and UDP carries voice. If only TCP is open, Mumble still works by tunnelling voice over TCP, with worse audio under packet loss.

Can I run a voice server on a game server plan?

On a panel where each server is one game in its own container, no - a voice server is a separate service with its own ports. Some games include voice in the game server itself, such as FiveM's built-in voice or Minecraft's Simple Voice Chat, and those run on the game server's allocated ports.

How much bandwidth does a voice server use?

Each speaker's stream goes to everyone in their channel, so it scales with speakers times listeners. Thirty people in one channel with three talking at once uses about 3.5 Mbit/s at typical voice quality; smaller channels use far less.


Comments

Completely anonymous: no account, no email, no cookie. We store the name you type, the text and the time - nothing else. Links are limited and markup is not rendered.

0/2000