2018-06-07 No More WhatsApp

So, I want to move away from WhatsApp. What should I tell my friends and family?

Or we could use XMPP. I could self host.

@switchingsocial suggested I take a look at Ring. It looks interesting!

@RussSharek suggested Rocket.Chat or Zulip. @Nuntius said that Rocket Chat wouldn’t federate. Well... it might still work, I guess?

Right now, though, Signal doesn’t look too bad after all!

I’ll take another look, tomorrow.

Matrix and Riot

Matrix is the cool new thing but Riot is a client I don’t find appealing. One particular concern I have with Riot is that some of the people I want to chat with teenagers in my RPG group and when I use Riot I’m confronted with a huge list of public rooms and I’d like to avoid that.


The advantage of Wire and Signal over Threema is that they are Free Software. Or parts of them, at least. The advantage of Wire over Signal is that you can sign up with multiple accounts. But I was unable to do it!

I had Wire installed on my phone and decided to try and create a second account. But their website shows you stuff depending on your browser and I could not find a way to do it. When @aendi sent me the direct link to create an account on their website, it showed me a blank page, using Safari on the iPad I get a message telling me to download the latest Google Chrome, Mozilla Firefox, Opera or Microsoft Edge; using Google Chrome on the iPad doesn’t work either, even if using “Desktop Version”. And on the phone itself, I cannot create a second account because the phone number is “in use” and when I try to remove it from my existing account I cannot (and I think there’s a message telling me more somewhere hidden behind the number keyboard on iOS which I can’t read).

Needless to say, this is frustrating. So at this point, Wire is at the same level as Signal, for me: one account tied to my phone number.


Many people have suggested XMPP and some have suggested self hosting. @codingquark suggested installing Prosody on Debian. So I did that. I went through the config file and things were looking good until I came to the section about chatrooms. This is pretty essential for me. After all, that’s what WhatsApp and Threema both offer and it’s the killer feature. It allows family channels (for all the overlapping sets of an international patchwork family), various groups for all the disjoint interest groups, gaming, school, whatever. But XMPP must have added this with a completely different use case in mind. I’m looking at the configuration instructions, which point me to the chatrooms instructions, which point me to the DNS instructions because chatrooms happen on a subdomain. This puts more burdens on me and is very annoying.

Well, I did all that. And after getting all the TLS stuff right, here we are: In ChatSecure, I add an account: alex@campaignwiki.org, with a password – the same I used to create it using prosodyctl adduser alex@campaignwiki.org, and click on the check mark...

And watch the logs on the server...

Jun 07 23:49:42 c2s5562d9922ee0	info	Client connected
Jun 07 23:49:42 c2s5562d9922ee0	info	Client disconnected: closed

That’s it. ChatSecure doesn’t realize this, however, and the wait animation keeps spinning. This is super sad!

Perhaps self hosting is not the answer.

@megfault suggested I just use established servers. @nipos suggested jabber.de, and he told me about two other clients: Zom is supposed to look “like an normal messenger” and then there is Conversations (for Android). I think on iOS the client to use would be ChatSecure.



Regarding TLS...

@algernon said: Interesting. I had no trouble with TLS. Grabbed a cert from LetsEncrypt, prosodyctl --root cert import /etc/letsencrypt/live, and done. The last step is important, ’cos Prosody by default does not have access to the LE certs.

See https://prosody.im/doc/letsencrypt

@ckeen said: If you have enabled http_upload and http you can try that port with a web browser to check whether the certificate is correct. The default port is: 5281 for TLS

Regarding encryption:

@algernon said: I used the Prosody 0.11 packages via stretch-backports, the default config worked out of the box. The “roster” and “pep” modules need to be enabled for OMEMO. For encryption to work, you will have to first log in with a client that supports encryption (Dino, Empathy, Conversations, Converse.js were the ones I found working, Movim did not support OMEMO).

@ckeen said: The conversations client site has a list of peps you should enable for the best experience.

https://conversations.im/#xmpp and compare with https://prosody.im/doc/xeplist

@algernon also posted their config. Very cool.

Thank you both! 🙂

– Alex Schroeder 2019-03-13 08:42 UTC

@polychrome linked to a post about setting up a mobile friendly XMPP server: ejabberd vs. Prosody.

TL;DR: Use ejabberd. Set up a cron job to trim message history and network activity logs - they will go out of hand.

Back in 2018 @mbirth and @jrswab had both mentioned ejabberd, too.

One day, maybe. 🙂

– Alex Schroeder 2019-11-24 09:09 UTC

Please make sure you contribute only your own work, or work licensed under the GNU Free Documentation License. Note: in order to facilitate peer review and fight vandalism, we will store your IP number for a number of days. See Privacy Policy for more information. See Info for text formatting rules. You can edit the comment page if you need to fix typos. You can subscribe to new comments by email without leaving a comment.

To save this page you must answer this question:

Just say HELLO