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 😊
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.
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.
Do the voice call and video features work with continuwuity?
On desktop? Yes. On Element X? Not yet. Requires additional setup, as it’s not a core part of the homeserver
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.
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.
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 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.
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.
Would recomend ejabder as snickers takes over ports 80 and 443
You can actually change these ports if you run Snikket behind a reverse proxy according to their advanced configuration docs. But yeah, probably going with something else than Snikket as it doesn’t really suite into my current Podman/Traefik setup. At least not without a lot of tinkering which I don’t feel like at the moment 😅
In my experience matrix is a total mess with plenty of bugs, also uses quite a lot server resources. xmpp is lighter, easier to set up and works flawlessly, and seem also easier to proxy or do stuff like that with it. Calls are kinda messy to set up tho.
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
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.
Snikket user here, too. Have used it since maybe 2024 and are very happy. The only downside is the clients even if they are very good (especially Gajim and Conversations), but also video calls.
I got so annoyed with video calls I ended up with installing Jitsi Meet. Works like a charm with no issues with video, voice, rooms, screenshare, or chat.
So whenever I want to have a voice/video call with someone these days, Jitsi Meet is the only way to go for me. If the voice call need to have an extra layer of security, my Snikket server works good.
Mautrix supports puppeteering your Discord account, so it doesn’t matter if your friends won’t join matrix.
https://docs.mau.fi/bridges/go/setup.html?bridge=discord
I am currently doing this and it works well enough that I can see myself not opening Discord again, but it isn’t perfect. For that reason alone, Matrix wins in my book.
e: I am using Conduit for Matrix homeserver
It’s worth mentioning that it doesn’t support voice calls though.
That can be also done with a Slidge gateway for Discord on XMPP.
Used some of the Mautrix bridges (WhatsApp & Signal) in an attempt to combine all my messaging apps on the phone into one single app. Worked reasonably well I have to say.
The Discord bridge I never tried, mostly because my friend group is not really using the instant messaging part of Discord. We more or less only use it for voice chat while gaming or just some shit talking. Thinking about it, for this a TeamSpeak or Mumble server would probably be enough to replace our Discord usage 😄
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.
Nobody has mentioned mattermost yet. I haven’t stress tested it by any means, but I found it too be decent.
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.










