Esta es una guía para configurar un servidor de mensajería instantánea basado en XMPP moderno, enfocado a la seguridad, mensajería móvil y fácil de usar. La guía asume que usas 'Debian Stable' en el servidor, que quieres alojar y administrar la mensajería instantánea para tu grupo de amigos y que tienes conocimiento básico de usar la línea de comandos en Linux.
Firewall y DNS
---
Abre los siguientes puertos en tu firewall para poder comunicarte con el servidor:
:::console
5000 (hacer de proxy para intercambiar archivos grandes entre clientes)
5222 (para comunicación entre cliente y servidor, C2S)
5269 (para comunicación entre servidores, S2S)
5281 (el puerto https por defecto de prosody)
También asegúrate de que tienes un dominio con DNS A-records para los siguientes subdominios
:::console
myserver.org (el dominio principal)
muc.myserver.org (para sala de grupos)
dump.myserver.org (para componente HTTP-Upload)
proxy.myserver.org (para el proxy de transferencia de archivos)
Esta guía usa los dominios escritos arriba, pero puedes ser más creativo :)
Habilitar HTTPS
---
Primero, conseguimos un certificado HTTPS firmado por [Let's Encrypt](https://letsencrypt.org/):
Se necesita para XMPP moderno, certificados auto-firmados no funcionaran.
Instala Certbot y consigue los certificados para tu dominio (reemplaza `myserver.org` por el tuyo):
Haz una copia de seguridad de la configuración de Prosody por defecto e instala [la de homebrewserver.club](https://homebrewserver.club/downloads/prosody.0.11.cfg.lua)
"version"; -- Contesta a las peticiones de la versión del servidor
"uptime"; -- Informa sobre cuánto tiempo ha estado funcionando el servidor
"time"; -- Permite conocer la hora en el servidor
"ping"; -- Contesta XMPP pings con pongs
"register"; --Permite registrar una cuenta en tu servidor desde un cliente
"pep"; -- Entre otras cosas, permite a usuarios publicar sus claves OMEMO publicas
"carbons"; -- XEP-0280: Message Carbons, sincroniza mensajes entre dispositivos
"smacks"; -- XEP-0198: Stream Management, mantiene conversaciones incluso cuando la red se cae
"mam"; -- XEP-0313: Message Archive Management, permite descargar el historial de conversasiones del servidor
"csi_simple"; -- XEP-0352: Client State Indication
"admin_adhoc"; -- Permite la administración del servidor desde un cliente XMPP (que soporte comandos ad-hoc)
"blocklist"; -- XEP-0191 bloquear usuarios
"bookmarks"; -- Sincroniza entre clientes diferentes las salas a las que te has unido
--"cloud_notify"; -- Soporta XEP-0357 Push Notifications para tener compatibilidad con ChatSecure/iOS.
-- iOS normalmente aborta la conexión cuando una aplicación funciona en segundo plano y requiere el uso de los servidores de Push de Apple para levantar la conexión y recibir un mensaje. Habilitar este módulo permite a tu servidor comunicarse con los servidores Push de Apple para ayudar a tus usuarios de iOS.
-- Sin embargo, lo dejamos comentado porque es un otro ejemplo de una plataforma cloud integrada verticalmente que choca con las ideas de federación y las redes libres. Descomentarlo tiene riesgo de vigilancia de los meta dados de tus usuarios por Apple.
"server_contact_info"; -- Añade información de contacto en caso de incidencias con el servidor
};
allow_registration = false; -- Permite registrar una cuenta en tu servidor desde un cliente, para más información visita http://prosody.im/doc/creating_accounts
certificates = "/etc/prosody/certs" -- Ruta donde Prosody busca los certificados: https://prosody.im/doc/letsencrypt
Cuando hayas hecho todo esto es hora de arrancar el servidor:
:::console
/etc/init.d/prosody restart
Se pueden añadir usuarios desde la línea de comandos. Te pedirá una contraseña:
:::console
prosodyctl adduser me@myserver.org
De otra forma puedes cambiar `allow_registration = false;` a `allow_registration = true;` en la configuración (linea 35) para permitir a los usuarios registrarse en tu servidor desde sus propios clientes.
Ahora puedes intentar conectarte a tu servidor usando un cliente como Gajim o Conversations. Inicia sesión con tu nombre y contraseña.
Si tienes preguntas sobre Prosody, la [documentación](http://prosody.im/doc) del proyecto es bastante buena (pero en Ingles). Si eso no es suficiente, pregunta los mismos desarrolladores en [la sala XMPP de Prosody](xmpp://prosody.conference.prosody.im?join)
Esta guía es una traducción de la guía del [homebrewserver.club](https://homebrewserver.club/drafts/configuring-a-modern-xmpp-server.html).)