Guide
Host your own Mumble server
Mumcord doesn't need a special server: a plain Mumble server is all it takes. With Docker yours is up in about 15 minutes, even if you've never done this before.
- 64738 port, TCP and UDP
- 1 core and 512 MB RAM handle dozens of people
- €0 open source; you only pay for the machine
In eight steps
-
Pick a machine
The easiest choice is a small Linux server from a hosting provider (a “VPS” for a few euros a month). It runs around the clock and has a fixed address. A computer at home or a Raspberry Pi works too; then you have to open a port on your router (step 5).
Mumble needs very little power. The connection matters more: each person talking uses about 40–100 kbit/s.
-
Install Docker
Log in to the server over SSH. On Linux this command installs Docker including Compose. On Windows and macOS use Docker Desktop instead.
Terminal curl -fsSL https://get.docker.com | sudo sh docker compose versionIf you see a version number, you're ready.
-
Create a folder and a password
Create a folder and generate a random password for the admin account
SuperUser:Terminal mkdir -p ~/mumble && cd ~/mumble openssl rand -base64 24.env # Stays on the server. Never share it in Git, chats or screenshots. SUPERUSER_PASSWORD=paste-the-random-password-here SERVER_PASSWORD=Save the second file as
.envand paste in the generated password (for example withnano .env). If not everyone with the address should get in, set aSERVER_PASSWORDthat you give to your people. Thenchmod 600 .envkeeps other users of the machine out of the file. -
The docker-compose.yml
This file goes into the same folder as
docker-compose.yml. Change the server name and welcome text as you like; the rest is fine as it is.docker-compose.yml # Mumble server for Mumcord and any other Mumble client name: mumble services: mumble-server: image: mumblevoip/mumble-server:v1.5.735 # pinned version; raise it here to update restart: unless-stopped ports: - "64738:64738/tcp" # connection and chat - "64738:64738/udp" # voice volumes: - data:/data # channels, registrations and certificate environment: # Passwords come from the .env file next to this one, never straight in here. MUMBLE_SUPERUSER_PASSWORD: ${SUPERUSER_PASSWORD:?SUPERUSER_PASSWORD is missing in .env} MUMBLE_CONFIG_SERVER_PASSWORD: ${SERVER_PASSWORD:-} # empty = anyone with the address can join MUMBLE_CONFIG_REGISTER_NAME: "Our Server" # name of the top channel MUMBLE_CONFIG_WELCOME_TEXT: "Welcome! Say hi in the chat." # pinned at the top of the chat in Mumcord MUMBLE_CONFIG_USERS: "50" # at most this many at once MUMBLE_CONFIG_IMAGE_MESSAGE_LENGTH: "1048576" # images in chat up to 1 MB (default: 128 KB) MUMBLE_CONFIG_TEXT_MESSAGE_LENGTH: "10000" # longer messages (default: 5000 characters) volumes: data:The last two settings are there for Mumcord: pasted images may be larger, and long messages aren't cut off. Every other setting follows the same
MUMBLE_CONFIG_…pattern, see the image documentation. -
Start it and open the port
Start the server and take a quick look at the log:
Terminal docker compose up -d docker compose logs -f # Ctrl+C only stops the outputOnce it says
Server listening on 0.0.0.0:64738, it's running. Now port 64738 for TCP and UDP has to be reachable from outside:Server with a firewall (for example ufw):
sudo ufw allow 64738/tcpandsudo ufw allow 64738/udp. Some providers also have a firewall in their customer panel.Computer at home: set up port forwarding on your router for 64738 TCP and UDP to this computer.
-
Connect with Mumcord
In Mumcord, click + in the server bar and enter your server's IP address or name. A name is nicer than an IP: create an A record at your domain provider, such as
voice.example.org, pointing to the IP.On first connect Mumcord shows the certificate's fingerprint. That's expected: the server created its own certificate on first start. Confirm it once; if it changes unexpectedly later, Mumcord warns you.
-
Invite people
Send your people a link. Clicking it opens Mumcord (or any other Mumble client) and connects right away; add a channel name at the end to land in the right channel:
Terminal mumble://voice.example.org mumble://voice.example.org/GamingAnyone who doesn't have Mumcord yet finds it at mumcord.app. Send a server password separately from the link.
-
Set up channels and permissions
Creating channels and handing out permissions comes to Mumcord with Epic 4. Until then, use the official Mumble client once:
1. Connect with the username
SuperUserand the password from.env.2. Right-click the top channel → Add, for every channel you want.
3. So you don't need SuperUser every time: connect with Mumcord under your own name and click your name at the bottom left → Register on this server. Then, as SuperUser, top channel → Edit → Groups → add your name to the
admingroup.
Upkeep and problems
How do I update the server?
Put the new version after image: in docker-compose.yml (see the list on Docker Hub), then run docker compose pull and docker compose up -d. Channels and registrations are kept.
How do I make a backup?
Everything that matters lives in the mumble_data volume. Pause, pack, resume: docker compose stop, then docker run --rm -v mumble_data:/data -v "$PWD":/backup alpine tar czf /backup/mumble-backup.tar.gz -C /data . and finally docker compose start.
Nobody can reach the server.
Almost always the port is closed. Check with docker compose ps that the container runs, then the firewall, the provider's firewall and your router (step 5). If the server is at home, you may not reach the public address from inside your own network; test with the local IP then.
Connecting works, but voice lags.
Usually only TCP is open, not UDP. Mumcord then falls back to TCP on its own. That works but is slower. Open UDP 64738 as well.
I forgot the SuperUser password.
Put a new one in .env and run docker compose up -d. The server applies it on every start.
More help is in the wiki and the issues on GitHub. Wiki → Issues →