I used to give talks about XMPP. Back then I was sure Jabber would win — an open, federated, standards-based protocol for real-time messaging, the way email is for mail. It didn’t win. The walled gardens did, and today “chat” means a dozen incompatible silos, each with its own app demanding a slice of your phone and your attention.
But the protocol never died. And lately I’ve had the itch to come home to it. So I stood up my own XMPP server.
My new address: ralph@mayer.rocks
It runs Prosody on my existing YunoHost box, federates with the open network, and does all the modern things you’d want — synced message history, mobile push, media sharing, group chats, OMEMO end-to-end encryption.
Getting there was more interesting than “click install.” I paired with Claude (Anthropic’s coding agent) for the whole thing, and what began as deploying the YunoHost Prosody app turned into a proper debugging session. The stock package scored 91% on the XMPP Compliance Suite; I wanted 100%, and along the way we turned up some real bugs:
- Direct-TLS (XEP-0368) was silently broken. The listener on port 5223 had no certificate configured, so every handshake failed — the compliance test could never pass, even with the SRV records correct. STARTTLS worked, so nobody had noticed. One config line fixed it.
- A community module with an undocumented dependency that quietly failed to load.
- SRV records the package never registered — plus a fun quirk where YunoHost mangles SRV records when pushing them to Porkbun.
We fixed all of it and hit 100% compliance — direct-TLS both ways, SASL SCRAM downgrade protection, the lot.
The part I’m happiest about: it went back upstream. Rather than keep the fixes to myself, we sent them as a pull request to the YunoHost Prosody package, so the next person gets a server that passes compliance out of the box:
-> YunoHost-Apps/prosody_ynh #79
That’s the whole point of the open network, really. You don’t just consume it — you leave it a little better than you found it.
So: if you’re on XMPP, add me — ralph@mayer.rocks. And if you’re not… maybe it’s time to come home too.