🚧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:
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"
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