Roadside Picnic :::
  • Friends
  • About
  • Categories
  • Tags

>> Home / Posts / Computer

Hosting For Friends And No Profit

Becoming an XMPP and Mumble service provider

Intro

Pretty recently there was a big debacle about discord tying your username to your real identity. For the time being it appears they have rolled back to a more moderate position than forcing 100% of their userbase to upload their government ID, and everyone was glad to swallow the half-sized poison pill, but they would have been glad to swallow the original one anyway, people are suckers.

The friends who I mainly use discord to talk to are pretty tech-savvy, and over the years we’ve discussed the fact that there will be an inevitable paywall, locking down of features, ad injections, or other terminal form of enshittification and have looked into possible alternatives. This crisis gave us a reason to make the jump, and I’d like write down some of the choices made and their reasoning for anyone else who may need to get off that platform. Installation instructions and guides have been better done elsewhere, so I’ll skip most of the technical specifics.

What is our use-case?

Primarily, multi-user group voice calls to connect to while playing videogames on a desktop. Additionally, some sort of group text chat where we can ask ‘any gamers tonight?’. Ideally this text chat is accessible from mobile (split between iOS and android users). Even more ideally, screenshots can be shared over this text chat, some sort of chat history, although full sync isn’t strictly required. We do screen-share sometimes, but almost entirely for in-browser trivia games, which could be offloaded to posting screenshots in a text chat.

What programs can accomplish this?

We went with two, Prosody XMPP server for texting, and mumble server for voice chats. For client software, the default mumble client, gajim for xmpp on desktop, monal/conversations for xmpp on iOS/android. These were hosted on a cheap 5€/month VPS from netcup which gives 2 vCores, 4GB ram, 128gb storage, and a 1gbps ipv4 address in a datacenter near you.

Why these programs?

I have romantic nostalgia for IRC, but there’s no world in which normal people will go back to using it. I was scared off of trying to host matrix after seeing the install instructions, minimum resource usage, and horror stories from others. Signal’s self hosting seems to be more theoretically possible than something that is done by mere mortals. Jitzi meet’s self hosting looks reasonable if we cared more about making video calls and screen-sharing.

I was originally going to use snikket XMPP’s server instead of regular prosody on account of their ‘painless’ installation, but I originally was trying to test-run these programs on an old laptop offline, and snikket’s installation doesn’t work for that use-case! They’ve optimized ease of deployment so much that you end up not (easily) being able to test it out on a LAN! Fair enough for them, that’s probably the right decision, but it forced me to switch to prosody and deal with a much more hands on configuration. eJabbard seems like the right choice if you expect to have thousands of users online at once, so I skipped that option.

There are supposedly ways to do group calls on XMPP, but they appear new and poorly supported, so mumble, which is dedicated to doing video-game style voip seemed like the safer bet. It also meant I could disregard all the STUN/TURN stuff that XMPP can integrate with.

What configuration did I do?

Mumble is almost configuration-free (aside from opening a port in your firewall, TLS/SSL certificates, yadda yadda), and works with no hassle. Prosody on the other hand, gives you a great deal to chew on, you should watch a guide, read the docs, and think about what you want and need before going live.

For my own use-case, I didn’t use any sort of external SQL database, for the backend. I turned off any sort of user registration, all accounts will be made by me, ssh-ing and running the prosodyctl command. For ease of use, I enabled cloud_notify, mam, carbons. I also set up muc, upload, and proxy, with reasonable limits on message archive expiration and max file upload. I disabled s2s, as well as bosh, and websocket, but if someone complains about their job blocking XMPP traffic the latter can be useful for working around that. The STUN/TURN stuff also seemed like a pain which mumble would cover most of for our needs, so I didn’t bother.

What didn’t work?

Oddly enough, Lets Encrypt wildcard certs for Cloudflare, failed with error messages that I couldn’t get to the bottom of. I also tried to be clever and use
SRV records instead of good ’ol fashion subdomains with A records. Turns out if you do that and a different server is hosting your main web domain (cloudflare pages), and if your wildcard certs don’t work then you screwed yourself. Go with the standard subdomain and A record, save yourself some headache.

Iphone push notifications also didn’t work, out of the box iphones will only load old push notifications if you open the application yourself, but you can download and enable cloud_notify_extensions from the community module repository to fix that. Unfortunately, this requires s2s communication to be allowed (between your server and the server that serves apple push notifications). You can also install the restrict_federation community module to restrict s2s communication to the bare minimum. Thanks to the kind developers in the official prosody xmpp chat for being helpful and responsive to questions.

How well does the server run?

It’s been a few months now, I’ve had no need to do any sort of upkeep yet, the resource usage is so low that it’s indistinguishable from the bare ubuntu server OS, expect around 200-500MB of ram usage if you have a few people in an active voice-call and texting. CPU, storage, and bandwidth usage are almost non-existent on the scale of a dozenish active users. If you’ve got hundreds of people willing to use your XMPP or mumble instance, I congratulate you on tricking this many nerds into thinking that federation is important or whatever.

I’ve had no drop-outs, lag, or downtime (that wasn’t caused by me) yet, I know these cheap VM providers will usually throttle you, but my needs are so light that if it’s happening I can’t perceive it. I’ve also been using the server as an ssh proxy from time to time, and I’ll probably have it serve some git repos down the line.

How well do the clients run?

On account of being FOSS software by dorks, and for dorks, they’re all lightweight. Gajim running on windows defaults to sending an incredibly annoying pop-up and ding every time you get a message, that I’m learning is called a toast notification. Turn that off right away, tell your friends to turn it off.

Getting normal people to use these clients

I’m enough of a nerd to have the time, money, skill to do this, and also the firm belief that it should not be a requirement to upload my government ID to send messages to my friend on the computer. Maybe the top 3 of my most equally deranged computer-sniffers are willing to put up with an extremely bad user experience because they share the same moral framework as me. I mainly figured, my 3 friends would use this thing, 90% of my messages go to those guys, the Norman Normals are going to fall by the wayside. I’ll send them stuff over SMS.

Much to my surprise, the Norman Normals now outnumber the computer power-users on my server. It’s almost impossible to convince someone to download 2 separate .exes, and they definitely don’t want to hear about why it has to be 2 separate .exes, and they will consider terminating their friendship with you if you try to explain public/private key asymmetrical encryption to them. But if you can get those two .exes on their computer, it’s pretty smooth sailing. The worst hiccup was mumble-client defaulting to the wrong audio input on someone’s computer, and I’ve had that same issue happen on discord plenty of times in the past. I highly recommend if these are people you can hang out with, just go to their house and download the .exes for them, it’ll take you about 3 minutes to do, but everyone is extremely tired of already being told to install more crap at every turn. You can just put their passwords in for them and click the enable OMEMO button, and they’ll be happy after that.

I, Norm Every-reader Norman don’t have the computer skills to do this

Maybe you don’t, I do spend far too much time on the computer, and almost entirely looking at the terminal. But before this, the entire experience I had ‘hosting’ something was running plex. I also had no understanding of what a server was, my networking skills were on the level of getting confused every time I had to enter the numbers of a subnet mask, in short, I’m out of my wheelhouse here. If you’re interested enough in computers to bother reading this I’d bet you can do it. Or if you’re friends with any dorks running their own plex, bother them until they do it for you, they’re barely using the CPU their machine is serving .mp4s from, what could running one more program hurt?

What I would like to change

I feel comforted by the fact that if I screwed up some networking then the only thing that’s going to happen is my VPS is going to get DDOSed or have a bitcoin miner installed on it, and probably an angry email from my host provider telling me they’ve wiped my installation. But the end goal is to have these programs running on my own computer in my own home, with hopefully just a remote nginx forwarding traffic.

I also would like to add a jitzi meet installation to this stack, we’ve been using the public instance for the few times we’ve needed to screen-share, and it works well enough, and it runs in a browser. One big shortcoming with jitzi-meet is that it doesn’t seem to support sharing the audio output of the host’s shared screen with other users, not a big deal for us, but it means a watch-party type experience isn’t possible without some work-arounds.

∵ Redrick Schuhart ∴ 2026-04-22

  • Photo
  • Posts

  • Book
  • Computer
  • Sodas

RSS FEED | ATOM FEED | 2026 © Redrick Schuhart | No JavaScript used