Discord のボイスと、外部の Mumble サーバーをつなぐ「ボイスブリッジ」を、Docker で自前ホストする方法をまとめます。ゲームに入っていない Discord のメンバーでも、Mumble にいる仲間と声で話せるようになります。
この記事は 自分でボットを動かせる開発者・鯖管理者向けです。コードはそのままコピペで使えます。
⚠️ 【重要・2026年7月時点】現在このブリッジは Discord のボイスに接続できません。
Discord は 2026年3月2日から、ステージ以外のボイス通話に DAVE(音声E2E暗号)対応を必須化しました(公式告知)。DAVE 非対応のクライアントは接続時にclose 4017: E2EE/DAVE protocol requiredで拒否されます。mumble-discord-bridge は現時点で DAVE ハンドシェイクを完了できず、音声接続に失敗します(context deadline exceeded)。ブリッジ側の DAVE 対応が成熟するまで、ボイス中継は利用できません。本記事は仕組みの解説・将来の再開に向けた記録として残しています。
何をするものか
Stieneee/mumble-discord-bridge(Go製・OSS)は、1つのDiscordボイスチャンネルと1つのMumbleチャンネルの音声を双方向に中継します。ボットは Mumble 側に「1ユーザー」として参加し、Discord 側のボイスにも参加して、両者の声をミックスして流します。
[Discordのボイスch] ⇄ 🤖ブリッジBot ⇄ [Mumbleのチャンネル]
Discordだけの人 Mumbleを使う人
⚠️ 位置音声(Positional Audio)は橋を渡れない
先に一番大事な制約を。ブリッジを通った音声には位置音声がかかりません。
- Discord 側の参加者はゲーム内の座標を持たない
- ブリッジはボット1ユーザーとして全員の声をミックスするため、方向・距離が失われる
位置音声は Mumble + ゲーム(7 Days to Die など) の組み合わせでのみ働きます。ブリッジは「位置音声を配る」ものではなく、「ゲームに入れない人を声の輪に入れる」ためのものと割り切るのが正解です。実戦チャンネルは繋がず、連絡用チャンネルだけ橋渡しするのがおすすめです。
必要なもの
- Docker が動く環境(PC / VPS)
- Discord Bot を1つ作成できる権限
1. 橋渡しBotを作る
- Discord Developer Portal → New Application → Bot → Reset Token(コピー)
- Privileged Gateway Intents → MESSAGE CONTENT INTENT を ON(
!mumble-discordコマンドを読むのに必須) - OAuth2 → URL Generator → scope
bot、権限 View Channel / Connect / Speak で招待 - 橋渡し用の通常ボイスチャンネルを1つ用意(※ステージチャンネルは不可=Botが発言できません)
2. コードを配置
同じフォルダに2ファイルを置きます。
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
# あなたのDiscord Bot情報
DISCORD_TOKEN=ここにBotトークン
DISCORD_GID=サーバー(ギルド)ID
DISCORD_CID=橋渡し用ボイスチャンネルID
# 接続先Mumble
MUMBLE_ADDRESS=your-mumble-host
MUMBLE_PORT=64738
MUMBLE_USERNAME=Bridge-yourname
MUMBLE_CHANNEL=橋渡し先チャンネル名
MUMBLE_INSECURE=true # 自己署名証明書を受け入れる
# 動作モード(manual = コマンドで接続/切断)
MODE=manual
COMMAND=mumble-discord
COMMAND_MODE=both
起動:
docker compose up -d
docker compose logs -f # 「Mumble connected」と出ればOK
3. 使い方
MODE=manual なので、普段は待機。つなぎたいときだけコマンドで起動します。
- 対象ボイスチャンネルに入る → テキストに
!mumble-discord link - 終了
!mumble-discord unlink/ 状態!mumble-discord status/ 再接続refresh
モードとスケールの話
MODE は3種類あります。
- constant … 起動時から常時接続
- auto … 両側にユーザーがいるときだけ自動接続
- manual … コマンドで明示制御(本記事の設定)
そして重要な設計上の限界: このブリッジは 1インスタンス = 1ギルドです。複数のDiscordサーバーを1つのBotで捌くことはできません(同一トークンを複数プロセスで同時IDENTIFYするとDiscordが弾きます)。
「ずんだもん」のような読み上げBotが何万サーバーで動くのは、音声を生成してDiscordに流すだけ(一方向・外部鯖なし)だからです。ブリッジは双方向 + 外部Mumble + 「1ユーザー=1チャンネル」制約があり、多ギルドを1Botで捌くには、ギルド数だけMumble接続を張るマルチテナント実装を自作する必要があります。数十ギルド規模なら、素直に1ギルド1インスタンスで回すのが現実的です。
7DAYS.JP の Mumble に接続する
7 Days to Die の日本ファンコミュニティ 7DAYS.JP では、この仕組みを使ってあなたのDiscordを私たちのMumbleに接続できるようにしています。専用の連携ボットが、あなた専用のMumbleチャンネルと接続情報を自動発行します。
- コピペ用の設定ページ: Mumble×Discord ブリッジ 導入ガイド
- ゲーム内の位置音声について: Mumble ボイスチャット 手引き
ゲームに入っていない人も声の輪に入れる、ゆるい交流の入口としてどうぞ。