Here’s how to self-host a “voice bridge” that connects Discord voice with an external Mumble server, using Docker. Even Discord members who aren’t in the game will be able to talk by voice with friends who are on Mumble.
This article is aimed at developers and server admins who can run a bot themselves. The code can be copied and pasted as-is.
⚠️ [Important — as of July 2026] This bridge currently cannot connect to Discord voice.
As of March 2, 2026, Discord has made DAVE (end-to-end encrypted audio) support mandatory for all non-Stage voice calls (official announcement). Clients that don’t support DAVE are rejected on connection withclose 4017: E2EE/DAVE protocol required. mumble-discord-bridge cannot currently complete the DAVE handshake, so voice connections fail (context deadline exceeded). Until DAVE support on the bridge side matures, voice relay cannot be used. This article remains as an explanation of how it works and a record for a possible future revival.
What it does
Stieneee/mumble-discord-bridge (written in Go, OSS) relays audio bidirectionally between one Discord voice channel and one Mumble channel. The bot joins the Mumble side as “one user,” also joins the Discord voice channel, and mixes and plays the voices of both sides.
[Discord voice ch] ⇄ 🤖 Bridge Bot ⇄ [Mumble channel]
Discord-only people People using Mumble
⚠️ Positional Audio can’t cross the bridge
First, the most important limitation. Audio that passes through the bridge does not carry positional audio.
- Participants on the Discord side don’t have in-game coordinates
- Because the bridge mixes everyone’s voices as a single bot user, direction and distance are lost
Positional audio only works with the combination of Mumble + a game (such as 7 Days to Die). The right way to think about the bridge is not as something that “delivers positional audio,” but as something for “bringing people who can’t get into the game into the voice circle.” We recommend not connecting your combat channels, and only bridging channels used for communication.
What you need
- An environment that can run Docker (PC / VPS)
- Permission to create one Discord Bot
1. Create the bridge Bot
- Discord Developer Portal → New Application → Bot → Reset Token (copy it)
- Privileged Gateway Intents → turn ON MESSAGE CONTENT INTENT (required to read the
!mumble-discordcommand) - OAuth2 → URL Generator → scope
bot, permissions View Channel / Connect / Speak, and invite the bot - Prepare one regular voice channel for the bridge (note: Stage channels won’t work — the bot can’t speak in them)
2. Place the code
Put two files in the same folder.
docker-compose.yml
services:
mumble-discord-bridge:
image: stieneee/mumble-discord-bridge:latest
container_name: mumble-discord-bridge
restart: unless-stopped
env_file: .env
.env
# Your Discord Bot info
DISCORD_TOKEN=your Bot token here
DISCORD_GID=server (guild) ID
DISCORD_CID=voice channel ID for the bridge
# Mumble to connect to
MUMBLE_ADDRESS=your-mumble-host
MUMBLE_PORT=64738
MUMBLE_USERNAME=Bridge-yourname
MUMBLE_CHANNEL=name of the channel to bridge to
MUMBLE_INSECURE=true # accept self-signed certificates
# Operating mode (manual = connect/disconnect via command)
MODE=manual
COMMAND=mumble-discord
COMMAND_MODE=both
Start it up:
docker compose up -d
docker compose logs -f # OK if you see "Mumble connected"
3. How to use it
Since it’s MODE=manual, it normally stays idle. It only starts up on command when you want to connect.
- Join the target voice channel → type
!mumble-discord linkin text - End with
!mumble-discord unlink/ check status with!mumble-discord status/ reconnect withrefresh
About modes and scaling
There are three types of MODE.
- constant … always connected from startup
- auto … automatically connects only when there are users on both sides
- manual … explicit control via command (the setting in this article)
And an important design limitation: this bridge is one instance = one guild. You can’t handle multiple Discord servers with a single Bot (if you IDENTIFY the same token from multiple processes at once, Discord rejects it).
The reason text-to-speech bots like “Zundamon” run on tens of thousands of servers is that they only generate audio and stream it to Discord (one-way, no external server). The bridge has bidirectional traffic + an external Mumble + the “one user = one channel” constraint, so to handle many guilds with a single Bot you’d have to build your own multi-tenant implementation that opens as many Mumble connections as there are guilds. At a scale of a few dozen guilds, it’s realistic to just run one instance per guild.
Connecting to the 7DAYS.JP Mumble
At 7DAYS.JP, the Japanese fan community for 7 Days to Die, we use this mechanism to let you connect your Discord to our Mumble. A dedicated integration bot automatically issues your own personal Mumble channel and connection details.
- Copy-paste setup page: Mumble × Discord Bridge Setup Guide
- About in-game positional audio: Mumble Voice Chat Guide
It makes a nice, low-key entry point for casual interaction, letting even people who aren’t in the game join the voice circle.