Cómo armar tu propio servidor XMPP: privacidad sin depender de terceros
Guía completa y actualizada para montar un servidor XMPP personal con Prosody o ejabberd. Evitá que tus conversaciones queden en manos de empresas y mantené el control total de tus datos.
Montar un servidor XMPP propio no es solo para sysadmins experimentados. Con un poco de paciencia y las herramientas adecuadas, cualquiera puede tener su instancia federada y dejar de entregar sus chats a servicios centralizados. En este artículo exploramos una aproximación distinta: priorizamos servidores de bajo consumo energético y configuraciones que favorecen la interoperabilidad con el fediverso y otras redes.
Por qué vale la pena el esfuerzo
La mayoría de las apps de mensajería almacenan tus contactos, metadatos y hasta el contenido de los mensajes en servidores ajenos. XMPP, por el contrario, es un estándar abierto que permite que tu servidor converse con miles de otros sin intermediarios corporativos. Al autohospedarlo, vos decidís qué datos se guardan, durante cuánto tiempo y bajo qué reglas de cifrado.
A diferencia de tutoriales que se centran solo en Docker o en VPS caros, acá vamos a enfocarnos en hardware reutilizado o de bajo consumo (una vieja laptop, una mini PC o una placa como la Orange Pi) y en configuraciones que minimizan el impacto ambiental y económico.
Elegir el software adecuado
Existen varias implementaciones maduras. Prosody es ligera y perfecta para servidores pequeños o medianos; ejabberd brilla cuando necesitás escalar o integrar módulos avanzados. Para esta guía vamos a usar Prosody en una distribución Debian-based porque ofrece un equilibrio ideal entre simplicidad y robustez. Si preferís algo más modular, podés probar ejabberd, pero su curva de aprendizaje es un poco más pronunciada.
Evitá las soluciones “one-click” que prometen todo en cinco minutos: suelen venir con configuraciones inseguras por defecto o dependen de servicios en la nube que contradicen el espíritu de soberanía digital.
Preparación del hardware y sistema base
Usá hardware que ya tengas. Una Raspberry Pi 4 con 4 GB de RAM es más que suficiente para hasta 50 usuarios concurrentes si no abusás de los archivos adjuntos pesados. Si querés algo más silencioso y eficiente, una mini PC con Intel NUC de generación anterior también funciona de maravilla.
Instalá Debian 12 o Ubuntu Server 22.04 LTS. Actualizá todo y configurá un usuario sin privilegios para las tareas diarias. Activar UFW (Uncomplicated Firewall) desde el principio es clave: solo abrí los puertos 5222 (cliente a servidor) y 5269 (servidor a servidor). El 80 y 443 los vamos a usar para el reverse proxy que servirá los certificados y el discovery.
Dominio propio y certificados
Sin un dominio personalizado es difícil federar. Comprá uno barato (hay opciones desde $300 al año) y apuntá los registros A y AAAA a la IP pública de tu servidor. Usá Let’s Encrypt para obtener certificados válidos. La herramienta certbot hace esto casi automático, pero combinada con Prosody requiere algunos pasos extra para que el servidor lea las claves correctamente.
Configurá también un registro SRV para que otros servidores XMPP sepan dónde encontrar el tuyo. Esto es fundamental para la federación y suele ser el punto donde más gente se traba.
Instalación y configuración básica de Prosody
Una vez que tenés el sistema actualizado:
apt install prosody prosody-modules lua-sec
Editá /etc/prosody/prosody.cfg.lua. Empezá con una configuración minimalista pero segura:
admins = { "[email protected]" }
modules_enabled = {
"roster"; "saslauth"; "tls"; "dialback"; "disco"; "carbons";
"private"; "blocklist"; "vcard4"; "version"; "uptime"; "time";
"ping"; "register"; "admin_adhoc"; "http_files";
}
c2s_require_encryption = true
s2s_require_encryption = true
s2s_secure_auth = true
VirtualHost "midominio.com"
authentication = "internal_hashed"
ssl = {
key = "/etc/prosody/certs/midominio.com.key";
certificate = "/etc/prosody/certs/midominio.com.crt";
}
Creá el usuario administrador con prosodyctl adduser [email protected].
Añadir componentes útiles
Para que tu servidor sea realmente usable, agregá:
- HTTP Upload para compartir archivos sin depender de servicios externos.
- MUC (Multi-User Chat) para crear salas de grupo cifradas.
- Push notifications si querés que las apps móviles reciban notificaciones aunque el cliente esté en segundo plano.
- OMEMO y OMEMO for MUC para tener cifrado de extremo a extremo en chats individuales y grupales.
Hay módulos comunitarios que facilitan todo esto. Recordá que cada módulo adicional aumenta la superficie de ataque, así que activá solo lo que realmente vas a usar.
Hardening y buenas prácticas de seguridad
- Usá contraseñas fuertes y habilita 2FA donde sea posible (aunque XMPP no lo tiene nativo, algunos clientes lo simulan con tokens).
- Configurá rate limiting para prevenir abusos.
- Monitoreá los logs con
journalctl -u prosodyy herramientas como Fail2Ban. - Actualizá Prosody y el sistema operativo religiosamente. Un servidor XMPP expuesto es un objetivo atractivo.
- Considerá correrlo dentro de un contenedor LXC o con AppArmor para aislar posibles brechas.
Conectar clientes y federar
En el celular podés usar Conversations (Android) o Snikket (que incluye su propio cliente). En escritorio, Gajim o Dino son excelentes. Todos soportan OMEMO de serie.
Para federar con otros servidores probá agregando contactos de riseup.net, dismail.de o cualquier instancia pública confiable. El proceso es tan simple como añadir el JID completo.
Si querés ir más allá, podés integrar tu servidor XMPP con Matrix a través de bridges como bifrost o spectrum2. De esa forma tus contactos que están en Matrix pueden escribirte sin que vos tengas que usar su infraestructura.
Mantenimiento a largo plazo
Un servidor propio requiere atención. Hacé backups regulares de la carpeta /var/lib/prosody. Monitoreá el uso de disco y RAM. Si crece mucho, pensá en migrar a una máquina más potente o distribuir componentes (ej. usar un servidor de TURN separado para llamadas de voz y video).
También es buena idea unirse a la comunidad XMPP en español: hay canales en el propio XMPP y en el fediverso donde la gente comparte experiencias de autohospedaje.
Conclusión
Armar tu servidor XMPP no te convierte automáticamente en un experto en privacidad, pero es un paso concreto hacia la soberanía digital. Cada mensaje que viaja de tu servidor al de un amigo sin pasar por Meta o Google es una pequeña victoria. Las fricciones existen —actualizaciones, posibles caídas, aprendizaje de DNS—, pero el control que ganás a cambio compensa con creces.
Empezá pequeño, probá con un dominio de prueba si querés, y cuando te sientas cómodo migrá tus contactos reales. El fediverso de mensajería se construye de a uno.