Ejabberd - XMPP
Se trata de un servidor de mensajería instantánea de código abierto. Válido para plataformas Unix BSD, GNU/Linux o Microsoft Windows entre otras. Para la comunicación instantánea se utiliza XMPP.
Alexey Shchepin fundó el proyecto en 2002 y continúa manteniéndolo. El nombre « ejabberd » significa « Erlang Jabber Daemon ». Se escribe en letras minúsculas solamente, que es uso común en el mundo de Unix. El objetivo del proyecto ejabberd es la creación de un servidor XMPP estable y con variedad de posibilidades.
La documentación y casos de uso la puedes encontrar aquí: https://docs.ejabberd.im/use-cases/
Vamos a ver como funciona:
Instala el software
Lo primero, como siempre, será actualizar los paquetes de nuestro sistema:
apt update
apt upgrade
Tras tener los paquetes actualizados, procedemos a instalar eJabberd. Para eso nos descargaremos el paquete directamente desde el repositorio oficial de eJabberd:
wget https://github.com/processone/ejabberd/releases/download/23.01/ejabberd_23.01-1_amd64.deb
sudo dpkg -i ejabberd*.deb
Se puede instalar eJabberd desde repositorios de Ubuntu, pero parece que tiene un bug y no se puede levantar correctamente el servicio, por lo que recomiendo instalar el paquete manualmente.
Una vez se hayan instalado todos los paquetes, procedemos a parar el servicio.
sudo systemctl stop ejabberd
Configuración de eJabberd
A continuación configuraremos el servicio de eJabber, como hemos configurado anteriormente el hostname del servidor, tendremos configuración ya con nuestro dominio. Para eso editaremos el fichero de configuración:
sudo nano /opt/ejabberd/conf/ejabberd.yml
Ahora añadiremos o modificaremos:
Añadimos el dominio del servidor al
host
....
hosts:
- alexdns.local
....
Buscamos el apartado
trusted_network
y lo ponemos enall
Ahora le vamos a dar permisos de administrador al usuario
admin
que hemos creado:
....
acl:
admin:
user:
- "admin"
local:
user_regexp: ""
loopback:
ip:
- 127.0.0.0/8
- ::1/128
....
El acceso web viene habilitado por defecto por las siguientes líneas, no hace falta que cambies nada:

Vamos hasta el apartado de mod_muc
para añadir un host
personalizado:
...
mod_muc:
host: muc.alexdns.local
access:
- allow
...
Por defecto, el host
de mod_muc
es conference.[tu_dominio]
, pero en este caso lo hemos cambiado por muc.alexdns
. Si no quieres modificar este host, ten en cuenta el subdominio conference.alexdns.local
.
Comprobar configuración
Con eJabberd hay una forma para comprobar que la configuración que tenemos es correcta, para ello ejecutaremos este comando:
sudo ejabberdctl live
La salida de este comando es el siguiente:
--------------------------------------------------------------------
IMPORTANT: ejabberd is going to start in LIVE (interactive) mode.
All log messages will be shown in the command shell.
You can interact with the ejabberd node if you know how to use it.
Please be extremely cautious with your actions,
and exit immediately if you are not completely sure.
To exit this LIVE mode and stop ejabberd, press:
q(). and press the Enter key
--------------------------------------------------------------------
To bypass permanently this warning, add to ejabberdctl.cfg the line:
EJABBERD_BYPASS_WARNINGS=true
Press return to continue
Si pulsamos enter
para continuar, nos mostrará el log del inicio del servicio y podremos acceder al panel de admin.
2023-01-17 16:36:38.340359+00:00 [info] ejabberd 21.12-1 is started in the node ejabberd@localhost in 1.66s
2023-01-17 16:36:38.340743+00:00 [info] Start accepting UDP connections at [::]:3478 for ejabberd_stun
2023-01-17 16:36:38.341079+00:00 [info] Start accepting TCP connections at [::]:5222 for ejabberd_c2s
2023-01-17 16:36:38.341195+00:00 [info] Start accepting TLS connections at [::]:5223 for ejabberd_c2s
2023-01-17 16:36:38.341260+00:00 [info] Start accepting TCP connections at [::]:5269 for ejabberd_s2s_in
2023-01-17 16:36:38.341925+00:00 [info] Start accepting TLS connections at [::]:5443 for ejabberd_http
2023-01-17 16:36:38.342025+00:00 [info] Start accepting TLS connections at [::]:5280 for ejabberd_http
2023-01-17 16:36:38.342289+00:00 [info] Start accepting TCP connections at [::]:1883 for mod_mqtt
Registrar usuarios en ejabberd
Ahora que tenemos todo funcionando, podemos crear un usuario para comprobar que funciona en un cliente de XMPP:
# Con esta estructura
ejabberdctl register [USUARIO] [DOMINIO] [CONTRASEÑA]
Debemos crear primero de todo el usuario admin
:
sudo ejabberdctl register admin alexdns.local 1234
Para comprobar que usuarios hay creados podemos usar el comando:
sudo ejabberdctl registered-users alexdns.local
Acceso a panel de administración
Ahora podemos acceder al acceso web desde http://[tu_ip]:5280/admin
y nos cargará lo siguiente tras iniciar sesión con el usuario admin@[tu_dominio]
:


Lo que deberíamos hacer ahora es crear dos usuarios normales para probar la conexión. Para ello accede a Dominios virtuales>localhost>usuarios
:

Configurar cuenta de XMPP en un cliente con Pidgin
Podemos utilizar el cliente que más nos guste, hay una lista muy larga dependiendo sistemas operativos y versiones como Dino pero en este caso usaremos Pidgin, que también es un cliente XMPP bastante sencillo y agradable.
Utilizaremos DOS máquinas virtuales cada una con una cuenta diferente y configuraremos:
Nombre: (el que hayas creado en el admin)
Dominio: alexdns.local
Recurso: (opcional, es para identificar dispositivos)
Contraseña: ****
Debes pasar a opciones avanzadas y configurar "Conectar con el servidor" y poner la IP correcta:

Te pedira aceptar el certificado SSL y podremos iniciar conversaciones con nuestros amigos y amigas simplemente añadiendo el usuario en una MV y otra sesión con otro usuario en otra MV:

Crear sala de chat
Una vez hayas llegado hasta aquí es posible que te interese crear salas de chat para tus usuarios, vamos a ver como.
En nuestro caso, si has seguido la guía anterior deberias tener configurado como sala MUC (Multi-User Chat), muc.alexdns.local
por lo que ahora toca ir a pidgin:
Abre Pidgin y ve a Amigos > Unirse a un chat.
En la ventana emergente:
Cuenta: Tu cuenta XMPP ya conectada.
Sala: El nombre que quieres para la sala (ej.
cafeteria
).Servidor: Usualmente
muc.alexdns.local
Alias: (Opcional) Nombre para mostrar la sala en tu lista.
Contraseña: (Opcional) si quieres restringir el acceso.
Haz clic en Unirse.
Si la sala no existía antes, se creará automáticamente (esto depende de los permisos en
mod_muc
).
Una vez dentro de la sala puedes:
Hacer la sala persistente.
Establecer quién puede entrar.
Poner contraseña.
Hacerla pública o privada.
Webgrafía
Última actualización