Modern messaging: Running your own XMPP server
Running Your Own XMPP Server (ejabberd, Prosody, others)
- Multiple commenters run ejabberd or Prosody for years with minimal maintenance; upgrades are generally smooth and reliability is high.
- Common small-scale uses: family/friends chat, home-automation / device status, bots, and experiments.
- Docker and tools like Ansible, Caddy/Traefik help make deployment easier. Some distributions (Yunohost, NethServer, Cloudron) ship XMPP as a turnkey component.
Scalability and Architecture
- Discussion around “40M users” shows disagreement on TCP limits: some claim port-count limitations, others explain that the real limit is hardware (RAM, file descriptors) and that millions of concurrent connections per node are feasible.
- ejabberd benchmarks and WhatsApp’s historical numbers are cited as evidence that XMPP can scale horizontally with clustering. Tigase is mentioned as another horizontally scalable option.
- TURN/STUN, SRV records, and proper DNS/TLS setup are highlighted as necessary details often glossed over.
Client Ecosystem and UX
- Android: Conversations is widely praised as reliable and featureful (including OMEMO E2EE).
- iOS: widely seen as the weak link. Monal and Siskin exist, but complaints include: missing reactions, UI quality, notification issues, confusing E2EE in groups, and poor adherence to iOS design guidelines. Developers say it’s hard to find iOS contributors for open protocols.
- Desktop: Gajim, Dino, Movim, Libervia, poezio are mentioned; opinions range from “ok-ish” to “disastrous UX,” especially compared with mainstream apps.
- Many argue that XMPP’s main problem is not the servers but the clients.
“Modern Features” vs Simplicity
- Critics say XMPP feels dated compared to Matrix/Discord/WhatsApp: missing or inconsistent reactions, GIF integration, polished group AV, fast multi-device sync.
- Others are happy to forgo stickers/GIFs for privacy, reliability, and protocol openness.
- There is active work on multi-party audio/video via Jingle and SFU components, but this is not yet mainstream.
Networking, Ports, and VPN Setups
- Default XMPP ports are sometimes blocked on public Wi‑Fi; mitigations include BOSH, WebSocket, ALPN-based proxying over 443, or listening on multiple ports.
- Running XMPP behind WireGuard/Tailscale works, but always-on VPN is a usability problem; many prefer exposing the server with proper TLS (Let’s Encrypt, DNS challenges).
Privacy, Surveillance, and Adoption
- EU “chat control” proposals spur interest in self-hosting, but several doubt non-technical users will care or migrate.
- XMPP’s federation avoids lock-in, but network effects strongly favor Signal, Matrix, RCS, etc. Some lament that XMPP had its moment when Google/Facebook federated and then lost it.
Alternatives and Adjacent Approaches
- Snikket (Prosody + curated clients) is recommended for easier self-hosting.
- Other suggested systems for similar goals: Matrix (more complex but richer UX), Signal (simpler but centralized and phone-number-bound), Nextcloud Talk, Delta.chat (email-based), IRC-based clusters.