Como Crear Tu Propio Servidor De Mensajeria Instantanea

¿Por que crear un servidor de mensajería, cuando ya existen diversos servicios? Seguramente es lo primero que preguntaras al ver el titulo del articulo. No te culpo, yo también me lo preguntaría ;) Esto lo podemos aplicar en el campo profesional, digamos que trabajamos en X empresa, pero esta no cuenta con una red privada para la comunicación, sino que simplemente decidieron usar Gtalk para mantener en contacto a los empleados. Acá entras tu, al saber Como Crear Tu Propio Servidor De Mensajería Instantanea, aportaras algo propio a la X empresa.

Protocolo mensajeria instantanea XMPP

¿Que Necesitamos?

  • Servidor propio, ya sea un VPS Hosting, servidor dedicado ó local.
  • Instalar Prosody.
  • Configurar Servidor.
  • Cliente mensajeria instantanea, que maneje protocolo XMPP. Encontraremos a pidgin, adium y otros.
  • Configurar cliente mensajeria instantanea.

Una vez tengamos nuestro servidor podemos continuar con la instalación, ya sea en cualquier SO Server Linux ó Windows, tenemos que instalar prosody.

Instalación Prosody

En la pagina oficial podemos encontrar una guía de como realizar la instalación tanto en Sistemas Operativos Linux ó en Windows.

Configuración De Prosody

Una vez instalado Prosody, necesitamos dar ciertas configuraciones a este servidor de Mensajería Instantanea. Para esto necesitamos editar el archivo prosody.cfg.lua, en Linux este archivo se encuentra en la siguiente ruta: /etc/prosody/prosody.cfg.lua. Si lo instalamos en Mac OS X por medio de HomeBrew lo deberías de encontrar en la siguiente ruta: /usr/local/etc/prosody/prosody.cfg.lua. Si lo instalas en otros sistemas operativos como windows, deberías de encontrarlo en la carpeta de prosody en la raiz del SO.

El siguiente es un archivo de configuración de ejemplo:

[code lang=»javascript» collapse=»true»]
modules_enabled = {
— Generally required
"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
"dialback"; — s2s dialback support
"disco"; — Service discovery

— Not essential, but recommended
"private"; — Private XML storage (for room bookmarks, etc.)
"vcard"; — Allow users to set vCards

— Nice to have
"legacyauth"; — Legacy authentication. Only used by some old clients and bots.
"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
"register"; — Allow users to register on this server using a client and change passwords
— Other specific functionality
–"posix"; — POSIX functionality, sends server to background, enables syslog, etc.
–"console"; — telnet to port 5582 (needs console_enabled = true)
–"bosh"; — Enable BOSH clients, aka "Jabber over HTTP"
–"httpserver"; — Serve static files from a directory over HTTP
};

— Disable account creation by default, for security
— For more information see http://prosody.im/doc/creating_accounts
allow_registration = false;

— These are the SSL/TLS-related settings. If you don’t want
— to use SSL/TLS, you may comment or remove this
ssl = {
key = "certs/localhost.key";
certificate = "certs/localhost.crt";
}
— This allows clients to connect to localhost. No harm in it.
VirtualHost "localhost"

— Section for example.com
— (replace example.com with your domain name)
VirtualHost "example.com"
— Assign this host a certificate for TLS, otherwise it would use the one
— set in the global section (if any).
— Note that old-style SSL on port 5223 only supports one certificate, and will always
— use the global one.
ssl = {
key = "certs/example.com.key";
certificate = "certs/example.com.crt";
}

enabled = false — This will disable the host, preserving the config, but denying connections

— Set up a MUC (multi-user chat) room server on conference.example.com:
Component "conference.example.com" "muc"
[/code]

Como consejo, fijate en la linea 29, el valor puede ser cambiado a true, esto nos servirá para crear usuarios desde el cliente de mensajería instantanea. No solamente debemos configurar Prosody, sino tambien, añadir un virtual host a nuestro servidor para tener nuestro propio dominio para nuestra mensajeria.

[code lang=»javascript»]

DocumentRoot rutaServicioMensajeria //la ruta donde se encuentre el servcio
ServerName miHostdime.cor //el dominio que deseemos

[/code]

En IpServidor, tendremos que colocar la ip de nuestro servidor, si es local solo hay que colocar 127.0.0.1 o la ip privada en caso que se ocupe en varios equipos de la red. Los otros campos ya están «debidamente» descritos :)

Añadir Usuarios

Habiendo realizado las configuraciones pertinentes, debemos continuar con la adición de usuarios al servidor, o sino quienes usarían este servicio? El registro lo podemos hacer de dos formas, por la consola del servidor, o por la interfaz del cliente de mensajería instantanea, este ultimo siempre y cuando hayamos habilitado la opción de la linea 29 del archivo prosody.cfg.lua.

Desde Consola

En los sistemas linux podemos usar el siguiente comando:

[code lang=»js» collapse=»true»]
prosodyctl adduser [email protected]
[/code]

Seguidamente se nos pedira asignarle una contraseña al usuario. Pero en windows ya es diferente, tendremos que usar el siguiente comando:

[code lang=»js»]
prosodyctl register [email protected] mypass
[/code]

Donde mypass, sera la contraseña asignada al usuario. Como anteriormente se dijo, también hay otra forma, mas sencilla para añadir usuarios, y es usando la interfaz gráfica de la aplicación de mensajeria instantanea que usemos.

Desde La Aplicación

Si usamos a pidgin como ejemplo para la configuración, tenemos que realizar lo siguiente:

añadir usuario mensajeria instantanea

Teniendo en cuenta que se marca la opción que esta dentro del cuadro rojo, ademas de haber habilitado el registro en el archivo de Prosody.

Como vemos la creación de un servidor de mensajeria instantanea es bastante facil, sencillo y rapido con Prosody. Si pensamos implementarlo en una empresa, con varias sedes, es mejor que le demos seguridad al servicio mediante la configuración de las ipTables, en el caso de linux.