Running My Own XMPP Server
8 days ago
- #Prosody
- #Docker
- #XMPP
- Moved personal messaging to Signal for digital ownership, but still dependent on one service.
- XMPP is federated, allowing server-to-server communication without being locked into a single provider.
- Set up Prosody in Docker for XMPP server with features like file sharing, voice calls, and end-to-end encryption.
- Required DNS records include SRV records for client and server connections, and A or CNAME records for file uploads and group chats.
- Used Let's Encrypt with Cloudflare DNS challenge for TLS certificates, with monthly renewal via cron.
- Docker setup includes Prosody with exposed ports for client and federation connections, and mounted volumes for data and configuration.
- Prosody configuration includes modules for security, multi-device support, message archiving, and HTTP file uploads.
- Enabled OMEMO encryption for end-to-end security, supported by clients like Monal, Conversations, and Gajim.
- Set up a TURN/STUN server (coturn) for voice and video calls, sharing a secret with Prosody for temporary credentials.
- Clients recommended: Monal for iOS, Conversations for Android, and Gajim for desktop, all supporting modern XMPP features.
- Final setup includes Prosody, file uploads, message archive, push notifications, group chats, and voice calls in Docker containers.