Mensajería instantanea con Prosody en Debian Squeeze

¡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



Ingeniero Termo Energético de profesión. Administrador de Redes desde hace ya varios años. Programador en Visual FoxPro. Debianero de Corazón, y "OldFashion Man". Contacto: federicotoujague@gmail.com / +53 5 5005735

20 comentarios

  1.   eliotime3000 dijo

    Buena propuesta. A ver si me doy tiempo como para hacer un cliente de mensajería instantánea.

    1.    elav dijo

      ¿Otro cliente XMPP? Hombre, no creo que sea necesario a no ser, que lo hagas por aprender y te lo propones como meta. Ya están Pidgin, Kopete, KDE-Telephaty, Empathy, PSI… en fin.

      1.    dhunter dijo

        Bueno, tanto como otro cliente no creo pero sería divertido jugar con la API XMPP y enviar mensajes desde aplicaciones.

      2.    Rots87 dijo

        estaria bien si por ejemplo necesitas hacer una especie de chat para una red interrna o algo similar

      3.    Braybaut dijo

        Si eso es verdad, pero este tutorial sirve para implementar un cliente XMPP en redes Libres

        1.    dhunter dijo

          Este tutorial es para el servidor, clientes libres ya hay unos cuantos.

      4.    eliotime3000 dijo

        Para Windows, serviría mucho (a falta del mítico Messenger, sería bueno hacer uno mejor, ¿no es así?).

  2.   Federico A. Valdés Toujague dijo

    Muchas Gracias a TODOS por sus comentarios. Mi sueño es tener un cliente web para chatear en mi LAN. Instalé el ejabberd con el JwChat y como la interfaz en Squeeze era de palo (y fea y con bugs), ni lo probé. Probé con el servidor web Yaws y su cliente web Yaws-chat y no lo pude echar a andar adecuadamente. Me descargaron el PHPFreeChat y nada. Con el Drupal 6 del Lenny traté de configurar los plugins para el chat y me cansé en ese entonces, hace varios años ya. Sueño con no depender de la instalación de clientes y chatear con un navegador nada más. El Reto está lanzado.

    1.    eliotime3000 dijo

      De nada, colega. A ver si logro terminar de descargarme el DVD1 de Wheezy para hacer un tuto acerca de cómo instalar el ZPanelX en la nueva versión de Debian Stable (espero que los desarrolladores del ZPanel no abandonen el soporte de Ubuntu 12.04 LTS, porque sino no podría hacer una instalación automatizada de ese panel de control que me pareció fantástico cuando lo probé en Windows).

  3.   Nuevo en Debian dijo

    Hola, si me instale el Debian 7 hace un rato. Sin embargo no tengo internet, me dice que me falta el firmware. Es un usb tp link tl-wn321g. Puedo descargarlo desde Windows? Perdonen que pregunte aqui es que no quiero registrarme en ningun foro de debian, ademas no se muy bien ingles.

    1.    eliotime3000 dijo

      Si el TP-Link tiene el chipset de Altheros, debería reconocerlo sin complicaciones.

      Busca si el modelo de tu USB TP-Link tiene el chipset Altheros, además de anotar el ID de Hardware.

    2.    comentarista dijo

      Si quieres descarga la iso aquí, son isos debian pero vienen con drivers y firmware no libres.

      http://live.debian.net/cdimage/release/7.0.0+nonfree/i386/iso-hybrid/

  4.   Rots87 dijo

    yo quisiera un buen tuto sobre asterisk jejeje

    1.    Julio Cesar dijo

      Te recomiendo que empieces por usar Trixbox CE o Elastix ambos son basados en Asterisk

      http://www.elastix.org/

      http://www.trixbox.com/

  5.   msx dijo

    Muy buena guía, muchas gracias 🙂

  6.   Alejandrodez dijo

    Excelente, muchísimas gracias me ha sido muy útil.

  7.   @Jlcmux dijo

    Lo probaré en la Red Libre tipo Mesh que estamos implementando en mi ciudad. Luego les cuento como me va con esto.

    Saludos.!

  8.   @Jlcmux dijo

    Que pena. Me quede en el último paso. Donde configuro lo de los DNS? Que pena ser el único que pregunta esto jaja

  9. Tengo algunas preguntas, interesantisimas:

    Has sabido o hay experiencia para una instalacion en produccion de prosody para 3000 usuarios donde concurrentemente hay conectados al menos 1000 chateando al msmo tiempo?

    Soporte de: transferencia ficheros, VIP, y este el mas importante log de conversaciones?

    ENTORNO: 3mil usuarios, con reg web desabilitado y scripts via servidor invocados a traves de gambas cgi para registro y manipulacion de usuarios, en un 8 nucleos DELL T110 con 8Gb de ram de uso exclusivooo para ejabberd en lenny con erland portado y ejabberd

    se me incha la pelota, despues de acomodarle muchisimos problemas en el ejabberd, me encuentro con esto, en verdad esto me hace sentir como que perdi mi tiempo..

    1.    Federico A. Valdés Toujague dijo

      Mis saludos PICCORO Lenz McKAY !!!. Mira, te recomiendo visites el sitio oficial del Prosody http://prosody.im, y amplíes la información. No tengo experiencia sobre 1000 clientes chateando al mismo tiempo con el Prosody. Y no creo hayas perdido tu tiempo con el Ejabberd. Es una decisión que tomaste en época del Lenny. De paso te confieso que el Ejabberd, fue el primero que instalé en mi lan empresarial, donde acaso chateaban al unísono, 50 o 60 usuarios. El servidor ni se enteraba, y eso que tenía solo 512 megas de RAM. 🙂 Y sip, trabajo me costó configurarlo adecuadamente. El Prosody es muy sencillo, pero te invito a que averigües más sobre sus potencialidades. No es que dude de él, sino que no tengo la experiencia que tu necesitas.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.