🚧Ejabberd con docker

Primero de todo deberás tener en cuenta que el servidor exige de una serie de requisitos, a saber:

  • Tener DNS con un dominio propio (que sea público o local te limitará la escalabilidad), revisa aquí s no lo tienes.

  • Tener docker instalado, revisa aquí como hacerlo.

En mi caso lo haré en una máquina ubuntu server 22.04.

La imagen que usaremos la he sacado de aquí, vayamos por pasos:

  1. Creación del contenedor

Para crear el contenedor:

docker run --name ejabberd -d -p 5222:5222 docker.io/ejabberd/ecs

2. Configuramos el dominio

Para entrar dentro del contenedor y editar el nombre del servidor, utilizaremos vi, que ya viene instalado por defecto en el propio docker.

docker exec -it ejabberd sh

Y desde dentro busca:

cd conf
vi ejabberd.yml

Dentro, en las primeras líneas, encontraremos el apartado hosts para editar el nombre del servidor, podemos utilizar varios nombres de servidor pero yo pondré el que hay configurado de forma local en la máquina:

## hosts: Domains served by ejabberd.
## You can define one or several, for example:
## hosts:
##   - "example.net"
##   - "example.com"
##   - "example.org"
hosts:
- "alexdns.local"

Recuerda que para entrar en modo inserción usa :i y ESC para salir. Luego para guardar y salir :wq

En este ejemplo de configuración, he utilizado el nombre de dominio alexdns.local, esto quiere decir que los usuarios que estarán registrados en el servidor, utilizan de nombre de usuario, por ejemplo ardilla@alexdns.local

También debemos editar el archivo para designar un administrador por lo que escribimos el nombre de administrador o administradores. En este caso alex.

## Full path to a script that generates the image.
## captcha_cmd: "/usr/share/ejabberd/captcha.sh"
acl:
admin:
user:
- "alex"

A partir de aquí, los pasos son más o menos los mismos que en el servicio normal, primero nos aseguraremos de reiniciar el servicio del contenedor (no el contenedor, ¡cuidado!):

docker exec -it ejabberd sh -c "ejabberdctl restart"

3. Gestión y comandos

Ejabberd utiliza en su versión de terminal el comando ejabberdctl para administrar el servidor. Por lo que tendremos que ir pasandole el comando a docker para:

Crear un usuario y su contraseña

docker exec -it ejabberd ejabberdctl register alex alexdns.local "P@ssw0rd"

Cambiar la contraseña de un usuario

docker exec -it ejabberd ejabberdctl change_password alex alexdns.local "OtraP@ssw0rd"

Listar todos los usuarios de un host

Hay que especificar al final el nombre del servidor. Existe la posibilidad que el servidor tenga dos nombres

docker exec -it ejabberd ejabberdctl registered_users alexdns.local

Borrar Usuarios

docker exec -it ejabberd ejabberdctl unregister alex alexdns.local

Acceder a la web de administración

Ahora, para acceder a la página web de administración con la interfaz GUI nos conectaremos del siguiente modo a la url:

  • http://ip_server:5280/admin/

  • usuario: alex@alexdns.local

  • password: P@ssw0rd

A nivel de servicio tambine nos puede interesar gestionarlo:

Iniciar servidor

docker exec -it xmpp service ejabberd start

Comprobar usuarios conectados al servidor

docker exec -it xmpp ejabberdctl connected_users

Revisar los logs

docker exec -it xmpp tail -f /var/log/ejabberd/ejabberd.log

En el siguiente enlace tienes más información sobre como usar nginx, caddy y traeffik para gestionar una conexión segura: https://ugeek.github.io/blog/post/2021-11-07-docker-monta-tu-propio-servidor-de-mensajeria-ejabberd--xmpp.html

Última actualización