Openfire Server | XMPP Server Tutorial en Español

Necesitas de un servidor mensajería instantánea propio o chat para grupos? entonces sigue leyendo esta guía paso a paso sobre Openfire Server

Que es Openfire XMPP?

Openfire (anteriormente Wildfire) es un servidor de colaboración multiplataforma en tiempo real basado en el protocolo XMPP (Jabber).

Requerimientos mínimos Openfire Server

  • Servidor. Este puede ser Microsoft Windows o Linux o MacOS
  • Base de datos con conexión JDBC externa o interna embebida
  • Java 5 o superior
  • MySQL o MariaDB
  • Oracle 9i o superior
  • PostgreSQL
  • IBM DB2
  • SQL Server
  • Sybase
  • HSQL DB
  • u otra DB con driver JDBC 2.0

Recomendaciones de hardware Openfire Server

  • 1 a 500 usuarios concurrentes: 384MB RAM y procesador de 1.5 Ghz
  • 501 a 10.000 usuarios concurrentes: 784MB RAM y procesador de 3 Ghz
  • 10.001 a 25.000 usuarios concurrentes: 1.5Gb RAM, 2 procesadores de 3Ghz y un manejador de conexiones en el mismo server
  • 25.001 a 100.000 usuarios concurrentes: 2Gb RAM, 2 procesadores de 3Ghz y entre 1 y 4 manejadores de conexiones del mismo tamaño en su propio server

Ademas de estas recomendaciones de software y hardware, no esta de mas mantener backup de tu Openfire XMPP (te sugiero BackupPC Server como solución opensource)

Para este Openfire Tutorial usare

Quieres ver este Openfire tutorial en vídeo? Aquí debajo te lo muestro, ah, y no olvides suscribirte a mi canal

Dependencias Openfire para centos 7

-Instalamos dependencias requeridas para nuestra instalación de Openfire Server
yum install wget mariadb mariadb-server

-Descargamos la ultima versión actual de Openfire XMPP desde el sitio oficial ignite realtime (sugiero primero verificar en la sección Downloads cual es la ultima versión)
wget -c http://download.igniterealtime.org/openfire/openfire-4.2.3-1.x86_64.rpm

Como instalar Openfire en Centos 7

-Por medio del comando rpm instalamos el archivo descargado en nuestro Centos Linux
rpm -vi openfire-4.2.3-1.x86_64.rpm
Preparando paquetes...
openfire-4.2.3-1.x86_64
Restarting openfire (via systemctl): [ OK ]

Directorio de instalación de Openfire Server: /opt/openfire

-Activamos el servicio Openfire para que inicie apenas haga boot nuestro servidor Centos
systemctl enable openfire

-Seguidamente iniciamos el servicio y verificamos su ejecución
systemctl start openfire
systemctl status openfire
openfire.service - SYSV: Openfire is an XMPP server, which is a server that facilitates XML based communication, such as chat.
Loaded: loaded (/etc/rc.d/init.d/openfire; bad; vendor preset: disabled)
Active: active (running) since mié 2018-11-14 10:18:36 -05; 4s ago
Docs: man:systemd-sysv-generator(8)
Process: 1344 ExecStart=/etc/rc.d/init.d/openfire start (code=exited, status=0/SUCCESS)
Main PID: 1358 (java)
CGroup: /system.slice/openfire.service
‣ 1358 /opt/openfire/jre/bin/java -server -DopenfireHome=/opt/openfire -Dopenfire.lib.dir=/opt/openfire/...

Centos Openfire iptables

-Usaremos tres puertos TCP

  • 9090 TCP: Acceso consola web http Openfire Server
  • 9091 TCP: Acceso consola web https Openfire Server
  • 5222 TCP: Conexiones de clientes XMPP a nuestro servidor Openfire

-Abrimos los tres puertos y reiniciamos el servicio firewalld para que tome los cambios
firewall-cmd --permanent --zone=public --add-port=9090/tcp
success
firewall-cmd --permanent --zone=public --add-port=9091/tcp
success
firewall-cmd --permanent --zone=public --add-port=5222/tcp
success
firewall-cmd --reload

Openfire MariaDB

-Activamos el servicio para que se ejecute cada vez que haga boot nuestro Linux Centos
systemctl enable mariadb

-Ejecutamos el servicio y verificamos su estado
systemctl start mariadb
systemctl status mariadb
mariadb.service - MariaDB database server
Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
Active: active (running) since mié 2018-11-14 10:30:44 -05; 10s ago
Process: 1683 ExecStartPost=/usr/libexec/mariadb-wait-ready $MAINPID (code=exited, status=0/SUCCESS)
Process: 1601 ExecStartPre=/usr/libexec/mariadb-prepare-db-dir %n (code=exited, status=0/SUCCESS)
Main PID: 1682 (mysqld_safe)
CGroup: /system.slice/mariadb.service
├─1682 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
└─1843 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin ...

-Para mayor seguridad activamos contraseña y hacemos ajustes a MariaDB
mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none):
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] New password: <--Escribimos contraseña para root de MariaDB
Re-enter new password: <--Volvemos a escribir la contraseña
Password updated successfully!
Reloading privilege tables..
... Success!

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] ... Success!

Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] - Dropping test database...
... Success!
- Removing privileges on test database...
... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] ... Success!

Cleaning up...

All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

DB y usuario MariaDB para Openfire Server

-Ya asegurado el servicio de MariaDB y su cuenta root, debemos crear una db junto a un usuario con privilegios para ella (no es recomendable usar root)

Ingresamos al CLI de MariaDB y creamos db y usuario.

Haz los cambios según tu conveniencia

Estos datos los necesitaremos mas adelante en la configuración
mysql -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 11
Server version: 5.5.60-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> create database openfiredb;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> grant all on openfiredb.* to 'ofusr'@'localhost' identified by 'contraseña';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> exit;
Bye

Incrementar Openfire Java Memory

Este es un parámetro que debemos tener siempre presente para con el pasar del tiempo y aumento de carga, irlo aumentando

-Modificamos quitando el comentario de la linea y asignamos memoria RAM (en este caso 1 Gb)
vi /etc/sysconfig/openfire
OPENFIRE_OPTS="-Xmx1024m"

Configuramos Openfire XMPP

En este punto ya el resto de configuracion lo haremos via web en la consola de Openfire, sugiero usar Mozilla Firefox, Chrome o Chromium

-Abrimos un navegador en un pc desde donde podamos conectarnos al servidor Centos y navegamos al url http://IP-Openfire-Server:9090

Haz el cambio de IP-Openfire-Server a la ip de tu server

Se nos da la bienvenida, elegimos el idioma, en este caso Español

Damos click al botón Continue

-Llegamos a Configuración del servidor donde podemos dejar los defaults o modificarlos (Dominio y FQDN) ademas de agregar una contraseña para un cifrado mas fuerte

Damos click al botón Continuar

-Llegados a fuente de datos elegimos Conexión Estandard para mayor escalabilidad

Damos click al botón Continuar

Openfire Server JDBC

-Aun en fuente de datos elegimos MySQL en la caja desplegable Drivers Predefinidos

Seguidamente debemos modificar el URL que se arma en URL de la Base de Datos, según nuestro ejemplo quedaría así:

jdbc:mysql://localhost:3306/openfiredb....

Mi consejo es que solo modifiques los dos campos entre corchetes (localhost y openfiredb) dejando todo lo demás sin modificar en el URL

Mas abajo escribiremos el nombre de usuario para conectarnos a mariadb y su contraseña (ofusr y contraseña).

Haz el cambio según tu server

Damos click al botón Continuar

Openfire perfil

-Como quieres manejar los perfiles de usuarios XMPP? El default es la opción Por defecto

Esta opción almacenara el perfil en la db conectada en pasos anteriores

Damos click al botón Continuar

Configuramos cuenta admin Openfire Server

A la Openfire consola de administración siempre accederemos con el usuario admin (cuenta default, aunque después podemos crear otras cuentas administrativas)

-Escribimos una cuenta de email real para admin y creamos una contraseña

Damos click al botón Continuar

-Y llegamos al final de la configuracion de Openfire Server

Damos click al botón Conectese a la consola de administración

Ingresando a la Openfire Console

Nuestro servidor XMPP opensource ya esta instalado y configurado en gran parte.

Siguiente paso, ingresar a su consola web

-Si vienes del paso anterior llegaras directo al inicio de sesión, si no, navegaras a http://IP-Openfire-Server:9090

Haz el cambio al dominio o ip de tu servidor Linux

Escribimos admin como usuario y la contraseña que le creamos en pasos anteriores

Presionamos Enter o damos click al botón Ingresar

-La consola Openfire nos dará información de como se ejecuta en este momento el servidor XMPP ademas de noticias de Ignite Realtime (los desarrolladores)

Esta consola cuenta con 3 menús, dos horizontales en la parte superior y uno vertical a la izquierda de la pagina

Son contextuales y cambiaran dependiendo de las opciones que usemos

Openfire Server en Español

-El idioma de nuestro servidor XMPP, en caso de que ya no lo hayas configurado cuando instalamos, podemos cambiarlo navegando a Administración del ServidorIdioma y Tiempo

Aquí ademas podemos cambiar la zona horaria para que este acorde con nuestra fecha y hora local

Openfire Registro y Conexiones

-Navegando al menú Configuración del ServidorRegistro y Conexiones podemos modificar

  • Registro de cuenta por parte de los usuarios: Permitir o no, la creación de cuentas directamente por los usuarios
  • Cambiar contraseña: Permitir o no, cambiar la contraseña por parte de los usuarios con cuentas
  • Conexión anónima: Permitir conexiones anónimas sin necesidad de cuenta
  • No permitir accesos desde estas IPs: Bloquear IPs para que no se conecten a nuestro XMPP server
  • Restringir TODOS los accesos (incluidos los anónimos) desde estas IPs: Bloquear conexiones, incluidos los anónimos desde estas ips
  • Restringir accesos anónimos a estas IPs: Bloquear conexiones anónimas a estas ips
  • SASL Mechanisms: Diferentes mecanismos usados para autenticar conexiones XMPP

Haciendo un buen uso de estas opciones puedes asegurar mas tu servidor Openfire

Openfire grupos

Por medio de los grupos podemos organizar a nuestros usuarios XMPP. Idealmente deben crearse antes que las cuentas

-Navegamos al menú Usuarios/Grupos

La primera vez, no nos mostrara nada porque aun no hemos creado grupos

-Crearemos grupos dando click a Crear Nuevo Grupo.

Allí escribiremos un nombre y una breve descripción

Finalizamos dando click al botón Crear Grupo

-Por default el grupo creado se compartirá con todos los usuarios XMPP en este servidor

Si esa no es tu intención, puedes modificarlo

Openfire Cuentas de usuario

-Accedemos a las opciones de cuentas de usuarios navegando al menú Usuarios/Grupos

Allí veremos un listado de los usuarios ya creados. Si es un nuevo server XMPP, solo veras la cuenta admin en Lista de Usuarios

-Para comenzar a crear cuentas XMPP navegamos a Crear Nuevo Usuario

Llenamos los datos (solo es obligatorio usuario, contraseña, confirmar contraseña)

Si este usuario te apoyara como administrador, puedes marcarle la opción de Es administrador?

Terminada la tarea de llenar campos daremos click al botón Crear Usuario (si es un único usuario el que crearemos) o Crear y Crear Otro si son varios

Es recomendable tratar de llenar todos los campos

-Tras crear una cuenta veras un corto resumen

Agregar cuentas a grupos XMPP

-Al estar editando una cuenta daremos click al menú Grupos de Usuarios

Nos aparece un listado de los grupos existentes en nuestro servidor.

Damos click al botón + a la derecha del que queremos

-Con lo cual ya nuestra cuenta de usuario pertenecerá a ese grupo

-Si miramos nuevamente las propiedades del usuario navegando a Propiedades del Usuario, este ya esta asignado al grupo que elegimos

Openfire Plugins Directory

La comunidad detrás de este servidor XMPP tiene desarrollada una buena cantidad de plugins para extender las funcionalidades

-Navegamos al menú PluginsPlugins Disponibles

Veremos un listado de plugins opensource disponibles con su nombre, descripción, numero de versión, autor y tamaño

Instalando un plugin Openfire

Para instalar un plugin para Openfire daremos click al + a su derecha

-Al instalar plugins se nos mostrara un mensaje de su instalación exitosa

Openfire Plugins instalados

-Navegando al menú PluginsPlugins veremos el listado de los plugins que ya tenemos instalados en nuestro Openfire Server

Ademas de la información sobre el plugin, tenemos botones para reiniciarlos o borrarlos

Openfire Client

Openfire cuenta con su propio cliente XMPP pero esto no quiere decir que no podamos usar otros según nuestros gustos o necesidades

Cliente XMPP pidgin

-Pidgin es un cliente de IM multiplataforma.

Para instalarlo en Ubuntu Linux ejecutamos desde consola
sudo apt install pidgin

Quieres ver este Openfire Pidgin tutorial en vídeo? Aquí debajo te lo muestro, ah, y no olvides suscribirte a mi canal

-Seguidamente lo buscamos en el menú de nuestro sabor de Ubuntu Linux (en este caso Ubuntu Budgie) y le damos click

Configurar Pidgin para XMPP

-Si es primera vez que ejecutas Pidgin, te saldrá una ventana de bienvenida

En esta ventana daremos click al botón Añadir

-Nos aparece otra ventana donde modificaremos en la pestaña Básica

  • Protocolo: XMPP
  • Nombre de usuario: La cuenta creada en Openfier Server
  • Dominio: IP o dominio internet de nuestro servidor Centos Linux
  • Contraseña: Contraseña de la cuenta creada en Openfire
  • Recordar contraseña: Activo

-Pasamos a la pestaña Avanzadas en la misma ventana de Modificar cuenta

  • Puerto de conexión: 5222
  • Conectar con el servidor: IP o dominio internet
  • Pasarelas de transferencia de archivos: IP o dominio internet

Damos click al botón Guardar

-Aceptamos el certificado de Openfire Server dando click al botón Aceptar de la nueva ventana que nos aparece

Manejando lista de usuarios Openfire

Openfire nos permite ver en tiempo real que usuarios están conectados e interactuar con ellos

Listado de Usuarios

-Navegamos al menú Usuarios/Grupos

Allí los usuarios conectados en este momento tendrán otro color de avatar (verde)

Sesiones

-Ahora, si queremos mas información navegamos a SesionesSesiones de Clientes

-Al darle click a una cuenta de usuario en Sesiones podemos ver mas en detalle esta conexión

Openfire Server es una herramienta profesional que te permitirá tener tu propio servidor IM opensource para tus proyectos, ya lo usas? estas en planes de instalarlo

Cuéntame aquí debajo en los comentarios.

Satisfech@ con el articulo, hazme una donación, no importa la cantidad, la intención es lo que vale, dale click a este botón

Comparte este articulo opensource en tus redes sociales (compartir es sexy) por medio de los botones de redes sociales para que otros lo conozcan y apoyes mi blog.

Ademas, no olvides escribirme en los comentarios aquí debajo y pasa la voz compartiendo el tweet.