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.