Instalar un servidor Prosody XMPP en Debian y Ubuntu

Instalar un servidor Prosody XMPP en Debian, Ubuntu y derivados.

La herramienta Prosody crea un servidor XMPP muy rapido ademas de ligero. Está escrito en Lua, y además de ser de código abierto es una excelente opción para tener nuestro propio servidor de mensajería instantánea con el protocolo XMPP.

Para crear el articulo hemos instalado Prosody en Ubuntu 18.04 server, pero estas instrucciones también son válidas para otras versiones de Ubuntu inferiores (incluso la 16.04 LTS) y superiores, al igual que en Debian y otros derivados.

 

Instalar un servidor Prosody XMPP en Debian y Ubuntu

Prosody está incluido en los repositorios oficiales de Ubuntu y Debian, pero son versiones obsoletas. No te preocupes, el equipo de Prosody mantiene su propio repositorio con la última versión estable.

Instalar Prosody

Lo único que debemos hacer es agregar el repositorio, pero ojo!!!… dependiendo de la versión que quieras instalar debes modificar el nombre identificativo de tu Ubuntu, Debian o derivado.

Las versiones admitidas son:

  • Debian: stretch, buster, sid.
    • Alias: unstable→sid, stable→stretch, testing→buster
  • Ubuntu: xenial, bionic, eoan, focal.

Nosotro usaremos Ubuntu 18.04 LTS bionic, por tanto agregamos lo siguiente.

echo 'deb https://packages.prosody.im/debian bionic main' | sudo tee /etc/apt/sources.list.d/prosody.list

Importamos la key pública.

wget https://prosody.im/files/prosody-debian-packages.key -O- | sudo apt-key add -

Actualizamos e instalamos la última versión de Prosody.

sudo apt update

sudo apt install prosody

Iniciamos y habilitamos Prosody para que arranque con el sistema.

sudo systemctl start prosody

sudo systemctl enable prosody

Verificamos sus estado.

systemctl status prosody
Status prosody

Status prosody

 

Abrir puertos del firewall

Nuestro servidor necesita los  puertos TCP 5269 y 5222. El puerto 5222 se usa para la conexión del cliente al servidor y el 5269 para el servidor. Podemos verificar que los tenemos abiertos con el comando netstat, si no lo tienes instalado lo puedes hacer con el siguiente comando.

sudo apt install net-tools

Verificamos los puertos…

sudo netstat -lnptu | grep lua

ejemplo…

Puertos abiertos de Prosody

Puertos abiertos de Prosody

Si tienes habilitado el firewall UFW, entonces abres los puertos así…

sudo ufw allow 5222,5269/tcp

 

Configurar Prosody XMPP

Abrimos con nuestro editor favorito el archivo de configuración.

sudo nano /etc/prosody/prosody.cfg.lua

Veras algo similar a la siguiente imagen, puedes modificar según tus necesidades.

Archivo de configuracion de Prosody

Archivo de configuración de Prosody

Es importante prestar atención a unas configuraciones que son necesarias, por ejemplo si quieres permitir el registro de una cuenta desde un cliente XMPP.

allow_registration = false;

# o

allow_registration = true;

Si solo quieres permitir comunicaciones encriptadas modifica estas dos líneas tal como te indico.

c2s_require_encryption = true

s2s_require_encryption = true

El Virtualhost es localhost, es interesante modificarlo por tu dominio.

VirtualHost "localhost"

# modificamos...

VirtualHost "chat.midominio.es"

Una vez terminada la edición, guarda el archivo y cierra el editor.

 

Instalar el certificado TLS de Let’s Encrypt

Instalamos el cliente Let’s Encrypt (certbot) en Ubuntu desde el PPA oficial.

sudo apt install software-properties-common
sudo add-apt-repository ppa:certbot/certbot
sudo apt install certbot

Ubuntu 18.04 server viene con Apache instalado por defecto, por tanto es el que vamos a utilizar. Agregamos certbot a  Apache.

sudo apt install python3-certbot-apache

 

Configurar Apache

Creamos el virtualhost.

sudo nano /etc/apache2/sites-available/prosody.conf

Agrega el siguiente código, con el dominio que insertamos en el archivo de configuración de Prosody.

<VirtualHost *:80>        
        ServerName chat.midominio.es

        DocumentRoot /var/www/prosody
</VirtualHost>

Guarda y cierra el archivo. Crea el directorio WebRoot.

sudo mkdir /var/www/prosody

Establecemos el usuario de Apache como propietario de la raíz.

sudo chown www-data:www-data /var/www/prosody -R

Habilitamos el virtualhost y recargamos Apache para que tome la nueva configuración.

sudo a2ensite prosody.conf

sudo systemctl reload apache2

Instalamos el certificado Let’s Encrypt TLS (con tus datos reales).

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email mail@midominio.es -d chat.midominio.es

 

Instalar el Certificado en Prosody

sudo nano /etc/prosody/prosody.cfg.lua

Agregamos el siguiente código con tus datos reales.

ssl = {
      key = "/etc/letsencrypt/live/chat.midominio.es/privkey.pem";
     certificate = "/etc/letsencrypt/live/chat.midominio.es/fullchain.pem";
}

Guarda el archivo y cierra el editor.

Concedemos los permisos necesarios para que el usuario «prosody», lea el certificado y el archivo de la key.

sudo setfacl -R -m u:prosody:rx /etc/letsencrypt/

 

Crear cuentas de usuario en Prosody

La cuenta de usuario la puedes crear con el siguiente comando (te solicitara una contraseña).

sudo prosodyctl adduser usuario@chat.midominio.es

También puedes modificar la contraseña.

sudo prosodyctl passwd usuario@chat.midominio.es

 

Terminar la instalación de Prosody

Como punto final verificamos que la configuración del servidor es válida, y reiniciamos el servidor.

sudo prosodyctl check config
sudo systemctl restart prosody

El cliente linux más famoso para el protocolo XMPP de mensajería instantánea es Pidgin, pero tienes otras opciones bastante buenas como puede ser Empathy.

sudo apt install pidgin

sudo apt install empathy

La configuración de acceso es bastante simple, tan solo debes rellenar los siguientes datos.

  1. Protocolo
  2. Usuario
  3. Dominio
  4. Password

 

Canales de Telegram: Canal SoloLinux – Canal SoloWordpress

Espero que este articulo te sea de utilidad, puedes ayudarnos a mantener el servidor con una donación (paypal), o también colaborar con el simple gesto de compartir nuestros artículos en tu sitio web, blog, foro o redes sociales.

 

Agregar comentario