Mensajería instantanea con Prosody en Debian Squeeze

prosody

¡Hola Amigos!. Hoy les presento a un moderno y flexible servidor Jabber/XMPP, escrito en el lenguaje Lua y antiguamente conocido como Lxmppd. Tiene las características de ser un sistema múltiple plataforma, de muy bajo consumo de recursos, fácil de usar, y extensible. Y sin más dilación, ¡entremos en materia!. Tal vez parezcan muchos aspectos, pero realmente son sencillos y cortos. A continuación veremos:

  • Servidor base
  • Instalamos paquetes necesarios
  • Aprendamos a configurar
  • Configuramos parámetros globales
  • Creamos y configuramos el host virtual
  • Generamos los certificados SSL/TLS
  • Habilitamos el host
  • Creamos el primer usuario
  • Registramos nuestro Prosody en un DNS
  • Comprobamos todo

Servidor base
El bajo consumo de recursos nos permite instalar al Prosody inclusive en nuestra propia estación de trabajo y brindar el servicio de Chat desde ella.

Instalamos paquetes necesarios
Para familiarizarnos con el Prosody, vamos a utilizar los paquete oficiales que vienen en el repositorio del Squeeze:

aptitude install prosody liblua5.1-sec0

Aprendamos a configurar
Leamos la documentación acompañante /usr/share/doc/prosody/doc/coding_style.txt, para familiarizarnos con el formato utilizado en los archivos de las configuraciones. Vamos a la carpeta /etc/prosody y listamos los archivos y directorios existentes. Los nombres de cada carpeta o archivo son intuitivos y denotan claramente para que se utilizan:

  • certs: Directorio donde se almacenarán los certificados SSL/TLS y sus claves privadas.
  • conf.avail: Directorio que contiene los archivos de configuración de los hosts virtuales que declaremos como disponibles. Funciona muy parecido a lo visto en posts anteriores relativos a servidores web, como el caso de la carpeta sites-available del Nginx.
  • conf.d: Carpeta donde se guardan los enlaces directos de hosts virtuales declarados en conf.avil y que queremos habilitar.
  • prosody.cfg.lua: archivo principal de la configuración del Prosody.
  • README: Archivo que nos da una “pista” para seguir adelante. ¡No deje de leerlo!.

Con lo leído hasta ahora, podemos intentar una configuración inicial mínima.

Configuramos los parámetros Globales
Estudiamos con detenimiento el archivo principal de configuración/etc/prosody/prosody.cfg.lua, al cual le hice una traducción libre y que podemos descargarlo al final. Salvemos el archivo original instalado mediante el siguiente comando:

cp /etc/prosody/prosody.cfg.lua /etc/prosody/prosody.cfg.lua.original

Vaciamos el archivo de configuración. Con el nano, editamos el prosody.cfg.lua ya vaciado, y pegamos el contenido del archivo de ejemplo descargado. Lo modificamos acorde a nuestras necesidades, y guardamos con el habitual Ctl + o. Posteriormente comprobamos la sintaxis del archivo de configuración:

cp /dev/null /etc/prosody/prosody.cfg.lua
nano /etc/prosody/prosody.cfg.lua
luac -p /etc/prosdy/prosody.cfg.lua

Y si no nos devuelve ningún mensaje, es que todo marcha bien.

Creamos y configuramos el Host Virtual
El archivo de nuestro host virtual, lo crearemos en el directorio /etc/prosody/conf.avail/con el nombre del host, más la extensión .conf.lua, y lo crearemos a partir del archivoexample.com.cfg.lua existente en esa carpeta:

mv /etc/prosody/conf.avail/example.com.cfg.lua /etc/prosody/conf.avail/web.amigos.cu.cfg.lua
nano /etc/prosody/conf.avail/web.amigos.cu.cfg.lua

Modificamos el archivo con los parámetros correctos acorde a nuestras necesidades. Podemos descargar una versión consistente con este ejemplo al final del post. No olvide eliminar la línea enabled = false — Elimine esta línea para habilitar este host.

Generamos los certificados SSL/TLS
Al ejecutar el comando de generación de los certificados, nos preguntarán datos relativos a nuestra empresa.

cd /etc/prosody/certs
openssl req -new -x509 -days 365 -nodes -out "web.amigos.cu.crt" -keyout "web.amigos.cu.key"

Comprobamos que los certificados fueron generados correctamente mediante ls -l.

Habilitamos el host
Para habilitar el host declarado en /etc/prosody/conf.avail/web.amigos.cu.cfg.lua, debemos crear un enlace simbólico de ese archivo en la carpeta conf.d. Después debemos reiniciar el servicio:

ln -s /etc/prosody/conf.avail/web.amigos.cu.cfg.lua /etc/prosody/conf.d/web.amigos.cu.cfg.lua
/etc/init.d/prosody restart

Tip: Abra una consola dedicada a ver los mensajes del log del Prosody mediante el comando tail -f /var/log/prosody/prosody.log. Si la última línea dice “Successfully daemonized to PID ####”, entonces ¡Todo funciona al Kilo!. Si por casualidad le da un mensaje de error, puede que tenga que matar manualmente el proceso “lua” que este en ejecución ANTES DE volver a reiniciar el Prosody. Para conocer el pid del Lua, ejecuteps -e | grep lua. Para matar el proceso, kill -kill #pid del lua.

Creamos el primer usuario
Para crear usuarios utilizamos el comando prosodyctl de la siguiente forma:

prosodyctl adduser admin@web.amigos.cu

El comando nos preguntará por el “password” del usuario. Observe que creamos al usuario “admin”, el cual declaramos como Administrador del Prosody en el archivo de configuración global prosody.cfg.lua.

RECOMENDAMOS NO utilice el comando prosodyctl para detener, iniciar, o reiniciar el servicio, sino que lo haga por los métodos tradicionales tales como:

/etc/init.d/prosody {start|stop|restart|reload}
invoke-rc.d prosody {start|stop|restart|reload}
service prosody {start|stop|restart|reload}

Registramos nuestro Prosody en un DNS
El servicio de mensajería instantanea descansa fuertemente en el servicio DNS. Cada usuario se identifica por su dirección o JID en la forma de usuario@dominio, donde el dominio indica el servidor en el cual está almacenada la cuenta. Con el objetivo de que el usuario se conecte e inicie sesión es necesario encontrar la dirección IP del servidor. De forma similar los servidores remotos necesitan contactar con el usuario@dominio para pasarle un mensaje. Por tanto, es necesario que el servidor Prosody tenga un registro tipo A en el servidor DNS de nuestra LAN. Por ejemplo:

192.168.10.20 IN A web.amigos.cu.

Comprobamos todo
Ya tenemos en ejecución a nuestro servidor Prosody. ¡Chateemos pues!. Instale el Pidgin o el Psi, o escoja el cliente XMPP de su preferencia y conéctese al servidor. Si lo logra, es que entonces siguió al pie de la letra el contenido de éste artículo. Sino, pregunte, que para eso se hicieron los blogs como éste. Ahhh!, si quiere chatear desde una consola, instale el Finch.

Confeccionamos un paquete con la documentación del sitio oficial del Prosody la cual esperamos sea de utilidad. Los que deseen descargar los paquetes directamente del repositorio del Prosody, visiten Repositorio de paquetes del Prosody.

A todos, ¡muy buena suerte y feliz Chat!

Descargar ficheros de ejemplo