Guía definitiva paso a paso para tener tu servidor XMPP funcionando y accesible desde toda la red.
Introducción
Openfire es un potente servidor de mensajería XMPP (Jabber) muy utilizado en entornos empresariales y proyectos de comunicación interna. Instalarlo con Docker es rápido y limpio, pero es común encontrarse con un problema: la consola web no carga cuando intentas acceder desde otra computadora, aunque desde el propio servidor funcione con localhost.
En este artículo te mostraré cómo instalar Openfire usando Docker en Ubuntu, y cómo solucionar ese molesto error de conectividad, que normalmente está relacionado con el firewall (UFW) y la interfaz de escucha del contenedor.
Requisitos previos
- Un servidor o máquina virtual con Ubuntu 20.04 / 22.04 / 24.04.
- Docker y Docker Compose instalados (te muestro cómo).
- Acceso root o usuario con
sudo. - Puertos necesarios:
9090(web admin),9091(admin seguro),5222(clientes),5269(federación).
Paso 1: Instalar Docker en Ubuntu
Si aún no tienes Docker, ejecuta:
sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce
sudo systemctl enable docker
sudo usermod -aG docker $USER # (opcional, para no usar sudo)Verifica: docker --version
Paso 2: Crear volúmenes persistentes
Los datos y logs de Openfire deben guardarse fuera del contenedor:
docker volume create openfire_data
docker volume create openfire_logsPaso 3: Ejecutar Openfire con red bridge (RECOMENDADO)
No uses --network host si quieres acceder desde otras máquinas, a menos que sepas configurar el firewall. Usa mapeo de puertos explícito:
docker run -d \
--name openfire \
--restart unless-stopped \
-p 9090:9090 -p 9091:9091 \
-p 5222:5222 -p 5223:5223 -p 5269:5269 \
-v openfire_data:/var/lib/openfire \
-v openfire_logs:/var/log/openfire \
ghcr.io/igniterealtime/openfire:latestVerifica que esté corriendo:
docker psPaso 4: El problema típico – no accedo desde otra PC
Ejecutas curl http://localhost:9090 en el servidor y obtienes respuesta, pero desde tu ordenador personal http://IP_DEL_SERVIDOR:9090 no carga. ¿Por qué?
- Causa principal: El firewall de Ubuntu (UFW) bloquea el tráfico externo hacia Docker.
- Causa secundaria: Openfire podría estar escuchando solo en
127.0.0.1dentro del contenedor.
Solución definitiva (UFW + Docker)
Instala el script ufw-docker que hace que Docker respete las reglas de UFW:
sudo wget -O /usr/local/bin/ufw-docker https://raw.githubusercontent.com/chaifeng/ufw-docker/master/ufw-docker
sudo chmod +x /usr/local/bin/ufw-docker
sudo ufw-docker install
sudo ufw allow 9090/tcp
sudo ufw allow 9091/tcpSi tenías UFW desactivado, actívalo:
sudo ufw enable¡Importante! Después de esto, reinicia Docker para aplicar los cambios de iptables:
sudo systemctl restart docker
docker start openfireAhora prueba de nuevo desde tu navegador: http://IP_DEL_SERVIDOR:9090 debería mostrar el asistente de configuración de Openfire.
Paso 5: Configuración inicial – poner la IP como dominio
Cuando accedas por primera vez, el asistente web te pedirá:
- Idioma: Elige el tuyo.
- Dominio del servidor XMPP: Aquí debes escribir la IP pública o privada de tu servidor (ej:
192.168.1.100). Si tienes un dominio real, úsalo. Esto es lo que llamamos “poner la IP en el dominio”. - Puertos de administración: Déjalos en
9090y9091. - Base de datos: Elige la embebida H2 (o configura una externa).
- Contraseña de administrador: Elige una segura.
Completa los pasos y tendrás tu servidor Openfire listo.
Paso 6: Verificación final
Desde otra máquina en la misma red:
telnet IP_DEL_SERVIDOR 9090O simplemente abre el navegador. Si todo está bien, verás la pantalla de login de la consola de administración.
Solución alternativa (si el problema persiste)
Si después de lo anterior sigues sin acceso, edita la configuración de Openfire para forzar la escucha en 0.0.0.0:
docker exec -it openfire bash
apt update && apt install -y nano
nano /var/lib/openfire/conf/openfire.xmlDentro de <jive>, agrega o modifica:
<adminConsole>
<interface>0.0.0.0</interface>
<port>9090</port>
<securePort>9091</securePort>
</adminConsole>Guarda (Ctrl+O), sal (Ctrl+X) y reinicia el contenedor:
exit
docker restart openfireConclusión
Instalar Openfire con Docker es sencillo, pero el error de “no carga la consola web desde otra PC” es muy común debido a la interacción entre Docker y UFW. Con el script ufw-docker y usando la red bridge con mapeo de puertos, el problema se resuelve de raíz. Ahora ya puedes disfrutar de tu propio servidor XMPP accesible desde toda tu red local.
¿Te ha servido? Déjame un comentario y comparte este tutorial con otros administradores.
Deja un comentario