← All posts

LAN Voice Chat with Mumble

2024-04-16

My kids, 11yo and 7yo, are really into playing Minecraft and Terraria together. But, being siblings, it doesn’t always go as well as anyone really wants it to. Sometimes, it’s just that they can’t be in the same room together. And since they both have fancy gaming headsets, they might as well get used to using voice chat.

But how?

It might be easy to give them Discord accounts and let them get to know the wide world of Shitty Internet Culture, Awful Desktop Software and Yay Notifications Forever, but that seems like a horrible idea. Besides, what kind of Tech would I be if I didn’t solve this problem by deploying software?

Enter: Mumble.

The Server

The server is called Murnur, and has an official Docker image.

In my case, I just plugged this into Portainer using their Docker Compose example.

(If, like me, you’re trying to copy/paste a reasonable looking docker-compose.json file while two kids are louodly wondering why this is taking so long, you might also miss the image: mumblevoip/mumble-server:<tag> placeholder in their example. I’ve replaced that with latest below.)

services:
    mumble-server:
        image: mumblevoip/mumble-server:latest
        container_name: mumble-server
        hostname: mumble-server
        restart: on-failure
        ports:
            - 64738:64738
            - 64738:64738/udp

Literally nothing to do but run that. The Docker logs will show a password for the SuperUser account, which you may want, but for our simple use-case here I never needed it.

The Client

Mumble has clients for Windows, Mac, Linux, iOS, and Android.

After running, you’ll go through an Audio Setup Wizard that’s fairly self-explanatory. Then it’ll ask for connection details.

Here’s the fun bit:

Since you’re doing this locally and not publically, feel free to just pick a username for the server. Mumble will generate a certificate that identifies you, and normally you’d want to back that up and register with the server and all that, but for my use case none of that really matters. I just had the kids type in whatever name they wanted, and bam, they’re in.

There’s a Root channel everyone joins by default. Others can be created, but since I’ve just got the two kids, it’s easy enough just to let them both be in that channel.

How’d It Go?

It’s been running faultless for a few days, with the only real issue being that the client likes to be restarted after the kids’ laptops resume from suspend.

This rocks. Way better than having my kids ask me to buy Discord Nitro for them.