User Tools

Site Tools



XMPP, formerly Jabber, is a messaging protocol standard that is highly extensible. It is federated meaning there is not one central server but different servers can all communicate with each other, similar to how email works across multiple domains and email providers.

DevDungeon XMPP Server

DevDungeon runs an XMPP server as part of the DevDungeon infrastructure. The chat room is open to the public and anyone can join. If you a member of the DevDungeon Virtual Hackerspace, you get your own account


For a longer list of available clients, check out


Profanity is a terminal client that supports HTTP file uploads and OTR/PGP/OMEMO encryption. It's a great client. I have a dedicated page: Profanity - Terminal XMPP client


Converse.js is a web-based and cross-platform client for XMPP that supports OMEMO encryption and HTTP file uploads. You can use their hosted web client to login to any server (including the DevDungeon one). You can use their hosted full-page version or the DevDungeon hosted web client at or you can download their desktop version. If you're using the desktop version, the HTTP bind URL for DevDungeon server is


Psi+ is a desktop client that supports PGP encryption and direct file transfer.


Pidgin is a desktop client that supports direct file transfer and OTR encryption (with a 3rd party plugin).


Gajim is a desktop client that is cross-platform. It supports HTTP file uploads and OMEMO encryption.


Spark is a desktop client written in Java. It supports direct file transfer, has built-in translation features, and a screenshot feature.


The Thunderbird email client also supports XMPP chat although not with a ton of features. It does support OTR encryption.



OpenFire is an XMPP written in Java. It has a feature-rich web interface. The project also has a Java library for XMPP named Smack and a Java desktop client for XMPP chat named Spark. Together, they provide a complete suite for XMPP. There are also a number of Openfire plugins that extend the server.

For instructions on setting up Openfire XMPP server, see: Openfire XMPP Server Setup.

Prosody IM “Prosody is a modern XMPP communication server. It aims to be easy to set up and configure, and efficient with system resources. Additionally, for developers it aims to be easy to extend and give a flexible system on which to rapidly develop added functionality, or prototype new protocols.

Prosody is open-source software under the permissive MIT/X11 license.”

ejabberd “Robust, Scalable and Extensible Realtime Platform XMPP Server + MQTT Broker + SIP Service”

DNS Entries

You could simply use one A record for your server, like However, you might not want your account to be and instead be, but the host running your XMPP server may not correspond to the top level domain.

To allow the use of even though the XMPP server may be, you can use SRV records in DNS. You can read more at

Here are some examples showing the two records you'd need for a client and one for s2s. 18000 IN SRV 0 5 5222 18000 IN SRV 0 5 5269

# For conference rooms 18000 IN SRV 0 5 5269
  • Service: xmpp-client
  • Protocol: tcp
  • Port: 5222
  • Domain:
  • Target: (host providing XMPP)
  • Service: xmpp-server
  • Protocol: tcp
  • Port: 5269
  • Domain:
  • Target: (host providing XMPP)
  • Service: xmpp-server
  • Protocol: tcp
  • Port: 5269
  • Domain:
  • Target: (host providing conference)

You can use dig to check a domain's records:

dig SRV
dig SRV
community/xmpp.txt · Last modified: 2021/06/05 22:35 by nanodano