|Written in||Erlang, Elixer|
XMPP stands for eXtensible Messaging and Presence Protocol. It was originally called Jabber and some people still use that, however. XMPP is an instant messaging protocol that provides near-real-time communication, presence information (online/offline status, typing indicators), and contact list management. You can communicate with individuals as well as join larger Multi-User Chats (MUCs). XMPP is incredibly extensible (after all, it's in the name) and even allows for voice and videos calls as well as end-to-end encryption via protocols such as OMEMO.
XMPP is a federated protocol meaning that every server can communicate with every other server. Think of it like email:
email@example.com can send a message to
firstname.lastname@example.org even though the email services are provided by entirely different (and competing) companies. If you like the idea of XMPP but don't like my domains, you can register with another provider and have a very similar experience! XMPP Provider is a very convenient website that curates these various providers and categorises them based on quality of service. Any provider in Category A should be a wonderful host so picking between them is pretty much down to domain preference.
The server running on NixNet is ejabberd, one of the more modern and robust implementations available.
There are two ways to register with this service: from the web UI or from within your client. The latter is probably simplest and what I recommend. Whichever registration method you choose, you'll need to come up with a username and pick a domain from those listed below. Your Jabber ID (JID) is what people use to contact you; it's similar to a Twitter handle. Your JID will look like
Once you've come up with an awesome JID, you need to get registered with it!
As I said above, this method is probably simplest. Take a look at the recommended clients, pick one, install, and open it up. There will usually be a dialogue prompting you to either log in or create an account. You want to create an account. It should be pretty self-explanatory from there, aside from the CAPTCHA. Due to a large amount of abuse, I've had to implement a CAPTCHA to deter bots from mass-registering and sending copious amounts of spam to other users. Your client may display the CAPTCHA for you but, if it doesn't, you'll need to copy the provided URL, open it in your browser, then enter the generated numbers back in your client.
That should be it!
For this one, head over to xmpp.nixnet.services, pick your username, enter one of the domains listed above, and generate a strong password to store in your password manager. Fill in the CAPTCHA, hit the
Register button, then take a look at the recommended clients.
If you’re not sure what client to use, here is a list of some of the more popular clients for each of the major platforms! If you have any recommendations, please let me know and I'll add to the lists.
I do not have any Apple devices and cannot test these but I have heard good things, especially about Snikket.
Personally, I use Conversations on Android, Dino on Linux, and Gajim on Windows.
Connecting over Tor
If you want to use this XMPP server over Tor, first install and enable the daemon.
# Installation for Debian and Debian-based distributions like Ubuntu or Linux Mint # sudo apt install tor # Installation for Arch and Arch-based distributions # sudo pacman -S tor # Installation for RedHat and rpm-based distributions like Fedora # sudo dnf install tor # This command should™ work whether your init system is systemd or OpenRC. I'm not sure about runit or other alternatives # sudo service tor enable --now
After that, there are a few settings you’ll have to change depending on your client. At a birds-eye view, you want to enable a SOCKS5 proxy; some clients allow for this and some don't. Gajim does and that's my preferred client so I'll describe its process. Go to Gajim -> Preferences -> Advanced and simply set the Global Proxy to Tor. As long as your Tor daemon is up and running properly, the default settings should work perfectly fine.
Passwords can be changed and accounts created or deleted from the web UI.
In XMPP, group chats are called Multi User Chats or MUCs. To create a MUC on any of the domains above, you'll first need an account on this server. It shouldn't matter which domain you're using, you just need an account on one of them. When creating the MUC, you'll be asked for an address. This usually takes the form of
email@example.com. My domains all use
muc. so that would be …
After the room has been created, you can send people a join link in the form of
xmpp:firstname.lastname@example.org?join. For example, clicking this link will prompt you to join the NixNet Community MUC: xmpp:email@example.com?join
Audio and video calls
The only clients I know of supports A/V calls at the moment is Conversations on Android, Dino on Linux, and Siskin on iOS (if you know of any more, let me know and I'll update this page). This feature should Just Work™ and, if so, there will be a telephone icon somewhere in the UI (typically the top right).
- Upload limit for individual files is set to 100 MB
- Total upload limit per-user is set to 1 GB; when this limit is reached, the user's oldest uploads are automatically deleted until the total used storage is less than 1 GB
- Uploads older than 14 days are deleted automatically
- Messages stored with Message Archive Management are retained indefinitely
- Group chat: firstname.lastname@example.org
- Direct message: email@example.com