Crea tu propio servidor XMPP ejabberd

Crea tu propio servidor XMPP ejabberd

xmppEn este tutorial vamos a instalar ejabberd en nuestro servidor. Este daemon es una implementación libre del protocolo de mensajería instantánea XMPP.

Dicho protocolo es usado frecuentemente para la prestación de muchos servicios por google, facebook, tuenti... A mi juicio, la gran ventaja que ofrece es que es posible crear una gran red de servidores de forma que cada uno no dependa de otro y poder ofrecer un servicio descentralizado e independiente. Es decir, los usuarios conectados con el servidor que se monte siguiendo este tutorial tendrán conectividad plena con los de otros servidores XMPP tal como funciona el correo electrónico, por ejemplo.

[caption id="attachment_6362" align="aligncenter" width="818"]funcionamiento xmpp Ejemplo de envío de mensaje desde mengano a fulano, asociados a dos servidores distintos.[/caption]

Las posibilidades que ofrece, dependen en gran medida de la aplicación cliente que se autentifique con el servidor, estas pueden ser sin perjuicio de otras que me deje en el tintero:

  • Chat
  • Chat de grupo (MUC)
  • Transferencia de archivos.
  • Voz
  • Vídeo (Jingle)

Hay un manual completo oficial http://www.ejabberd.im/files/doc/guide.html

A ELLO: Para instalar el servidor en debian/ubuntu, como de costumbre:
sudo apt-get update
sudo apt-get install ejabberd
Modificación del archivo de configuración.

Lo más difícil de todo, que tampoco lo es tanto, es modificar el archivo de configuración /etc/ejabberd/ejabberd.cfg

sudo nano /etc/ejabberd/ejabberd.cfg
Se buscan las líneas:
%%Admin user
{acl, admin, {user, "", "localhost"}}.

%%Hostname
{hosts, ["localhost"]}.
Al final quedarán de la siguiente forma:
%%Admin user
{acl, admin, {user, "administrador", "servidor.es"}}.

%%Hostname
{hosts, ["servidor.es"]}.

Donde "administrador" es el nombre de quien queráis que administre el servidor. (aun no lo hemos creado) (hay que ponerlo con comillas incluidas). Donde servidor.es es el DNS o la dirección IP del servidor. (las cuentas de usuario serán del tipo usuario@servidor.es) En ambos sitios se pueden incluir varios separados por comas.

Ahora creamos el usuario administrador. Para que los cambios escritos en el archivo tengan efecto reiniciamos el servidor ejabberd. También vale reiniciar la máquina.

sudo service ejabberd restart
Creamos el usuario:
sudo ejabberdctl register administrador servidor.es 123patata

Donde administrador es el usuario que queramos que sea el administrador (el mismo que pusimos en el archivo), servidor.es el servidor (también ha de coincidir con el del archivo) y 123patata la contraseña de usuario administrador.

Con esto ya deberíamos tener listo el servidor.

¡Perfecto!El servidor está listo para funcionar.
COSAS ÚTILES:

Ejabberd tiene un panel de administración web accesible desde el puerto 5280 http://servidor.es:5280/admin se entra con el usuario y contraseña escritos anteriormente.

[caption id="attachment_6350" align="aligncenter" width="600"]panel administracion ejjaberd panel administracion ejjaberd[/caption] Para agregar más usuarios se puede hacer desde ese panel o con el comando:
sudo ejabberdctl register fulano servidor.es 123patata2

Donde fulano es el nombre del nuevo usuario y 123patata2 su contraseña. (servidor.es es el servidor que debe coincidir con el del archivo ejabberd.cfg)

para eliminar un usuario, también desde el panel o con el comando:

sudo ejabberdctl unregister fulano
Hay muchos clientes disponibles para este servidor:

Linux y windows: pidgin o jitsi De forma nativa algunas distribuciones traen clientes XMPP (p. ej: Empathy)

Para android yo recomiendo Xabber. Solo tiene chat y chat multiusuario pero lo que hace lo hace muy bien y es de código abierto. Además tiene sistema OTR de cifrado para los más paranoicos.

[caption id="attachment_6351" align="aligncenter" width="480"]aplicacion para movil ejemplo de usuarios conectados a nuestro servidor desde android[/caption]

Deja un comentario


7 comentarios


david gruzzi · Hace 8 meses

tengo una pregunta se tiene que tener instalado un servidor dns dentro del mismo server xmpp ?? es que sigo todos los paso pero al momento de configurarlo en un cliente ya sea jitsi, pidgin no logro conectar con el server pero si coloco la ip el nombre del admin en la web si puedo crear usuarios, cual crees que podria ser ele problema

gst990wrz.b · Hace 2 años

Hola, ¿que biblioteca o tutorial me recomandas para programar mi propio cliente XMPP? Gracias, saludos.

maicoly · Hace 1 año

puedes hacer un middleware en java

gst990wrz.b · Hace 1 año

mmm capaz no me entendiste, en realidad busco alguna libreria que me facilite programar un cliente XMPP en Windows, ANdroid o multiplataforma.

IVONE · Hace 3 años

disculpa yo estoy haciendo mi app de chat y lo que me gustaria saber es como puedo separar los chats segun la persona asta el momento me los mezcla como si fuera un chat grupal intente guiarme con el de xabber pero por la encriptacion y demas no encuentro la clase donde se inicializan las variable que necesito no se si me pudieras ayudar, y de antemano gracias

Barón Ashler · Hace 3 años

Yo descargue el archivo comprimido desde la pagina y a la hora de seguir el tute no encontre el archivo ejabberd.cfg alguna posible solucion? lo que hare en otro caso sera instalarlo desde repositorio :( gracias de antemano (y)

Fito_Galache · Hace 3 años

Hola, ¿que archivo has descargado? en la web de ejabberd solo encuentro un instalable y el código fuente.

Barón Ashler · Hace 3 años

Bien no te preocupes mañana instalare así como esta en el tute haber si queda

Barón Ashler · Hace 3 años

El código fuente :s

Barón Ashler · Hace 3 años

Orale que buen post, me imagino que si lo necesito para un server local habrá que ponerle la dirección ip de la máquina??? Gracias un saludo

Fito_Galache · Hace 3 años

por supesto que puedes agregar el módulo de chat con XMPP. La aplicación mencionada el el artículo "Xabber" es de código abierto y te puede servir como base. Nunca he usado un servidor XMPP en windows pero como cliente Jitsi funciona bien. Se pueden enviar mensajes entre cualquier tipo de dispositivos.

imudryj · Hace 3 años

Master, una pregunta, tengo una aplicacion android desarrollada para un objetivo X... puedo agregarle un modulo de chat y chatgrupal con XMPP, q cliente convendria???? Puedo enviar mensajes a un device desde una .NET webApp??? Que servidor XMPP recomendarias si trabajo con Guindows???