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
Tabla de contenido
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
- Centos Linux 7
- 2Gb RAM
- Procesador de 64bits
- SELinux deshabilitado
- MariaDB
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 Servidor – Idioma 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 Servidor – Registro 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ú Plugins – Plugins 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ú Plugins – Plugins 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 Sesiones – Sesiones 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.
Blogger por ratos, motociclista apasionado, evangelizador opensource, youtuber y gamer para acabar con el stress.
Olvidaba también que me encanta el helado, ir al cine y el café !!