Instalar Ejabberd con soporte para MySQL en ubuntu server

Durante la última implementación, teniamos un item dentro de la lista de servicios a implementar y era la mensajería interna (xmpp), durante muchos años la implementamos usando Openfire, pero, a pesar de sus excelentes prestaciones, nos parecía demasiado pesado para la labor que cumplía, además del hecho que núnca nos ha convencido JAVA😛, nos decantamos por utilizar ejabberd, el cual nos entrega las mismas prestaciones que Openfire (Conexión entre servidores, Capacidad para crear un cluster XMPP, Grupos Compartidos, Creación de Salas, Transportes MSN, Yahoo! y Gtalk, soporte SSL/TLS, entre otros) pero utilizando muchísimos menos recursos (22.9Mb que usa ejabberd, frente a los 200Mb que usa Openfire).
A la final, el cambio ha sido muy positivo, el servidor se siente mucho mas liviano, los usuarios no sintieron el “cambiazo” y ahora puedo dedicar unos Mb adicionales a otras tareas que demandan mas vitales.
La forma de instalarlo es bastante sencilla, aquí van los pasos:

Instalando el servidor ejabberd

Este paso es el mas sencillo

sudo apt-get install ejabberd

Agregando el soporte para MySQL en Erlang

Uno de los puntos especialmente complicados, es dotar a ejabberd de soporte para MySQL, puesto que el paquete provisto por Canonical, no trave dicho soporte activado por defecto, la forma mas fácil de conseguirlo es descargando los binarios precompilados desde internet.

wget -cd https://support.process-one.net/doc/download/attachments/415/mysql_beam.tar.gz?version=1&modificationDate=1141142989000

Descomprimimos y ubicamos los binarios junto con las librerías usadas por ejabberd

tar zxvf mysql_beam.tar.gz && cp mysql_beam/*.beam /usr/lib/ejabberd/ebin/

Con estos sencillos pasos, tendremos ejabberd instalado con soporte para MySQL

Configurando ejabberd para usar MySQL

Lo primero y mas importante será instalar MySQL

sudo apt-get install mysql-server

seguimos los pasos del instalador, asignamos un password para root y tendremos MySQL listo para usar
Ahora procedemos a crear el usuario ejabberd, el cual usará la base de datos jabber en MySQL

mysql -h localhost -ppassword -u root -S /var/run/mysqld/mysqld.sock
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 176
Server version: 5.1.37-1ubuntu5.4 (Ubuntu)
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.
mysql> GRANT ALL ON jabber.* TO ‘ejabberd’@’localhost’ IDENTIFIED BY ‘password’;
Query OK, 0 rows affected (0.00 sec)

Ahora creamos la base de datos que utilizará ejabberd

mysql -h localhost -ppassword -u ejabberd -S /var/run/mysqld/mysqld.sock
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 176
Server version: 5.1.37-1ubuntu5.4 (Ubuntu)
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.
mysql> CREATE DATABASE jabber;
Query OK, 1 row affected (0.00 sec)

Descargamos el esquema SQL que utiliza ejabberd para su funcionamiento

wget https://git.process-one.net/ejabberd/mainline/blobs/raw/2.1.x/src/odbc/mysql.sql

Importamos el esquema ejabberd en la base de datos jabber

mysql -D jabber -h localhost -p -u ejabberd -S /var/run/mysqld/mysqld.sock < mysql.sql

Editamos el archivo de configuración de ejabberd para indicarle la base de datos, usuario y contraseña que usará

sudo vim /etc/ejabberd/ejabberd.cfg

Indicamos el dominio a utilizar

{hosts, [“xmpp.slabinfo.com”]}.

Configuramos el administrador del dominio

{acl, admin, {user, “jortiz”, “xmpp.slabinfo.com”}}.

Configuramos los siguientes parametros

{auth_method, odbc}.
{odbc_server, {mysql, “localhost”, “jabber”, “ejabberd”, “password”}}.

Registramos el usuario administrador en el servidor

ejabberdctl register jortiz xmpp.slabinfo.com password

Reiniciamos ejabberd

sudo invoke-rc.d ejabberd restart

Para administrar el servidor, podemos ingresar a la interfáz web http://xmpp.slabinfo.com:5280/admin/ identificandonos con el usuario anteriormente registrado.

9 comentarios en “Instalar Ejabberd con soporte para MySQL en ubuntu server

  1. Disculpa, ya sabes como están las cosas en el vecindario. ¿Podrías explicar cómo hacerlo usando FireBird o Postgres, en lugar de MySQL, por favor?. Muy buen artículo, gracias.

    Responder
  2. Hola,

    Estimado yo tengo instalado la aplicacion FengOffice y en su base de datos ya tengo una tabla con los usuarios y password.

    Lo que necesito es lograr que este aplicativo utilice el user y password del FengOffice, como una integracion.

    El objetivo final es hacer andar este http://conversejs.org/ dentro del FengOffice y entiendo que este cliente requiere de XMPP / Jabber para funcionar.

    No tengo idea de casi nada pero me doy maña para hacer las cosas…

    Agradecere tu ayuda.

    Responder
  3. Hola esto de usar ejabberd con mysql es lo que permitiria tener los log de los chat centralizado en la bd mysql? o es olo para la gestion de perfiles de usuarios? gracias

    Responder

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