1
NPM
groales edited this page 2025-12-05 11:04:10 +01:00

Despliegue con Nginx Proxy Manager (NPM)

Esta guía explica cómo desplegar Uptime Kuma usando Nginx Proxy Manager como proxy inverso.


Requisitos Previos

  • Nginx Proxy Manager desplegado y funcionando
  • Red Docker proxy donde ambos servicios se conectan
  • DNS configurado apuntando a tu servidor (ejemplo: uptime.example.com)
  • Puertos 80 y 443 accesibles desde Internet

Configuración

1. Desplegar Uptime Kuma

cd uptime-kuma
docker compose up -d

⚠️ No requiere archivo .env ni docker-compose.override.yml para NPM.

2. Verificar contenedor

# Verificar que el contenedor está activo
docker compose ps

# Verificar que está en la red proxy
docker network inspect proxy | grep uptime-kuma

3. Configurar Proxy Host en NPM

  1. Accede a Nginx Proxy Manager (ejemplo: https://npm.example.com)
  2. Ve a HostsProxy Hosts
  3. Click en Add Proxy Host

Tab: Details

  • Domain Names: uptime.example.com
  • Scheme: http (⚠️ importante: http, no https)
  • Forward Hostname / IP: uptime-kuma (nombre del contenedor)
  • Forward Port: 3001
  • Block Common Exploits
  • Websockets Support (⚠️ CRÍTICO: Uptime Kuma requiere WebSockets)

Tab: SSL

  • SSL Certificate: Selecciona Request a new SSL Certificate
  • Email: Tu email (para Let's Encrypt)
  • Force SSL (redirigir HTTP → HTTPS)
  • HTTP/2 Support
  • HSTS Enabled
  • I Agree to the Let's Encrypt Terms of Service
  1. Click en Save

4. Verificar acceso

Navega a: https://uptime.example.com

En el primer acceso, Uptime Kuma te pedirá crear una cuenta de administrador.


Configuración NPM - Detalles

Forward Port: 3001

⚠️ Importante: Uptime Kuma escucha en puerto 3001, no 80.

Si configuras puerto 80, obtendrás error 502 Bad Gateway.

WebSockets Support

Uptime Kuma requiere WebSockets para:

  • Actualizar monitores en tiempo real
  • Notificaciones push en UI
  • Sincronización de estado

DEBE estar habilitado en NPM:

✅ Websockets Support

Si no está habilitado:

  • La interfaz no se actualizará en tiempo real
  • Verás errores en consola del navegador (F12):
    WebSocket connection failed
    

Scheme: http

Aunque Uptime Kuma se accede por HTTPS desde Internet, la comunicación interna entre NPM y Uptime Kuma es HTTP.

NPM maneja la terminación SSL:

Internet (HTTPS) → NPM (termina SSL) → Uptime Kuma (HTTP interno)

Solución de Problemas

Error 502 Bad Gateway

Causa: Puerto incorrecto o contenedor no accesible.

Verificar:

# ¿El contenedor está activo?
docker compose ps

# ¿Está en la red proxy?
docker network inspect proxy | grep uptime-kuma

# ¿Puerto correcto en NPM?
# Debe ser 3001, NO 80

Solución:

  1. Editar Proxy Host en NPM
  2. Cambiar Forward Port a 3001
  3. Save

Certificado SSL no se genera

Causa: DNS no apunta al servidor o puertos bloqueados.

Verificar DNS:

nslookup uptime.example.com
# Debe devolver la IP de tu servidor NPM

Verificar puertos:

# En el host
ss -tlnp | grep :80
ss -tlnp | grep :443

Solución:

  • Verificar DNS en registrar
  • Verificar firewall permite 80 y 443
  • Revisar logs de NPM

Uptime Kuma no actualiza en tiempo real

Causa: WebSockets no habilitado en NPM.

Verificar (consola del navegador F12):

WebSocket connection to 'wss://uptime.example.com/socket.io/...' failed

Solución:

  1. Editar Proxy Host en NPM
  2. Websockets Support
  3. Save
  4. Limpiar cache del navegador (Ctrl+F5)

Error "Unable to connect to the database"

Causa: Base de datos SQLite no se creó o tiene permisos incorrectos.

Verificar:

# Ver archivos en volumen
docker compose exec uptime-kuma ls -lh /app/data/

# Debe mostrar kuma.db

Solución:

# Recrear contenedor
docker compose down
docker compose up -d

# Verificar logs
docker compose logs -f uptime-kuma

Configuración Avanzada

Múltiples dominios

En NPM, añade dominios separados por coma en Domain Names:

uptime.example.com, status.example.com

Restringir acceso por IP

NPM no tiene IP whitelist nativo en UI. Usar Custom Nginx Configuration:

  1. Editar Proxy Host
  2. Tab Advanced
  3. Custom Nginx Configuration:
    allow 192.168.1.0/24;
    allow 10.0.0.0/8;
    deny all;
    

Autenticación básica (antes de login de Uptime Kuma)

NPM no tiene auth básica en UI. Usar Custom Nginx Configuration:

auth_basic "Restricted";
auth_basic_user_file /data/nginx/.htpasswd;

Crear archivo /data/nginx/.htpasswd en contenedor NPM:

docker exec -it npm bash
apt update && apt install apache2-utils -y
htpasswd -c /data/nginx/.htpasswd admin
# Ingresar contraseña

Comparación: NPM vs Traefik

Característica NPM Traefik
Configuración Interfaz web (fácil) Archivo .env (medio)
SSL Manual (1 click) Automático
WebSockets Requiere checkbox Automático
Renovación SSL Automática Automática
IP Whitelist Custom config Middleware nativo
Auth Básica Custom config Middleware nativo
Complejidad Baja Media

Recomendación:

  • NPM: Si prefieres UI gráfica y configuración rápida
  • Traefik: Si quieres Infrastructure as Code y automatización total

Siguiente Paso

Continúa con Configuración Inicial para crear tu cuenta administrador y configurar notificaciones.