Servidor de Chat con Raspberry Pi

Un amigo me ha dejado una Raspberry Pi y ando dando vueltas a experimentos varios. Esta mañana, hablando con un compañero de curso, este me comentó de un proyecto libre para convertir equipos en centros multimedia basado en software de XBOX de Microsoft (XBMC), si bien llegamos a la conclusión de que el pequeño miniordenador educativo tal vez no era lo más idóneo si quieres reproducir películas en HD (ojo, que hay una versión para Raspberry Pi de dicho software). Pero con todo esto del PRISM y el espionaje descarado de la NSA tal vez un servidor de chat pueda interesar a alguien.

Raspberry Pi de 2011
La Raspberry Pi del experimento

En este caso vamos a usar Prosody, y vamos a suponer que estáis usando la versión adaptada de Debian para la Raspberry Pi. Lo primero, como no, instalar Prosody:

sudo apt-get install prosody

Ok, ya está instalado. Con esto, el archivo de configuración básico y un par de usuarios creados ya podrías operar, pero vamos a configurar un poco la historia. Lo primero vamos a meter las librerías para encriptación, compresión y soporte de base de datos:

sudo apt-get install luasec lua-zlib luadbi

Con esto ya tenemos las librerías necesarias. Ahora toca irse al archivo de configuración y activar ciertos módulos. Dichos módulos, por defecto, vienen desactivados ya que las líneas en el archivo de configuración están comentadas con dos guiones al principio de la línea. Para descomentarlas simplemente borra esos guiones.

Para entrar a editar el archivo de configuración:

sudo gedit /etc/prosody/prosody.cfg.lua

Allí elegís ya los módulos a activar. Yo en el mío he activado estos:

                "privacy"; -- Support privacy lists
                "compression"; -- Stream compression
                "groups"; --Shared roster support
                "roster"; -- Allow users to have a roster. Recommended 
                "saslauth"; -- Authentication for clients and servers. Recommended if you want to log in.
                "tls"; -- Add support for secure TLS on c2s/s2s connections
                "disco"; -- Service discovery
                "private"; -- Private XML storage (for room bookmarks, etc.)
                "vcard"; -- Allow users to set vCards                
                "version"; -- Replies to server version requests
                "uptime"; -- Report how long server has been running
                "time"; -- Let others know the time here on this server
                "ping"; -- Replies to XMPP pings with pongs
                "adhoc"; -- Support for "ad-hoc commands" that can be executed with an XMPP client
                "admin_adhoc"; -- Allows administration via an XMPP client that supports ad-hoc commands

Vosotros configurad como queráis. Ahora sí que vamos con un punto importante: ¿queremos que la gente pueda registrarse o queremos sólo poder crear usuarios nosotros para tener un mayor control del acceso? Ya que hablamos de seguridad y privacidad es un punto importante. Por defecto el módulo de registro y la opción de permitir el registro están desactivados, así que si queremos activarlo toca descomentar el módulo “register” y la línea que pone allow_registration=true. Es de suponer que no tendréis una ip fija, al menos en España lo normal es tenerla dinámica y la fija implica un sobrecargo en la factura, por lo que será cosa buena haceros con un dominio (podéis conseguir uno gratis en noip.com). Luego buscáis en la configuracion una línea que pone VirtualHost “example.com” y la cambiáis por vuestro dominio. Debajo habrá una línea que pone enabled = false, la comentáis o borráis y estará activado vuestro dominio.

Bueno, con esto ya tendrías el servidor de chat furrulando cosa buena. Pero como no queremos que un pajillero del FBI lea lo que escribimos casi mejor vamos a encriptar, que para algo metimos antes el módulo (aunque si leemos entre líneas la declaración de Snowden, es probable que la NSA ya sea capaz de romper la seguridad SSL). En todo caso lo primero es irnos a la carpeta de certificados de Prosody y desde allí trabajar:

cd /etc/prosody/certs/
sudo openssl req -new -x509 -days 365 -nodes -out "prosody.cert" -keyout "prosody.key"

Tras esto te pedirá una serie de datos que, excepto uno, no son muy relevantes. La excepción es Common Name (e.g. server FQDN or YOUR name) []:, donde tenéis que poner el nombre de dominio conseguido antes, el resto si queréis los podéis ignorar. Una vez acabado este proceso se crearán dos archivos: prosody.cert y prosody.key. Con ellos creados os toca volver a abrir para editar el archivo de configuración principal.

Ahí tenéis que copiar lo siguiente dos veces:

ssl = {
key = “/etc/prosody/certs/prosody.key”;
certificate = “/etc/prosody/certs/prosody.cert”;
}

La primera vez lo ponéis sobre las rutas ssl por defecto y ponéis exactamente lo mismo justo debajo de la línea de VirtualHost “elnombrededominioquetengáis”.

Yo no me voy a meter a configurar base de datos, aunque instalara antes la librería, porque en una Raspeberry Pi no es que vayamos sobrados de recursos. Si queréis hacerlo tenéis un excelente tutorial en español aquí (fue uno de los varios que utilicé como documentación mientras hacía las pruebas).

Bueno, una vez acabado esto ya sólo nos queda lanzar Prosody:

sudo /etc/init.d/prosody start

Podéis modificar el sistema para que arranque al a vez que el sistema operativo, si lo véis necesario. Ahora con cualquier cliente de XMPP o Jabber, como Pidgin, podéis acceder a él. Cuando entréis por primera vez os pedirá que creéis una cuenta en el servidor. Bueno, si habéis habilitado el registro de usuarios bien, ¿y si no? Ya lo comentamos arriba, puedes no permitir el registro y crear tú los usuarios, si quieres un servidor de chat para un pequeño grupo de trabajo/amigos no es mala idea. Bueno, los usuarios se crean con la sintaxis sudo prosodyctl adduser nombredeusuario@eldominioquepillaras. Por ejemplo, supongamos que tu dominio es fucknsa.cc y el usuario que quieres crear se va a llamar, no sé, un nombre aleatorio, por ejemplo assange:

sudo prosodyctl adduser assange@fucknsa.cc

Por cierto, que si quieres montar el servidor de chat en una red local no necesitarás el dominio.

Bueno, ya tienes tu cacharrito con servidor de chat. A divertirse tocan.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s