Hey guys, I recently started to play with the thought to deploy a Snikket (XMPP) server on my VPS to play around with it a bit. I already had a Matrix (Continuwuity) server running on an older VPS with Docker at one point. But besides me using some bridges (WhatsApp, Signal etc.) it didn’t see a lot of use. Originally I had set it up with the goal to replace Discord, but so far couldn’t get my small group of gamer friends to switch to something else.
What are your experiences with XMPP (doesn’t have to be Snikket) or Matrix? Would you recommend one over the other maintenance and/or usability wise?
Just curious what the community’s current sentiment is in regards to private self hosted messaging services 😊
couldn’t get my small group of gamer friends to switch
The hardest part of any change right there.
To me, XMPP is still the instant messaging gold standard. Everything has an app (or seventeen apps) supporting it, and it tends to just work.
My experiences with XMPP are: very good.
Matrix does more. I have used it on and off for fancier online meet-up type stuff. As others have said, it is relatively new, and that has various costs and drawbacks.
Incidentally, I just setup my own Snikket server earlier today. Worked like a charm 😌 I haven’t done a whole lot with it yet, but I like its clear admin interface and the concept of circles. I had some issues with video calls (frozen picture) though.
I haven’t use XMPP much. Matrix is kind of a nightmare. It has most of the important things of a chat platform but as others have said, is a pain in the butt to use. Encryption issues, slow loading, images not loading, etc. It’s also basically on-par with something like WhatsApp, security-wise, in that your message content is encrypted but pretty much nothing else is, and when 90%+ of users are in the matrix.org domain anyway, that’s not acceptable, in my opinion.
I would recommend SimpleX instead.
XMPP is the best among the listed options, although ??? is not that far behind (or wouldn’t be, I still can’t find a mobile app, does anyone know one???). Good servers include Snikket, ejabberd and Prosody. It’s also the best fit for a small and/or private installation because it’s quite light (not lightweight like IRC, but still light), whereas Matrix is a nu-protocol and this quite hefty on resources, and honestly I have never seen benchmarks on what running a ??? service is like, not even for the official Docker container.
There are multiple good XMPP mobile apps for Android: https://joinjabber.org/docs/apps/
The story on iOS is somewhat less good right now, but Monal is ok and Movim works quite well as a PWA in Safari.
XMPP is generally nicer to host due to lower resource requirements and better server management in general. The mobile apps are also more snappy and need much less battery, plus notifications are more reliable.
Matrix has somewhat more public rooms of FOSS projects you can join, but typically these projects are also available on IRC, which you can join via the excellent Biboumi gateway for XMPP.
I hosted Matrix for several years. It mostly works fine, apps look consistent, bridges are nice, but is a pain in the ass in some aspects. Onboarding sucks. Data needs constant cleanup (or gigabytes of storage, even for a dozen users). Sometimes notifications are delayed hours. Sometimes images don’t load.
New Element Server Suite is more corporate-oriented, requires Kubernetes (!) to run, includes defacto mandatory services. Element X has no feature parity with Element Classic, especially calls.
I ran Snikket many years ago for a few months. But now they have smooth invites/onboarding, admin panel, and always had reliable notifications. Even bridges through Slidge. I plan to switch back to Snikket soon.
Nice blog post you wrote there, I like how you go into some details about the problems you faced hosting Matrix.
Notifications are instant for me, using a self-hosted Unified Push server too.
XMPP is great usability wise. Not sure what server is the best.
A lot of the people reporting issues with Matrix being slow and resource heavy are reporting issues with Synapse, which is Element’s big Python implementation. My Continuwuity instance, which is a server written in Rust, uses a fraction of a CPU and a total storage in the hundreds of megabytes. A few less features, but it has most of the ones people care about.
Can’t speak for the Synapse hosting, as back when I hosted one myself I directly started with Dendrite (was not really that feature rich) and switched to Continuiwity soon after. And I have to agree, ran like a charm on my VPS and didn’t use a ton of resources. Granted, I was the only user so can’t say how the usage would have increased with more users active.
Personally I like XMPP over Matrix because
- Matrix clients aren’t great (even element is buggy as piss on my phone and a shitty electron app on linux)
- Matrix is too difficult for “normal” people (I agree they should get good but they don’t and what good is a chat app without recipients).
- Matrix public rooms have a CP problem, and as such I can’t recommend people join it just in case, I don’t need my mom seeing that shit.
- Matrix was started as an Amdocs project before they defunded it and the lead dev went to form The Matrix Foundation. Amdocs is a Mossad affiliated company that infiltrated American telcom companies long ago. Matrix also pisses metadata to any server it federates with, including matrix [.] org, and I have no proof that Mossad is spying on that metadata but I have no trust either, nor proof that they aren’t, so I can’t trust matrix anymore.
Though XMPP also has had it’s own problems for me, so at the moment it’s my fallback and I’m trying out Delta Chat which I have been loving.
Matrix clients aren’t great
IMO the main advantage that Matrix-Element has for normal users is the branding: Element is Element on the web, Android and iOS. (Snikket is trying to do the same for XMPP though)
Matrix is too difficult for “normal” people
Agreed. Simple user+password login to a hosted (non-matrixdotorg) server takes 5-6 pages to click through.
Matrix public rooms have a CP problem
I was spammed with racist copypasta on XMPP once too. But being in large Matrix chats guarantees being invited/messaged.
…Matrix also pisses metadata to any server it federates with, including matrix [.] org
Replication+sync is a strange decision for chats. It sort of makes sense for slower fediverse posts, but creates a lot of strange scenarios and privacy issues with chats. Also, matrixdotorg is used for key backups and vectordotim is used for integrations IIRC.
IMO the main advantage that Matrix-Element has for normal users is the branding: Element is Element on the web, Android and iOS.
I agree, though Delta Chat has this too, it’s the same on linux/mac/win, android, and iOS. There’s also Arcane Chat for android developed by one of the devs of Delta Chat as sort of a testing ground but that’s like an if you know you know thing, like my mom just thinks we’re all on Delta Chat. One thing is they don’t have a web interface afaik, you need the app.
Simple user+password login to a hosted (non-matrixdotorg) server takes 5-6 pages to click through.
And the recovery passwords and all that just seem to be out of reach for those who just use hunter2 for everything, if the complaints I got are indicative if most people.
I was spammed with racist copypasta on XMPP once too. But being in large Matrix chats guarantees being invited/messaged.
Good news for Delta Chat is they don’t really do groups like that, you can group chat but it’s more for like friends and family than strangers, I see that as a win in this use case, where if we need xmpp/matrix style public groups we can fall back to xmpp. You also have to accept chats before they go through and there is no discoverability so you won’t get random drive bys.
Couldn’t agree more with the first two points, especially the second one when it comes to adaptability by my non-techy friends and especially the wife-approval-factor.
I only tried out Delta Chat like two years ago linking it to a secondary Gmail account. Don’t think this really fully utilized it to its full potential. What do you like most so far about Delta Chat?
They no longer recommend using a traditional email account, instead recommending chatmail servers like these (there’s more as well, but they have this small list to choose from in the app or you can bring your own). They say if you have to use traditional email use a dedicated account for delta chat, not one that also gets traditional email.
I like how they are trying to address metadata as much as possible, the onboarding is so easy my literal mother can do it, video/audio calling is in beta and works pretty well (some glitches, but it’s in beta), the webXDC stuff is cool but I don’t really use it yet, and I’m sure I’m forgetting something.
I ran Matrix for like a year, and pretty much hated every minute. It was fragile, complicated, and incredibly, bafflingly resource intensive. Matrix is an overengineered nightmare in my opinion, and it seems to be quickly distancing itself from self-hosters while pursuing enterprise usage. Neat technology, horrible implementation, misguided company.
XMPP is a breath of fresh air in comparison. Just like we still use email everywhere (even for authentication nowadays, fun!), XMPP is not obsolete simply because it’s older. It’s a solid foundation, plenty extensible, and does almost everything I can imagine needing to do without unnecessary complexity.
Matrix’s bridges are its killer feature, and it’s nice… when it works. But it’s simply not worth the headache of dealing with Matrix, in my opinion.
A lot of things people say about matrix don’t apply to conduit. I’ve run it on an Intel Atom d2550 and it ran fine.
What people say about Synapse is also somewhat outdated. These days it isn’t actually that much worse than Conduit (or forks), the main issue is that when you start joining older and bigger rooms the resource use goes through the roof, and that is also a problem with Conduit etc. Ultimately, this is a protocol issue and not an implementation issue.
I’m running continuwuity, and ejabberd as text-only IM servers to talk to some communities. The latter (and XMPP in general) has more moving parts (more ports, SRV records, etc) to set up, but messages deliver much faster and take much less resources. They’d probably both run fine on a VPS with the proper tweaks anyhow - the Rust-based server makes Matrix actually not suck after all
For bridges, I’ve used maunium-discord as a Matrix bridge in the past, and trying out slidcord right now. I think Matrix bridges still got better UI/UX due to more supported features (spaces/threads) and coherent clients, though let it be known Slidge is a hobbyist project. If your chat server is mainly for bridges, stick to Matrix and consider disabling federation. Also Matrix if you’d like your friends to switch over from Discord - it has more Discordesque features like custom emojis/stickers and SFU-backed group calls
Though this doesn’t mean I’m unrecommending XMPP. I do appreciate its clients’ snappiness, in-band notifications, the general ephemerality of its chats, and unrivaled efficiency. I kinda wanna write a blogpost comparing both software and protocols, but right now I don’t have an opinion about one over the other. They’re both cool albeit they both leak different metadata differently
Unfortunately there is no “Discord, but (federated/selfhostable) E2EE FLOSS” and at this point I don’t understand why. There isn’t even “Discord, but (centralized/proprietary) E2EE”.
Erm… Yeah, that’s matrix with encryption enabled on the room.
So I’m going to be wierd one but I prefer Matrix more. Though I tried both. So with XMPP most often I had with custom ports setup and in some cases they did not worker well if you have reverse proxy in front of it so in my case it required tinkering with xmpp and ssl setup to get it right. As resource usage I agree it’s lightweight. Now moving to Matrix I used to be long time Synapse user then I moved to ESS setup it had higher first time setup but once you get running it’s working wery well. The new MAS system improved user onboard now I can share link and registration token and user can register like on many websites no manual work need. Also they added new admin panel but there is one pain here some things are locked behind Pro with I’m not fan off. So ye for me Matrix is much better but it depends on your hardware and target number of people.
No weird opinions, you do you and if Matrix suits your needs, great. In general I like the idea and concept behind Matrix, was a bit clunky to get it going initially but afterwards, with Continuiwity as backend server I have to say I ran quite smooth. I guess for a small homelab/self hosted setup with maybe a hand full of users, XMPP sounds easier to maintain. But I guess I’ll have to find out, probably going to deploy Snikket or Ejabberd for a test run.









