Este artículo describe el proceso de configuración de un servidor XMPP (Extensible Messaging and Presence Protocol) propio utilizando Prosody y Docker, con el objetivo de tener un servicio de mensajería federado y controlado por el usuario. XMPP es un protocolo de mensajería descentralizado que, a diferencia de servicios centralizados como Signal, permite que los usuarios elijan su propio servidor, evitando el bloqueo de proveedor y aumentando la privacidad. El autor, tras haber utilizado Signal, decidió implementar XMPP para tener mayor control sobre sus datos y evitar depender de una única entidad.
La configuración implica varios pasos: primero, se configuran registros DNS (SRV y A records) para que los clientes y otros servidores puedan encontrar el servidor XMPP. Luego, se obtienen certificados TLS (usando Let's Encrypt y Cloudflare para evitar exponer el puerto 80) para asegurar las conexiones. La instalación de Prosody se realiza a través de Docker Compose, definiendo volúmenes para persistencia de datos y configuración, y mapeando puertos para conexiones de clientes (5222) y federación con otros servidores (5269). Se detallan los módulos de Prosody habilitados, incluyendo aquellos cruciales para una buena experiencia móvil, como carbons (sincronización entre dispositivos), smacks (gestión de conexiones inestables) y cloud_notify (notificaciones push). Se enfatiza la importancia de OMEMO para el cifrado de extremo a extremo, que protege el contenido de los mensajes incluso del servidor.
El artículo también aborda la configuración de un servidor HTTP interno para compartir archivos, accesible a través de un proxy inverso (Caddy) para manejar el cifrado TLS. La creación de cuentas de usuario se realiza manualmente a través de la línea de comandos, ya que el registro automático está deshabilitado por seguridad. Finalmente, se configura un firewall para permitir el tráfico a los puertos necesarios. La ventaja principal de tener un servidor XMPP propio es la soberanía sobre los datos y la capacidad de migrar a otro servidor sin perder el historial de conversaciones, algo que no es posible con servicios centralizados. Si bien requiere un poco más de configuración inicial, ofrece una mayor flexibilidad y control sobre la privacidad.
