Remix.run Logo
Running My Own XMPP Server(blog.dmcc.io)
92 points by speckx 3 hours ago | 43 comments
skerit 2 hours ago | parent | next [-]

> Most of my contacts made the switch, and I’m now at roughly 95% Signal for day-to-day conversations

Years ago, I set up a Matrix server. I got some people to migrate, but ultimately even my husband stopped using it because the UI and accessibility of all the applications was so poor (and he has very bad eyesight, so this was a dealbreaker)

Looking for another alternative, I ended up with Telegram. It was pretty open, easy to work with, had great UI and even a ton of funny stickers and emojis, so I got nearly all my friends to migrate. I did NOT go for Signal because I do not need end-to-end encryption all the time, and having all the same conversations available on my desktop as well as on my phone was important, and still is. Unfortunately, it's also run by a severe weirdo.

So yeah, I'm not really sure what to use now.

Insanity 19 minutes ago | parent | next [-]

Telegram is almost on the opposite end of the spectrum of Matrix & Signal so I wouldn’t really consider it an alternative.

simgt an hour ago | parent | prev | next [-]

Recently came across FluffyChat (https://fluffy.chat/), which works on matrix and has funny stickers and emojis ;)

WD-42 27 minutes ago | parent [-]

I've been using fluffychat for over a year. It's a nice interface and the client I used to convince less technical friends and family to give Matrix a try. Unfortunately major functionality like being able to send images becomes broken for long periods of time https://github.com/krille-chan/fluffychat/issues/2497

Arathorn 2 hours ago | parent | prev | next [-]

On the Matrix accessibility side, Element X has improved loads over the years - https://element.io/blog/helping-to-get-everyone-in-their-ele... and https://element.io/blog/element-is-accessible-by-design/ etc.

Ar-Curunir 28 minutes ago | parent | prev [-]

Signal supports desktop clients now, no?

MYEUHD an hour ago | parent | prev | next [-]

Snikket ( https://snikket.org/ ) is an easier way to self-host an XMPP server. It's a pre-configured Prosody server in a docker image, and you can use it with any XMPP client you like.

> I still use Signal for most day-to-day conversations and I’m not planning to stop.

You can run a Signal-XMPP gateway. See https://slidge.im/

This will allow you to use your Signal account from your XMPP client. Bridging audio / video calls isn't currently possible. But most other feature work across the gateway.

Semaphor 23 minutes ago | parent | next [-]

> Snikket

I once looked into that and it just confuses me, it’s XMPP but requires an invite? And the snikket client only works with snikket servers, yet it’s actually all based on prosody and conversations? Everything about the project has alarms going off for me.

Trollmann 9 minutes ago | parent [-]

Invite only isn't that unusual for personal/friend&family servers. The author also set that in their prosody config. The snikket client works with many different XMPP servers, why wouldn't it? As you mentioned it's based on Conversations and for iOS on Siskin.

digiown 38 minutes ago | parent | prev [-]

Obvious note but if you run this on anything other than your own computer it nullifies E2EE.

jszymborski 35 minutes ago | parent | prev | next [-]

> OMEMO is built on the same encryption that Signal uses, so I’m comfortable trusting it.

I'm not saying that you shouldn't trust OMEMO (we all have our own threat models), but OMEMO and Signal have fewer similarities that people often assume and has some important caveats [0].

[0] https://soatok.blog/2024/08/04/against-xmppomemo/

seba_dos1 2 hours ago | parent | prev | next [-]

I've been hosting a ejabberd instance for a few people for almost a decade now. It just works, takes close to no resources and needs almost no maintenance - just some trivial config checkups when migrating to newer major releases.

Around the same time I tried hosting a Matrix server with Synapse, but quickly stopped. It consumed a lot of resources when doing almost nothing, and it stopped running after an upgrade with some non-obvious error message, so instead of reanimating it I just abandoned it and moved to matrix.org with my personal account.

yosamino an hour ago | parent | prev | next [-]

I've run an XMPP server in various states of professionalism for around 20 years now. From mom's basement all the way to a colocated server with a similar setup that's described in the post.

The only caveat I have not been able to solve is hosting an xmpp server for a different domain, like it's possible with email.

A client connecting the account joe.doe@example.ORG will find the server it wants to connect to via SRV to be , e.g., xmpp14.example.COM and expect a TLS certificate for "example.ORG" which that server does not have (nor can/should easily get) - which makes sense in a lot of ways, but limits the ways one can offer hosting services.

If anyone has creative solutions I'm all ears.

nicoco an hour ago | parent | next [-]

I know at least two services that offer hosting with your own domain: https://my.snikket.org/ and https://account.conversations.im/domain/ so I suppose it is not that complex to setup.

yosamino 20 minutes ago | parent [-]

Correct, but that means you cannot share that domain securely with, let's say, a website. No ?

singpolyma3 an hour ago | parent | prev [-]

You need a certificate for the domain you are going to serve of course. You can get one with ACME DNS challenges pretty easily (I have my clients set up a CNAME for the _acme-challenge subdomain of their domain).

yosamino 21 minutes ago | parent [-]

I worded that poorly.

Yes, that is of course correct. But that means that your clients have to trust you without technical safeguards, that you will not use this to get for certificates for purposes other than XMPP.

Which, in my mind, is a problem if the domain is not used just for XMPP, but lets say for a website as well.

elminjo 37 minutes ago | parent | prev | next [-]

I don’t know. The only good solution would be if all messaging apps used the same protocol so everyone could be reached. But right now it is a mess. We can’t even message each other easily. It’s ridiculous. But what am I talking about? We can’t even agree on the same measurement units.

yosamino 14 minutes ago | parent [-]

> The only good solution would be if all messaging apps used the same protocol so everyone could be reached.

That's exactly what XMPP was created to solve, an open standard that could be implemented by anyone. For a while it even looked like there was a chance for that to work out. Whatsapp, Google Talk, Cisco Jabber, and some others used to be based on XMPP.

Unfortunately it didn't quite pan out that way.

toastal 37 minutes ago | parent | prev | next [-]

XMPP has been great to run on NixOS… the servers uses so few resources compared to something extremely heavy like Matrix. The Movim client has been wonderful too allowing users to have calls/sharing from chatrooms (MUCs)—supporting a pretty new XEP in the XMPP space—which means there’s no good reason to be on Discord anymore if you care about the freedom/privacy of yourself & your communities.

WD-42 an hour ago | parent | prev | next [-]

I’ve been running a matrix server for about 2 years for family. It’s… ok. Clients are bad. Right now nobody on iOS can send images because there is a bug in fluffychat preventing it. Kinda defeats the purpose of a chat for sharing baby pictures. Synapse is a beast. It’s basically taken over my entire VPS.

Joining rooms of various FOSS projects has been nice, but honestly I wish they’d all just stick to libera.chat

This article makes me wonder why we collectively ditched xmpp for matrix when it seems like the protocol is still miles ahead?

jamiemallers an hour ago | parent | next [-]

The XMPP vs Matrix question is really about where the complexity lives.

XMPP puts complexity in extensions (XEPs). The core protocol is simple but you need to cherry-pick which XEPs your server and clients support, leading to fragmentation. Two XMPP clients might support completely different feature sets.

Matrix puts complexity in the protocol itself - the DAG-based event graph for federation is elegant but expensive. Synapse eating your VPS is the direct consequence of that design choice. Every room maintains a full causal history, which is great for consistency guarantees but terrible for resource usage.

The ejabberd comment in this thread is telling - "just works, takes close to no resources, needs almost no maintenance" for almost a decade. That's the XMPP experience when you accept the tradeoffs.

I think we ditched XMPP not because Matrix was technically better, but because Matrix arrived with a better story at the right time: a single reference client (Element) that actually worked, a clear spec (not 400+ optional XEPs), and federation that felt more like email than like "hope your server supports the same extensions."

The irony is that both protocols now face the same existential problem: your contacts won't switch. The network effects of WhatsApp/Signal/iMessage are the real enemy, not protocol design.

singpolyma3 an hour ago | parent [-]

> Two XMPP clients might support completely different feature sets.

This is of course true of Matrix as well. Just because you document everything in one place doesn't mean every app will support it all. Or that every app will even want to support it all. If every app were exactly the same there would be no point in having multiple apps, after all.

> The network effects of WhatsApp/Signal/iMessage are the real enemy, not protocol design.

Absolutely.

dannersy an hour ago | parent | prev [-]

I am genuinely interested in hearing why we collectively ditched XMPP. I would love to hear someone who has been in the weeds on the development or even just following closely.

Edit: Seems someone beat me to it with a good reply.

singpolyma3 an hour ago | parent | next [-]

> I am genuinely interested in hearing why we collectively ditched XMPP

We didn't. It was never very popular, and is today more popular that it has ever been.

WD-42 39 minutes ago | parent [-]

It wasn’t popular? I remember using pidgin to talk to friends on google chat, facebook and my work contacts. It was glorious.

I haven’t had a reason to use an xmpp client in over a decade.

toastal 30 minutes ago | parent | prev [-]

Decent overview (& more broadly but the heart is about XMPP & good ol’ capitalist corpo greed): https://ploum.net/2023-06-23-how-to-kill-decentralised-netwo...

maltris 2 hours ago | parent | prev | next [-]

I ran ejabberd, later prosody for a while. Eventually I stopped because the contacts went away and it was just not easy enough to set up for ordinary people.

Sad because the idea of running a federated chat service for your family and them having all their contacts there, is great from a data ownership point of view.

Went back to use a mix of WhatsApp, Telegram, Signal and Messenger because apparently there is always some people not wanting to use one or the other service, or only using one of them.

nicoco an hour ago | parent [-]

Revive your prosody and set up https://slidge.im/ for Telegram, WhatsApp and Signal. It's not a proper solution I know, but at least you'll keep on using XMPP clients and they'll get better because they will have one more user at least. ;)

slmkbh 2 hours ago | parent | prev | next [-]

Google Talk and Facebook Messenger both used to be XMPP, and I used Pidgin for both, wonderful times...

frizlab 2 hours ago | parent | next [-]

I used to use iChat AV, which was amazing (I still miss it).

singpolyma3 an hour ago | parent | prev [-]

Facebook had an XMPP compatible bridge for a subset of their chat functions for awhile, but never "was XMPP".

WhatsApp OTOH still is a fork of XMPP.

morning-coffee 2 hours ago | parent | prev | next [-]

If the premise contributing to the conclusion to run their own chat service is:

> But Signal is still one company running one service. If they shut down tomorrow or change direction, I’m back to square one.

Aren't they in the same boat now with Cloudflare and Let's Encrypt?

frizlab 2 hours ago | parent | next [-]

Yes, probably but they are “easily” replaced. More easily than Signal in any case.

Also if we go down this road, we’re all depending on our internet access provider at the very least too! At some point we gotta know when to stop trying to be fully independent from the rest of the world. He chose there.

elric 2 hours ago | parent | prev | next [-]

There are obviously other CDNs (or whatever Cloudflare considers itself to be these days) and other certificate authorities. They are all interchangeable thanks to open protocols (HTTP, TLS/ACME in this case). Contrasted to Signal: there are no other implementations.

yosamino 2 hours ago | parent | prev [-]

Not really. If their own their domain, then it's possible to swap out CF and LE for different companies.

That would certainly be a very annoying event, but not an unrecoverable one.

kuon an hour ago | parent | prev | next [-]

Give me linux-> mobile voice call and linux-> Linux screen share and I would be happy.

Also plugin for gif selector.

But other than that, my ejabberd instance has been running for years with no effort.

toastal 26 minutes ago | parent | next [-]

Have you tried the Movim client? https://movim.eu

nicoco 31 minutes ago | parent | prev | next [-]

Web client, but I think movim has GIF picker and screensharing features. It even does multiparty video calls, compatible with dino. Since it's P2P, it does not scale well to a lot of users, but the developer is working on SFU support for larger video calls.

yosamino an hour ago | parent | prev [-]

> linux-> mobile voice

I've been using Dino on Linux to talk to Conversations/Monal with video and it's been working pretty well. Do you have a different experience ?

digiown 39 minutes ago | parent | prev | next [-]

Buried here is the fact that Gajim seems to have had big updates lately. I might just switch back to XMPP from Matrix, as all the matrix clients on Linux suck frankly. Conversations on Android is significantly better than any Matrix client I've used.

WD-42 25 minutes ago | parent [-]

Have you used Fractal? It's not perfect, but it's a Linux client that works better than any other client I've used on mobile.

iamcalledrob 2 hours ago | parent | prev [-]

Hosting chat infrastructure is surprisingly hard, but the real challenges emerge beyond C10K+ scale.

So self-hosting federated instances like this is pretty interesting way to scale.