WildFly en RHEL 9: acceso remoto + arranque automático con systemd (Parte 2)

Home » DevOps  »  WildFly en RHEL 9: acceso remoto + arranque automático con systemd (Parte 2)
WildFly en RHEL 9: acceso remoto + arranque automático con systemd (Parte 2)
Configura WildFly en RHEL 9 para acceder desde otra máquina, abre puertos con firewalld y crea un servicio systemd para arranque automático.

Esta es la Parte 2 de una serie de guías sobre WildFly. En este post (independiente) vamos a lograr dos cosas clave en un entorno RHEL 9:

  1. Acceder a WildFly desde otra máquina en la misma red (LAN)
  2. Configurar WildFly para que arranque automáticamente al reiniciar el servidor usando systemd (la forma profesional)

Requisito: ya tienes WildFly instalado (Parte 1) y sabes en qué ruta quedó (ej. /opt/wildfly/wildfly-39.0.0.Final/).

Objetivo rápido (qué vas a conseguir)

  • WildFly respondiendo desde otra PC en: http://IP_DEL_SERVIDOR:8080
  • (Opcional) Consola de administración en: http://IP_DEL_SERVIDOR:9990
  • WildFly iniciando solo al reiniciar: systemctl status wildflyactive (running)

1) Configurar WildFly para acceder desde otra máquina

Por defecto, WildFly suele arrancar en 127.0.0.1 (solo el servidor). Para que escuche en la red debes bindear a 0.0.0.0.

Paso 1: Arrancar WildFly escuchando en la red

Detén WildFly si está corriendo (Ctrl + C) y arráncalo así:

./standalone.sh -b 0.0.0.0 -bmanagement 0.0.0.0

Detalle del comando

  • ./standalone.sh: inicia WildFly en modo standalone.
  • -b 0.0.0.0: hace que el puerto de la app (HTTP 8080) escuche en todas las interfaces (LAN).
  • -bmanagement 0.0.0.0: hace que el puerto de administración (9990) también escuche en todas las interfaces.

⚠️ Tip de seguridad: En producción NO expongas 9990 a internet. Si lo necesitas, que sea solo en LAN o por VPN.

Paso 2: Abrir puertos en el firewall (RHEL 9)

RHEL normalmente bloquea conexiones entrantes. Abrimos los puertos de WildFly:

sudo firewall-cmd --add-port=8080/tcp --permanent
sudo firewall-cmd --add-port=9990/tcp --permanent
sudo firewall-cmd --reload

Detalle comando por comando

  • sudo firewall-cmd: administra firewalld (firewall de RHEL).
  • --add-port=8080/tcp: permite tráfico TCP al puerto 8080.
  • --add-port=9990/tcp: permite tráfico TCP al puerto 9990 (admin).
  • --permanent: guarda la regla para que sobreviva reinicios.
  • --reload: recarga reglas aplicando los cambios.

Verifica qué quedó abierto:

sudo firewall-cmd --list-ports

Qué hace

--list-ports: lista puertos permitidos en la zona activa.

Si solo quieres exponer 8080, omite 9990 y deja la administración restringida.

Paso 3: Probar desde otra máquina

Desde otra PC en la misma red:

curl http://IP_DEL_SERVIDOR:8080

Qué hace

  • curl: hace una petición HTTP y te muestra la respuesta/HTML o redirección.

También puedes probar en navegador:

  • http://IP_DEL_SERVIDOR:8080

Y consola admin (si la expusiste):

  • http://IP_DEL_SERVIDOR:9990

📌 Importante: Para entrar a la consola admin normalmente necesitas usuario de management (se crea con ./add-user.sh en la Parte 1).

2) Hacer que WildFly arranque automáticamente (systemd)

Esto es lo correcto en RHEL: que WildFly sea un servicio administrado por systemd.

Paso 1: Crear usuario dedicado (recomendado)

sudo useradd -r -s /sbin/nologin wildfly

Qué hace

  • useradd: crea un usuario.
  • -r: lo crea como usuario de sistema (sin “home” normal).
  • -s /sbin/nologin: evita que alguien inicie sesión interactiva con ese usuario.

Ahora asigna permisos del directorio:

sudo chown -R wildfly:wildfly /opt/wildfly

Qué hace

  • chown -R: cambia dueño de forma recursiva.
  • wildfly:wildfly: usuario y grupo.
  • Esto permite que WildFly escriba logs, tmp y datos sin usar root.

Paso 2: Crear archivo de servicio systemd

Crea el servicio:

sudo nano /etc/systemd/system/wildfly.service

Qué hace

  • Abre el editor nano para crear/editar el archivo del servicio.

Pega este contenido (ajusta la versión si tu carpeta cambia):

[Unit]
Description=WildFly Application Server
After=network.target

[Service]
Type=simple
User=wildfly
Group=wildfly
WorkingDirectory=/opt/wildfly/wildfly-39.0.0.Final

Environment="JAVA_HOME=/usr/lib/jvm/java-17-openjdk"
Environment="JBOSS_HOME=/opt/wildfly/wildfly-39.0.0.Final"

# App (8080) accesible en LAN:
Environment="JBOSS_BIND_ADDR=0.0.0.0"

# Management (9990): RECOMENDADO mantenerlo local.
# Si lo quieres en LAN, cambia a 0.0.0.0 y abre firewall cuidadosamente.
Environment="JBOSS_BIND_ADDR_MGMT=127.0.0.1"

ExecStart=/opt/wildfly/wildfly-39.0.0.Final/bin/standalone.sh -b ${JBOSS_BIND_ADDR} -bmanagement ${JBOSS_BIND_ADDR_MGMT}
ExecStop=/bin/kill -SIGTERM $MAINPID

Restart=on-failure
RestartSec=10
LimitNOFILE=102642

[Install]
WantedBy=multi-user.target

Por qué está así

  • User/Group: corre sin root (mejor práctica).
  • JBOSS_BIND_ADDR=0.0.0.0: expone solo la app (8080) a la red.
  • JBOSS_BIND_ADDR_MGMT=127.0.0.1: deja administración local (más seguro).
  • ExecStop: detiene el proceso principal con SIGTERM (simple y confiable).

Si necesitas consola admin desde otra máquina, cambia 127.0.0.1 a 0.0.0.0 y considera reglas de firewall por IP (LAN/VPN), no “abierto al mundo”.

Paso 3: Activar el servicio

sudo systemctl daemon-reload
sudo systemctl enable wildfly
sudo systemctl start wildfly

Detalle

  • daemon-reload: systemd “lee de nuevo” los servicios (porque agregaste uno nuevo).
  • enable wildfly: habilita inicio automático al arrancar el sistema.
  • start wildfly: inicia el servicio inmediatamente.

Ver estado:

sudo systemctl status wildfly

Qué hace

  • Muestra si está active (running), logs recientes y PID.

Paso 4: Probar reinicio

sudo reboot

Qué hace

  • Reinicia el servidor para validar que el arranque automático funciona.

Después del reinicio:

systemctl status wildfly
curl http://localhost:8080

Qué valida

  • status: que el servicio arrancó solo.
  • curl http://localhost:8080: que WildFly responde localmente.

Si quieres probar desde otra máquina (LAN):

  • http://IP_DEL_SERVIDOR:8080

Tip extra de seguridad (muy recomendado)

  • Mantén 9990 solo en localhost o en una red privada (LAN/VPN).
  • Si decides exponer 9990, evita abrirlo “a todo” en firewall: limita por IP o subred.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *