Anyone self-hosting XMPP/Matrix?

Hi all!

I wondered if anyone here is self-hosting a chat service like XMPP or Matrix. If so, what’s your experience like? How was it to deploy/maintain? And (importantly) how has the end-user experience been? Have your friends/family joined?

For some context on my use case: I’ve been using discord for scheduling in-person d&d games, movie nights at my house, etc with a bunch of in-person friends (we’ve got ~50 users, all local). We also share memes now and then, but don’t really use voice/video calling. So far, I’ve liked how accessible/normie friendly discord is… like, if I meet someone at a local game store, it’s super easy to add them to our server. They usually already have an account. I’ve always hated the privacy implications of discord, but it’s been a tradeoff for ease of use.

With upcoming changes to discord’s identity verification, that tradeoff is becoming harder to justify. I love the idea of self-hosting chats… many of us are involved with local activist groups, so a self-hosted e2ee solution would be ideal.

My main concern is how the end-user experience is. I know XMPP/Matrix clients don’t really have feature parity with discord, but we don’t use many of the features anyway. I’m a bit fearful that asking non-technical people to make an account and download a client will be a non-starter if there’s any friction whatsoever– even if that friction is just “this app looks old/weird.”

I think my best bet is to try deploying Prosody/Snikket (it seems like XMPP is less of a headache than Matrix? also less resource-intensive?) and then testing out a bunch of clients to see if any are polished enough for my group’s use.

I’m sure I’m not the only one thinking about this, given the recent news.. I’d love to hear if anyone has some experience!

I self-host my own XMPP server and it’s been quite nice for me, but I’m also rather technical and so are the other people I have been talking to. I’m really unsure what the experience of XMPP would be for non-technical users, maybe not very good. XMPP has a lot of clients that are native, which means that they are rather lightweight, but I suppose non-technical people would just find them to feel old. For Android I think Conversations is a pretty sleek client though.

Matrix would probably feel more “modern” when it comes to its web-based clients, but… UX is really not good, and even as a technical user I feel frustrated using it. Especially when it comes to having an encrypted group, the issues with people’s keys being messed up and being unable to decrypt messages goes up the more people you have in a group, and most larger Matrix rooms have encryption disabled for that reason (most Matrix bots also only work in non-encrypted rooms).

XMPP has about the same issue though, it’s just something you’ll have to overcome if you want E2E-encryption I guess. If you have everyone residing on the same server though and you trust the integrity of that server you can also have room encryption disabled - data will still be TLS encrypted in transit even when it’s off. Then put full disk encryption on the server to protect the data at rest. Not 100% ideal but obviously an option.

4 Likes

I self-host a synapse server (matrix) and it’s really turned me off the whole protocol. I’ll still check my channels every so often, but I’ve found matrix to be slow and buggy, and it has a whole host of major issues that are not likely to even be fixable.

If you want e2ee, Signal is your ONLY good option. It is centralized, but that gives you anonymity and, unfortunately, there simply is NO OTHER good e2ee implementation. A well known infosec blog put out an article earlier today going over some of the reasons why nothing else is up to snuff, in response to the recent discourse:

3 Likes

I haven’t had any personal experience with self-hosting servers but I like this article a lot.

Personally, I wouldn’t use Matrix, what with how it’s been fumbled and the moderation nightmares as mentioned here.

1 Like

Thanks for the replies and articles, all! As a test, last night I spun up a Snikket server (which is preconfigured Prosody), and so far I’ve been pretty impressed with its presentation.

It’s pretty basic, so it still remains to be seen if my friends will actually use it, but it’s got a pretty slick “invitation link” feature for easy on-boarding and account creation out of the box. I also like that the invitation link sends mobile users to download Snikket’s own branded XMPP client for a more consistent user experience across platforms. From what I can tell, the Android version is just Conversations under the hood, which is decently sleek like @ROllerozxa said.

I sent an invite link to my parents, and they were able to join and start chatting without problems, so I’m hopeful that’s a bellwether for other non-technical people too.

5 Likes

I’ve been looking into Snikket specifically, so this is cool to hear about! I also liked the sound of the invite feature for ease of use, and circles for separate (but potentially overlapping) groups of people.

5 Likes

I know it’s a week since this was posted but I thought I’d sign up to say, try DeltaChat. It might help out with network effects as it’s basically a fancy email client, so it just runs off normal email infra and no new accounts or services are needed. Because it’s just email, established mechanisms like email encryption (default) and Push IMAP are used for notifications so it works well with DeGoogled phones as well. It has experimental voice support, but I would reckon something like TeamSpeak is better for that.

3 Likes

I’m running an ejabberd instance just for me. It’s not trivial but also not super hard. I also set up a bridge to IRC and Matrix for the chats I have there. It worked great so far! The only disadvantage are the clients which are not the most user-friendly ones. But all together, it’s much better than Matrix (with Matrix clients).

Ejabberd can also be run on multiple nodes if you want to.

2 Likes

I’m self-hosting XMPP via Prosody. I didn’t find it particularly difficult to set up, and it’s been pretty light on resources so far (it’s peaked at 70 MiB of RAM) though I’m only hosting one user (me). I like that my server is only responsible for managing recent information, so I won’t have to worry about resources taken up by a large message history, and I shouldn’t ever have to upgrade to better hosting. I really like it so far, and I’ve connected with a few friends that already use XMPP (and made some new ones in some chats I’ve found), but haven’t tried to get anyone new on there. I guess the important thing to me is that I have this thing that’s already set up and that I’ve already shown to work well enough in case I need it.

3 Likes

I tried around with Prosody myself after discovering a bunch of cool XMPP services. I found it very easy to set up as well and started adding things – a few gateways, a bot for our channels that would fetch random pictures and quotes, and so on. I’m pretty impressed how easy and fun that was.
Now, I’m not even using Matrix clients anymore although I’m administering a space there (not hosting anything!). It all runs through my XMPP account which makes using multiple services so much nicer, too.
I already started inviting friends long before hosting anything myself, so most of them registered on other servers. That needed some help in some cases. No problems between the servers, though. All very smooth :slight_smile:

1 Like

It’s been about two months since I’ve deployed my Snikket (Prosody) instance, and so far things have been going well! Some data points/thoughts, in case anyone else has a similar use case:

I’ve got about 20 active users so far, and monthly costs are only about $2-4 on the cheapest Digital Ocean droplet. I’m sure it would run fine on a raspberry pi, even with more active users (and if I decide to run this service long-term, I think that’s probably the way to go). The server management part has been quite painless.

As I mentioned in my earlier reply, Snikket’s invitation link feature is very slick. Because they maintain their own branded mobile apps, it (mostly) solves any hesitancy people might have with choosing a client for a decentralized service like XMPP. Since everyone is directed to download the Snikket app on account creation, it feels more like a product and less like a service. In other words, many of my users aren’t conscious that they are using XMPP… they are just “using Caminus’ chat app, which is called Snikket,” much in the same way they use other chat products– super friendly for non-tech savvy folks! Unfortunately, there is no desktop version with this same branding, so I’ve just been sending desktop users to Gajim.

Using Gajim (or other feature-rich clients) highlights some quirks within the Snikket ecosystem… it seems that Snikket’s iPhone app is bottle-necking the rest of their development. For example, emoji reactions don’t work on iPhone yet, so the feature is disabled on the Android app to maintain parity. But if someone uses an emoji reaction from the Gajim client, it allows Android users to emoji-react to that message. iPhone users don’t see any of this. I didn’t realize it at first, but this is somewhat of a big deal for my community :meow_headache: We’ve also noticed that the iPhone app is generally a bit more buggy than the Android version. It’s not so bad that I’d start directing iPhone users to download a separate client (again, the unified branding makes things delightfully normie-friendly!), but something to keep in mind. Overall, I’m still quite happy with everything!

2 Likes