GoRiX blog

A blog about things

XMPP: Tener tu JID personalizado

June 11, 2024 — n4ch0m4n

Si usás el protocolo XMPP ( Extensible Messaging and Presence Protocol) sabrás que hay infinidad de sitios donde crear tu jid (Jabber ID… básicamente tu identificador de usuario XMPP:

usuario@dominio.com/dispositivo

Siendo dispositivo, si has usado xmpp, el que te indica desde donde estás conectado:

tano@texto-ondulado.xyz/profanity.m0N0

En este caso, esta “persona” está usando profanity como cliente.

Ahora bien la idea es que podamos rápidamente crear un servidor propio de xmpp para registrar JID's personalizado (después en otro post quizás veamos como poder crear salas/rooms en el mismo servidor).

Buscando alternativas vi Prosody y Ejabberd, pero fui por el primero porque es el que usar por ej xmpp de Disroot

Vamos con los requisitos:


1- Equipito que haga de servidor (yo uso Debian)

2- Prosody: el servicio que corre el servidor XMPP

3- Ip pública

4- Dominio: pueden usar alguno gratuito, tipo no-ip.com o en mi caso que tengo uno propio (el del blog claro!) y que el dns apunte a nuestra ip pública.

5- Certificados de dominio

6- Abrir puertos del FW

Ya teniendo el equipo, instalado Prosody y el dominio, resta abrir puertos siendo los mismos:

5222/TCP: Conexiones de clientes XMPP (Cliente-Servidor..osea para que podamos loguearnos)
5269/TCP: Conexiones entre servidores XMPP (Servidor-Servidor...osea para que los servidores xmpp se vean)

Cómo abrirlos puede depender de como tengas configurada tu red, si tenés un firewall desde el mismo o directamente como hice yo abrí los puertos en mi router.

Respecto al certificado, podes usar Certbot y Let’s Encrypt, básicamente:

certbot -d chat.example.org

Que te generará dos archivos, el certificado y la key, guarda la ruta de los mismos.

Luego queda aplicarlos a Prosody:

prosodyctl --root cert import /etc/letsencrypt/live/

Bueno tenemos todo, vamos a configurarlo! Primero vamos a buscar el archivo de configuración /etc/prosody/prosody.cfg.lua y vamos buscando y agregando las líneas que les voy a ir indicando.

Vamos a la línea que dice 233 o la que dice:

VirtualHost "localhost"
-- Prosody requires at least one enabled VirtualHost to function. You can
-- safely remove or disable 'localhost' once you have added another.

Vamos agregar un Virtualhost (tudominio.com) y como dice ahi esta línea puede ser comentada (en este archivo se hace con - - delante). Si solo queremos un xmpp a nivel local terminaría todo acá, pero yo quiero usarlo para conectarme a otros xmpp!

Y ya estaría, si leen el archivo está bien documentado. Por ej en la línea 197 pueden especificar donde se guardan los logs.

Respecto a los logs tuve un issue y fue que no se generaban, la solución fue asignarle como owner al usuario ‘prosody’ y permisos de 755 a su contenido:

sudo chown prosody:prosody -R /var/log/prosody/
sudo chmod 755 /var/log/*

Bueno, restarteamos el servicio prosody (eso dependerá del init que uses) y podrás ver si arrancó todo bien en los logs.

Falta algo no? claro administrar los usuarios, para crear usuarios (te pedirá ingreses una contraseña para el usuario):

prosodyctl adduser usuario@tudominio.com

Para borrarlos? adivina! cambiar 'adduser' por ‘deluser’; y para cambiar la pass…cambiarlo por ‘passwd’, ilógico no?

Solo resta abrir tu cliente de XMPP favorito y loguear con el usuario y pass creados.

Como verán es fácil sacarlo andando si ya contás con todos los requisitos.

Espero les haya parecido interesante!

Tags: Servidores