Table of Contents
- Despliegue con Nginx Proxy Manager (NPM)
- Requisitos Previos
- Configuración
- 1. Desplegar Uptime Kuma
- 2. Verificar contenedor
- 3. Configurar Proxy Host en NPM
- 4. Verificar acceso
- Configuración NPM - Detalles
- Solución de Problemas
- Error 502 Bad Gateway
- Certificado SSL no se genera
- Uptime Kuma no actualiza en tiempo real
- Error "Unable to connect to the database"
- Configuración Avanzada
- Comparación: NPM vs Traefik
- Siguiente Paso
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
proxydonde 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
- Accede a Nginx Proxy Manager (ejemplo:
https://npm.example.com) - Ve a Hosts → Proxy Hosts
- 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
- 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:
- Editar Proxy Host en NPM
- Cambiar Forward Port a
3001 - 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:
- Editar Proxy Host en NPM
- ✅ Websockets Support
- Save
- 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:
- Editar Proxy Host
- Tab Advanced
- 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.