Este tutorial explica cómo crear una API REST simple para enviar mensajes XMPP (Jabber) a una cuenta existente, utilizando Prosody IM. La necesidad surge porque, aunque existen herramientas de línea de comandos para enviar mensajes XMPP directamente a un servidor, esta guía se enfoca en proporcionar una interfaz HTTP, lo cual es útil para integraciones en sistemas de monitoreo, scripts de automatización o cualquier escenario donde se necesite enviar información de estado a través de mensajes XMPP.
¿Cómo funciona? El proceso implica instalar Prosody IM, sus módulos comunitarios (especialmente mod_post_msg) y Certbot para obtener certificados SSL/TLS. La configuración de Prosody se simplifica al máximo, deshabilitando funcionalidades innecesarias y habilitando únicamente los módulos necesarios para la API REST (tls, dialback, http, admin_shell, post_msg). Se crea un archivo de configuración (/etc/prosody/prosody.cfg.lua) que define el PID, los módulos habilitados/deshabilitados, los logs y la configuración de certificados. Certbot se utiliza para obtener certificados Let's Encrypt, asegurando una conexión segura (HTTPS). Finalmente, se crea un usuario XMPP con prosodyctl adduser y se utiliza curl para enviar el mensaje a través de la API REST. La URL de la API tiene el formato https://<tu_dominio>/msg/<usuario_receptor>, requiere autenticación básica con el usuario y contraseña creados, y el cuerpo de la petición curl contiene el mensaje a enviar.
Casos de uso: Este método es ideal para sistemas de monitoreo que necesitan notificar el estado de un servicio a través de XMPP. Por ejemplo, un script de monitoreo podría enviar un mensaje a un usuario XMPP cuando un servidor se cae o cuando se alcanza un umbral de rendimiento. También es útil para scripts de automatización que necesitan enviar notificaciones a usuarios XMPP en situaciones específicas. Cualquier persona familiarizada con la línea de comandos y con conocimientos básicos de administración de servidores Linux puede implementar esta solución.
Consideraciones: El tutorial asume una instalación Debian 13 relativamente limpia, pero debería funcionar en otras distribuciones Linux. Es crucial reemplazar ntfy.stdmsg.tech con tu propio dominio y configurar el registro A del dominio para que apunte a tu servidor. La seguridad es un punto importante: la autenticación básica con usuario y contraseña debe protegerse adecuadamente. Para una implementación más robusta, se recomienda configurar un hook de Certbot para renovar automáticamente los certificados y considerar el uso de un proxy inverso para mejorar la seguridad y el rendimiento. El módulo mod_post_msg también soporta payloads JSON, lo que permite enviar información más estructurada en los mensajes XMPP.
