Herramienta de monitoreo de disponibilidad auto-hospedada con soporte para HTTP, TCP, DNS, Docker y 90+ servicios de notificación incluyendo Slack, Discord y Telegram.
# Ejecutar Uptime Kuma con almacenamiento persistente
docker run -d \
--restart=always \
-p 3001:3001 \
-v uptime-kuma:/app/data \
--name uptime-kuma \
louislam/uptime-kuma:2
# Acceder en http://localhost:3001
# Enlazar solo a localhost (sin acceso externo)
docker run -d \
--restart=always \
-p 127.0.0.1:3001:3001 \
-v uptime-kuma:/app/data \
--name uptime-kuma \
louislam/uptime-kuma:2
# Descargar archivo compose oficial
mkdir uptime-kuma && cd uptime-kuma
curl -o compose.yaml \
https://raw.githubusercontent.com/louislam/uptime-kuma/master/compose.yaml
# Iniciar el servicio
docker compose up -d
# Acceder en http://localhost:3001
# Montar socket de Docker para monitoreo de salud de contenedores
docker run -d \
--restart=always \
-p 3001:3001 \
-v uptime-kuma:/app/data \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
--name uptime-kuma \
louislam/uptime-kuma:2
# Requisitos: Node.js 20.4+, Git
# Clonar y configurar
git clone https://github.com/louislam/uptime-kuma.git
cd uptime-kuma
npm run setup
# Iniciar directamente
node server/server.js
# O usar PM2 para operación en segundo plano
npm install -g pm2
pm2 start server/server.js --name uptime-kuma
| Comando | Descripción |
|---|
docker run -d -p 3001:3001 louislam/uptime-kuma:2 | Iniciar contenedor Uptime Kuma |
docker compose up -d | Iniciar con Docker Compose |
docker compose down | Detener todos los servicios |
docker compose logs -f | Seguir logs del contenedor |
docker restart uptime-kuma | Reiniciar el contenedor |
docker stop uptime-kuma | Detener el contenedor |
docker start uptime-kuma | Iniciar contenedor detenido |
node server/server.js | Iniciar sin Docker |
pm2 start server/server.js --name uptime-kuma | Iniciar con PM2 |
pm2 restart uptime-kuma | Reiniciar con PM2 |
pm2 stop uptime-kuma | Detener con PM2 |
pm2 logs uptime-kuma | Ver logs de PM2 |
# Descargar imagen más reciente
docker pull louislam/uptime-kuma:2
# Detener y eliminar contenedor actual
docker stop uptime-kuma
docker rm uptime-kuma
# Recrear con imagen nueva (datos persisten en volumen)
docker run -d \
--restart=always \
-p 3001:3001 \
-v uptime-kuma:/app/data \
--name uptime-kuma \
louislam/uptime-kuma:2
# Descargar y recrear
docker compose pull
docker compose up -d
cd uptime-kuma
git fetch --all
git checkout 2.1.3 --force
npm install --production
npm run download-dist
pm2 restart uptime-kuma
| Tipo | Descripción |
|---|
| HTTP(S) | Monitorear disponibilidad del sitio web y tiempo de respuesta |
| HTTP(S) Keyword | Verificar texto específico en el cuerpo de respuesta |
| HTTP(S) JSON Query | Validar valores de respuesta JSON |
| TCP Port | Verificar si un puerto TCP está abierto y respondiendo |
| Ping | Ping ICMP para disponibilidad del host |
| DNS | Monitorear resolución de registros DNS |
| Docker Container | Monitorear estado de salud del contenedor |
| Steam Game Server | Verificar disponibilidad del servidor de juegos |
| MQTT | Monitorear conectividad del broker MQTT |
| gRPC | Monitorear salud del servicio gRPC |
| Radius | Verificación del servidor de autenticación RADIUS |
| GameDig | Monitoreo de servidor de juegos (múltiples protocolos) |
| Push | Monitoreo pasivo vía endpoint de latido |
| Group | Agrupación lógica de monitores |
| Servicio | Descripción |
|---|
| Slack | Webhooks de canal y notificaciones de bot |
| Discord | Notificaciones de canal basadas en webhook |
| Telegram | Notificaciones de API de bot |
| Microsoft Teams | Notificaciones de webhook entrante |
| Mattermost | Integración de chat auto-hospedada |
| Rocket.Chat | Notificaciones de webhook |
| Google Chat | Notificaciones de webhook de espacio |
| Matrix | Notificaciones de chat descentralizado |
| Servicio | Descripción |
|---|
| Pushover | Notificaciones push móviles |
| Gotify | Servidor push auto-hospedado |
| ntfy | Notificaciones pub/sub basadas en HTTP |
| Pushbullet | Notificaciones push entre dispositivos |
| Signal | Notificaciones de mensajería segura |
| LINE | Integración de LINE Notify |
| Servicio | Descripción |
|---|
| PagerDuty | Alertas de incidentes y sobre llamadas |
| Opsgenie | Gestión de alertas y escalamiento |
| Squadcast | Gestión de incidentes |
| Splunk On-Call | Enrutamiento de alertas VictorOps |
| Better Stack | Monitoreo de disponibilidad y gestión de incidentes |
| Servicio | Descripción |
|---|
| SMTP Email | Notificaciones de correo electrónico personalizado |
| Webhook | Llamadas a endpoint HTTP personalizado |
| Home Assistant | Disparadores de automatización del hogar inteligente |
| Apprise | Puerta de enlace universal de notificaciones |
| Variable | Descripción | Predeterminado |
|---|
UPTIME_KUMA_PORT | Puerto del servidor | 3001 |
UPTIME_KUMA_HOST | Dirección de enlace | :: |
DATA_DIR | Directorio de almacenamiento de datos | ./data |
TZ | Zona horaria | UTC |
UMASK | Máscara de permisos de archivo | 0000 |
NODE_EXTRA_CA_CERTS | Ruta de certificados CA personalizados | — |
SSL_CERT | Ruta del certificado SSL | — |
SSL_KEY | Ruta de clave privada SSL | — |
| Característica | Descripción |
|---|
| Múltiples Páginas | Crear páginas de estado separadas para diferentes servicios |
| Dominios Personalizados | Asignar páginas de estado a nombres de dominio personalizados |
| CSS Personalizado | Estilizar páginas de estado con CSS personalizado |
| Publicaciones de Incidentes | Crear reportes de incidentes visibles en página de estado |
| Mantenimiento | Programar ventanas de mantenimiento |
| Grupos de Monitores | Organizar monitores en grupos en página de estado |
# Instalar cliente API de Python
pip install uptime-kuma-api
| Operación | Descripción |
|---|
| Agregar monitor | Crear monitores programáticamente |
| Editar monitor | Actualizar configuración de monitor |
| Eliminar monitor | Eliminar monitores |
| Pausar/Reanudar | Alternar estado del monitor |
| Obtener estado | Recuperar estado actual del monitor |
| Agregar notificación | Configurar proveedores de notificación |
| Obtener disponibilidad | Consultar estadísticas de disponibilidad |
# compose.yaml
services:
uptime-kuma:
image: louislam/uptime-kuma:2
container_name: uptime-kuma
restart: always
ports:
- "3001:3001"
volumes:
- ./data:/app/data
# Opcional: Monitoreo de contenedores Docker
# - /var/run/docker.sock:/var/run/docker.sock:ro
environment:
- TZ=UTC
| Característica | Descripción |
|---|
| 2FA | Autenticación de dos factores para inicio de sesión |
| Reverse Proxy | Implementar detrás de Nginx, Caddy o Traefik |
| SSL/TLS | SSL integrado o terminación de proxy inverso |
| Limitación de Tasa de Inicio de Sesión | Protección contra ataques de fuerza bruta |
| Claves API | Acceso a API basado en tokens |
server {
listen 443 ssl;
server_name status.example.com;
location / {
proxy_pass http://127.0.0.1:3001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
| Comando | Descripción |
|---|
docker cp uptime-kuma:/app/data ./backup | Hacer copia de seguridad del directorio de datos |
docker cp ./backup/. uptime-kuma:/app/data | Restaurar desde copia de seguridad |
docker volume inspect uptime-kuma | Encontrar punto de montaje del volumen |
| Problema | Solución |
|---|
| No se puede acceder a la interfaz de usuario | Verificar enlace de puerto: docker port uptime-kuma |
| Errores de volumen NFS | Usar directorios locales, no sistemas de archivos de red |
| Errores de WebSocket | Configurar proxy inverso para actualización de WebSocket |
| Contenedor no inicia | Verificar logs: docker logs uptime-kuma |
| Persistencia de datos perdida | Asegurar que se usa volumen -v uptime-kuma:/app/data |
| Fallo en monitoreo de Docker | Montar docker.sock: -v /var/run/docker.sock:/var/run/docker.sock:ro |
| Plataforma | Estado |
|---|
| Linux (x64, ARM) | Soportado |
| Windows 10+ (x64) | Soportado |
| macOS | Soportado |
| Docker Desktop | Soportado |
| Kubernetes | Vía imagen Docker |
| FreeBSD/OpenBSD | No soportado |
| Replit/Heroku | No soportado |
- Usar volúmenes de Docker (no montajes bind a NFS) para persistencia de datos
- Implementar detrás de un proxy inverso con terminación SSL para uso en producción
- Habilitar 2FA para la cuenta de administrador inmediatamente después del primer inicio de sesión
- Establecer intervalos de monitoreo a 60 segundos o más para servicios externos
- Usar el tipo de monitor Push para servicios detrás de cortafuegos
- Configurar al menos 2 canales de notificación para redundancia
- Crear páginas de estado separadas para audiencias internas y externas
- Hacer copia de seguridad del directorio de datos regularmente — contiene toda la configuración
- Establecer la zona horaria vía variable de entorno
TZ para coincidir con tu centro de operaciones