CreaRack-SL

Runbook — Relanzar los proxies socat de NetBird tras un deploy

Runbookactiveverificado Thu Sep 24#infra#netbird#docker#reliability

Propósito

Relanzar los proxies socat que exponen servicios internos del stack de CreaRack a la VPN NetBird, re-resolviendo las direcciones IP de los contenedores. Debe ejecutarse tras cada docker compose up que recree los contenedores, especialmente después de despliegues vía Dokploy.

Por qué existe

Los proxies socat escuchan en la interfaz NetBird (wt0) y redirigen tráfico a direcciones IP internas de contenedores Docker. Estas IPs cambian en cada recreate/deploy. Sin relanzar el script después del despliegue, el acceso NetBird queda apuntando a IPs obsoletas.

Footgun conocido: En el Hito A de observabilidad (mayo 2026), al recrear la VM de PROD, el acceso a VictoriaMetrics por NetBird se rompió porque los proxies socat apuntaban a la IP antigua del contenedor. Se detectó después de intentar consultar métricas remotamente.

Desde el 25-09-2026 (mega-auditoría B-45)

8428 y 9093 ya NO apuntan directos a VictoriaMetrics ni a Alertmanager: pasan por dos contenedores vmauth que piden usuario y contraseña (decisión completa: [[decision—20260925—vmauth-auth-netbird-b45]]). El script:

  • Usa un mapa puerto NetBird:contenedor:puerto interno en vez del mismo puerto en los dos lados, porque vmauth/vmauth-am escuchan en puertos propios (18428/19093), no en los de VictoriaMetrics/Alertmanager.
  • Cierra el proxy viejo del puerto ANTES de buscar el contenedor nuevo: si el contenedor destino no está (p. ej. vmauth sin su fichero de contraseña no arranca), el puerto NetBird queda cerrado en vez de seguir sirviendo tráfico sin autenticar contra el contenedor anterior.

Servicios expuestos

Puerto NetBirdContenedor:puerto internoUso
8428vmauth:18428Consultas PromQL a VictoriaMetrics — pide usuario y contraseña desde B-45
5432db:5432Acceso directo a PostgreSQL (desarrollo/auditoría) — sin cambios
9093vmauth-am:19093Panel de Alertmanager; enlaces del email de alarmas — pide usuario y contraseña desde B-45

Ejecución

Requisitos previos

  • Acceso sudo o root en el servidor (PROD o STAGE)
  • NetBird levantado y la interfaz wt0 activa
  • Los contenedores objetivo ya en ejecución (docker ps los muestra)

Pasos

# 1. En el servidor PROD o STAGE, acceder por SSH
ssh user@crearack-prod.example.com

# 2. Ejecutar el script
sudo bash /etc/dokploy/compose/<app>/code/scripts/netbird-proxies.sh

Donde <app> es el nombre de la aplicación en Dokploy (ej: crearack-prod).

Salida esperada:

NetBird IP (wt0): 100.64.X.X
proxy 100.64.X.X:8428 -> crearack-prod-vmauth-1 (172.XX.X.XX:18428)
proxy 100.64.X.X:5432 -> crearack-prod-db-1 (172.XX.X.XX:5432)
proxy 100.64.X.X:9093 -> crearack-prod-vmauth-am-1 (172.XX.X.XX:19093)
OK. Proxies NetBird relanzados.

Idempotencia

El script es idempotente:

  • Cierra el proxy socat viejo de cada puerto antes de buscar el contenedor nuevo.
  • Omite servicios cuyo contenedor no esté corriendo (deja el puerto cerrado, no falla).
  • Se puede ejecutar múltiples veces sin efectos secundarios.

Verificación post-ejecución

Desde un cliente conectado a la VPN NetBird:

# Verificar accesibilidad a cada puerto (salud real del servicio, no del panel)
curl -s -o /dev/null -w '%{http_code}\n' http://crearack-prod.netbird.cloud:8428/backend-health   # 200
curl -s -o /dev/null -w '%{http_code}\n' http://crearack-prod.netbird.cloud:9093/backend-health   # 200
nc -zv crearack-prod.netbird.cloud 5432

Acceder al panel de Alertmanager pide ahora usuario y contraseña del equipo (ver la decisión enlazada arriba):

http://crearack-prod.netbird.cloud:9093/

Si alguno responde con Connection refused o timeout, el script no ejecutó exitosamente o el contenedor se cayó (con vmauth: revisar si arrancó — ver la sección “Si vmauth arrancó sin su fichero” en context/INFRA.md).

Automatización futura

Actualmente el script se lanza manualmente post-deploy. Candidatos para automatizar:

  • Ejecutar en un post_deploy_hook de Dokploy (si soporta).
  • Incluir en un script de despliegue automático.
  • Monitorear cambios de IP de contenedor y relanzar automáticamente.

Debugging

Si el script falla:

  1. Interfaz wt0 no encontrada: NetBird no está activo. Iniciar NetBird en el servidor.

    sudo systemctl start netbird
  2. Contenedor no encontrado: Verificar que existe y está corriendo.

    docker ps | grep vmauth  # ejemplo
  3. Error de permisos en socat: Asegurar que ejecutas como sudo y que socat está instalado.

    which socat
    sudo apt install socat  # si no existe
  4. Puerto ya en uso: Si socat no puede bindear, algo otro está usando ese puerto en wt0.

    netstat -tuln | grep 8428  # ejemplo
    # O matar manualmente:
    sudo pkill -f "socat.*TCP-LISTEN:8428"
  5. vmauth en bucle de reinicio: no es un fallo de este script — vmauth no arranca sin sus ficheros de contraseña. Ver context/INFRA.md, sección vmauth.

Véase también

  • [[decision—20260707—netbird-ssh-apex]]
  • [[runbook—infra—hetzner-firewall-solo-netbird]]
  • [[crearack-tech—guides—deploy-checklist]]
  • [[decision—20260925—vmauth-auth-netbird-b45]]
  • [[concept—general—como-esta-configurado-el-acceso-a-los-servidores-h]]