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
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
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 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.
- Protocolo
- Usuario
- Dominio
- 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.