# Ejabberd

Se trata de un servidor de mensajería instantánea de código abierto. Válido para plataformas Unix BSD, GNU/Linux, Microsoft Windows entre otras. Para la comunicación instantánea se utiliza XMPP.

## Instalación y configuración

En mi caso estoy utilizando dos VM conectadas en red NAT. El equipo donde estoy configurando ejabberd es un servidor de Ubuntu 22.04 donde también tengo funcionando el servicio de DNS con el dominio `haven.haven.local`.

## Comandos básicos

Algunos comandos básicos para usar ejabberd:

Ver el estado actual del servicio ejabberd:

```
sudo /opt/ejabberd-24.02/bin/ejabberdctl status
```

Listado de usuarios creados en un nodo o server (roster)

```
sudo /opt/ejabberd-24.02/bin/ejabberdctl registered-users haven.haven.local
```

Parar el servicio ejabberd

```
sudo /opt/ejabberd-24.02/bin/ejabberdctl stop
```

Iniciar el servicio ejabberd

```
sudo /opt/ejabberd-24.02/bin/ejabberdctl start
```

## Configuración básica

Vamos a editar el archivo `ejabber.yml`  y modificaremos algunos parámetros.&#x20;

```
nano /opt/ejabberd/conf/ejabberd.yml
```

Añadimos el dominio del servidor al `host,` en mi caso `haven.haven.local`.

<figure><img src="https://2817582392-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvGN1WZpuVtUpSb3xgLvp%2Fuploads%2FSMqq7lo7i1L7FiekMbvG%2Fimage.png?alt=media&#x26;token=504620fb-0806-4c36-8197-e94a856747be" alt=""><figcaption><p>Cambiar el host al dominio del servidor</p></figcaption></figure>

Buscamos el apartado `trusted_network` y lo ponemos en `all`, esto es:

<figure><img src="https://2817582392-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvGN1WZpuVtUpSb3xgLvp%2Fuploads%2FDWl1Ju3gZvIIjXzVeGGP%2Fimage.png?alt=media&#x26;token=e5c852f9-8372-4875-9160-8d47fbdb5e64" alt=""><figcaption><p>Permitimos todo como "trusted_network"</p></figcaption></figure>

Ahora le vamos a dar permisos de administrador al usuario `admin` que hemos creado previamente:

<figure><img src="https://2817582392-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvGN1WZpuVtUpSb3xgLvp%2Fuploads%2FJk11xdCfn2HGrrPNbXmq%2Fimage.png?alt=media&#x26;token=44589626-e9b7-4eec-a8fb-f0bc2f93f738" alt=""><figcaption><p>Permisos de administración al usuario admin</p></figcaption></figure>

El **acceso web** viene *habilitado por defecto* por las siguientes lineas:

<figure><img src="https://2817582392-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvGN1WZpuVtUpSb3xgLvp%2Fuploads%2Fjt5yyvYioqj9LrdjlsM0%2Fimage.png?alt=media&#x26;token=3e0a6099-4731-4a67-89d3-72af88cb8321" alt=""><figcaption><p>Puerto 5280 del acceso web de ejabberd</p></figcaption></figure>

### Creación de cuentas de usuario&#x20;

La primera cuenta a crear es la cuenta de `admin` y  la utilizaremos para administrar nuestro ejabberd xmpp vía web. Para crear una cuenta necesitamos el comando `ejabberdctl.`

En mi caso, los parámetros que he utilizado son:

|            |                        |
| ---------- | ---------------------- |
| register   | crear cuenta           |
| usuario    | admin                  |
| dominio    | haven.haven.local      |
| contraseña | la contraseña de admin |

La siguiente línea de comando creamos un usuario administrador del sistema:

```
sudo ejabberdctl register admin haven.haven.local tupassword
sudo ejabberdctl register punky haven.haven.local tupassword
```

<figure><img src="https://2817582392-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvGN1WZpuVtUpSb3xgLvp%2Fuploads%2Fql6oHgjYX2snkDrlcAUh%2Fimage.png?alt=media&#x26;token=5e947aa9-14b3-428c-8fb6-de2a75db05e2" alt=""><figcaption><p>Creando un usuario admin en ejabberd</p></figcaption></figure>

Si quieres visualizar los usuarios registrados en el sistema puedes hacer:

```
sudo ejabberdctl registered-users haven.haven.local
```

Y te mostrará la lista de usuarios creados.

## Acceso vía web

En mi caso, me voy a conectar desde la VM que está haciendo de cliente y utilizo la IP del servidor con el puerto por defecto de ejabberd: `5280`.&#x20;

```
https://192.168.6.100/admin
```

Nos saldrá una ventana donde nos pide el `usuario` y `contraseña` para acceder. Para ello usaremos el usuario `admin` y ya tendremos acceso a la web de administración.

<figure><img src="https://2817582392-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvGN1WZpuVtUpSb3xgLvp%2Fuploads%2FhDTVH5FD2zh8Kk8aBwjh%2Fimage.png?alt=media&#x26;token=20023e2f-3d85-4d38-8f45-8d09a905eaef" alt=""><figcaption><p>Web de administración de ejabberd</p></figcaption></figure>

Si clicamos en `Dominios Virtuales` vemos el dominio que hemos creado:

<figure><img src="https://2817582392-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvGN1WZpuVtUpSb3xgLvp%2Fuploads%2FFOspkrCD5bVLaX9kqMny%2Fimage.png?alt=media&#x26;token=51e3c143-b87e-4197-b86f-97d7ebb94f6f" alt=""><figcaption><p>Dominio haven.haven.local </p></figcaption></figure>

Si clicamos en el dominio `haven.haven.local` accedemos a otras opciones de configuración, como muestra la siguiente imagen.

<figure><img src="https://2817582392-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvGN1WZpuVtUpSb3xgLvp%2Fuploads%2F2evPok19SJJh1lURYccG%2Fimage.png?alt=media&#x26;token=944540cb-de96-4690-8d32-33429c7604a5" alt=""><figcaption><p>Dashboard de configuración de ejabberd</p></figcaption></figure>

Podemos ver y crear usuarios para el sistema. Modificar las contraseñas, eliminar los mensajes, crear y acceder  a las salas de chat, ver las estadísticas, etc.

## Pidgin

Para comprobar la comunicación entre los usuarios, utilizaremos la herramienta `pidgin`. Para ello vamos a  instalar pidgin tanto en la VM cliente como  en la VM servidor que tiene instalado y configurado el `ejabberd`. Así que instalamos pidgin con el comando:

```
sudo apt install pidgin
```

Editamos el archivo /etc/hosts de la VM cliente y escribimos la IP del servidor apuntando al dominio en cuestión:

<figure><img src="https://2817582392-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvGN1WZpuVtUpSb3xgLvp%2Fuploads%2FGUSw28pxowCo1qW3AfQP%2Fimage.png?alt=media&#x26;token=fba6bd6a-74d2-4cd1-aa7d-7638c4b1d322" alt=""><figcaption><p>Archivo /etc/hosts en el equipo cliente</p></figcaption></figure>

Ahora accedemos a Pidgin y añadimos uno de los usuarios que hemos creado en ejabberd.

<figure><img src="https://2817582392-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvGN1WZpuVtUpSb3xgLvp%2Fuploads%2FtRjw1I9qMEhSdwnSppgm%2Fimage.png?alt=media&#x26;token=da9af705-3265-47fb-afa8-3ed5f4029da1" alt=""><figcaption><p>Pidgin</p></figcaption></figure>

## Links

* <https://www.process-one.net/blog/ejabberd-xmpp-server-useful-configuration-steps/>&#x20;
* <https://homebrewserver.club/configuring-a-modern-xmpp-server-es.html> (Prosody)
* <https://docs.ejabberd.im/admin/configuration/>&#x20;
