Join Your First XMPP Server
You are probably here because we had a chat about privacy, secure messaging or because you’ve told me that you are just tired of the big companies and their messaging apps. And maybe I tried to convince you to try out a new messenger and to give XMPP a shot. After I spoke about federated services and self-hosted applications, I hopefully did enough to fuel a small spark of interest for this specific topic. Well here we are - I will try to give you a brief explanation on how you can use this XMPP invitation link that I gave you and that somewhat looks like an e-mail address. So if already self-host or work in IT, this post might not be relevant to you. I just need a place I can keep sending my friends, coworkers, and acquaintances to. It’s basically a kind of reference guide.
What XMPP Actually Is
XMPP (also called Jabber historically, both names mean the same thing) is not an app. It is a protocol, like e-mail is a protocol.
I think this is a great comparison, so let me stretch it a bit. Your e-mail address looks something like thomas@googlemail.com. Somebody else has one at a completely different provider (Microsoft, GMX, whatever). You can still write to each other, because both providers speak the same language. Nobody has to sign up “on Googlemail” to communicate via e-mail with you.
XMPP works the same way. Your address (the technical term is JID, short for Jabber ID) looks like:
yourname@xmpp.example.com
And you can chat with anyone on any other XMPP server, without them having to be on your specific server. That property is called federation, and it is the entire point.
Why I Care About This
A few reasons that conviced me to try this:
- Nobody owns the network. WhatsApp can decide tomorrow that your chats now have ads in them, and your only option is to leave and lose everyone. If a server ever annoys you, you can leave and even host your own.
- No phone number required. Your address is not tied to your SIM card. You do not have to hand out your number to join a group chat with people you barely know. You can even use anonymous names in group chats.
- Encryption is there. Modern XMPP clients do end-to-end encryption (called OMEMO) or PGP with each other, so the server owner cannot read your messages.
- You can pick your app. Same network, different apps. Because those are only clients, you can choose the client app you like. Heck you can even write your own if you want to.
I am not going to pretend that this is the perfect replacement for the big messenger services out there. It is not. But for everyone who was already annoyed enough by the current situation to ask me about alternatives, it is a genuinely good answer.
Step 1: Pick an App
Because XMPP is an open network, there is no single official app. I’ve linked a great website for reference. Just pick the platform you use (Windows, iOS, Mac) and search through all the Apps/Clients until you find something that you like.
Install it, but don’t set anything up yet. That’s the next part. I use Monal on iOS and Gajim on my Linux machine for example. Both are working great for me.
Step 2: Get an Address
Now you need an account, which means you need a server. There are three ways to get one.
Option A - use my server. Most likely that is why you are here. I’ve already sent you an invite link with this blog post referenced as documentation. Clicking that link on your phone opens your XMPP app and creates the account for you. You pick a username and a password, and that’s it.
Option B - use a public server. If you’d rather not depend on my server, joinjabber.org keeps a curated list of community servers that anyone can register on. Pick one, register, done. You’ll still be able to talk to me, or other contacts on my server.
Option C - host your own server. I will write another blog post on how you can host your own XMPP server. If you aim for this option you probably don’t need this guide here.
Either way you end up with an address in the shape of yourname@some.server and a password. Write both down somewhere safe. There is no “log in with Google” button here and no phone number to recover your account with.
Step 3: Add Me as a Contact
Once you are logged in, you can add me by using the address from the invite link (the part that looks like an e-mail address).
In most apps this is a + button somewhere and a field asking for an XMPP address. Paste it in, hit add, I’ll get a request and accept it. From that moment on we can chat.
If your client shows a lock icon in the chat, encryption is active. Most modern clients turn it on by default for one-on-one conversations, so you usually don’t have to do anything. If it isn’t on, tap the lock and choose OMEMO.
A Few Things That Will Confuse You at First
I would rather warn you about these now, because some of them might not be familiar to you:
- The first message to a new contact can take a moment. Both sides have to exchange encryption keys first. This is normal and only happens once per contact.
- You will see a “new device” or “unknown key” warning at some point. That happens when someone reinstalls their app or adds a new device like a tablet or laptop.
- Group chats are addresses too. A group (the technical name is MUC, a multi-user chat) has an address like
somegroup@conference.xmpp.example.com. Joining one means adding that address, same as adding a person. - Your chat history lives on the server, not on one phone. So if you install the app on your laptop too, everything is just there. However, certain clients store chats in a local database, so you could also back up your own chats if you like to.
Closing Thoughts
XMPP won’t solve all the problems you have with current messaging services. But it will grant you back some sort of freedom and a sense of privacy (at least it did for me). And if you are convinced and actually like it - I bet you can tell a friend. Because that’s a good way to start a small awakening. :)
Sources
JoinJabber - https://joinjabber.org/
XMPP Software - https://xmpp.org/software/?category=clients
XMPP Project Website - https://xmpp.org/