Uptime Kuma: Monitoreo Self-Hosted Gratis para tu Homelab (Guía Completa 2025)

¿Cuántas veces te has despertado con mensajes de “¿Por qué no funciona X servicio?” sin tener ni idea de cuándo se cayó? Si gestionas un homelab, servicios web o simplemente quieres saber cuándo tu infraestructura tiene problemas antes de que te lo digan tus usuarios, necesitas monitoring. El problema es que servicios como Pingdom cuestan $85/mes para 200 monitores, y UptimeRobot limita el intervalo a 5 minutos en su plan gratuito.

Uptime Kuma es la solución open-source que necesitas: self-hosted, gratis, con interfaz moderna, 90+ servicios de notificaciones, status pages públicas y chequeos cada 20 segundos. En esta guía completa aprenderás a instalarlo con Docker, configurar monitores para todo tu homelab y recibir alertas instantáneas en Discord o Telegram.

¿Qué es Uptime Kuma?

Uptime Kuma es una herramienta de monitoreo self-hosted creada por Louis Lam (@louislam) con más de 6,000 commits y 805 contributors. Se define como “a fancy self-hosted monitoring tool” y no miente: su interfaz construida con Vue 3 y Bootstrap 5 es mucho más moderna que la mayoría de alternativas comerciales.

Características principales:

    • Monitoreo cada 20 segundos (vs 5 minutos de UptimeRobot free)
    • Monitores ilimitados (tu único límite es el hardware)
    • 90+ servicios de notificaciones (Discord, Telegram, Slack, email, webhooks, etc.)
    • Status pages públicas personalizables (sin pagar extra)
    • Soporte Docker nativo (monitorea tus containers directamente)
    • Control total de tus datos (self-hosted)
    • 2FA integrado para seguridad
    • Certificados SSL monitoring con alertas de expiración
    • WebSocket UI (actualización en tiempo real sin refresh)

A diferencia de servicios SaaS, Uptime Kuma te da control absoluto: tus datos nunca salen de tu servidor, puedes modificar el código fuente si necesitas features custom, y el único costo es el hosting (~$3-5/mes en un VPS básico).

Uptime Kuma vs UptimeRobot vs Pingdom: Comparativa Real

Antes de invertir tiempo en configurar tu monitoring, debes saber qué alternativa se adapta mejor a tus necesidades. Aquí está la comparativa real con datos de 2025:

Característica Uptime Kuma UptimeRobot Pingdom
Precio Gratis (self-hosted) Freemium (50 monitores gratis) $10-$85+/mes
Control total ✅ Código + datos ❌ SaaS cerrado ❌ SaaS cerrado
Monitores incluidos ∞ Ilimitados 50 free, $7/50 extra 10-500 según plan
Intervalo mínimo 20 segundos 5 minutos (free), 1 min (pago) 1 minuto
Notificaciones 90+ servicios Email, webhook, Slack Email, SMS, Slack
Status page pública ✅ Incluida Solo planes pagos Solo planes pagos
Data privacy 100% tuyo En sus servidores USA En sus servidores
Docker monitoring ✅ Nativo ❌ No soportado ❌ No soportado
Custom location ✅ Tu servidor ❌ Fixed locations ❌ Fixed locations
Mantenimiento Manual (updates) Cero (managed) Cero (managed)
Soporte Comunidad GitHub Email + chat gratis Email premium
2FA ✅ TOTP integrado ✅ Disponible ✅ Disponible
API ✅ REST API ✅ REST API ✅ REST API

Comparativa de costos para 200 monitores:

    • Uptime Kuma: $0 software + ~$5/mes VPS (Hetzner CPX11) = $5/mes total
    • UptimeRobot: $28/mes (150 monitores extra sobre los 50 free)
    • Pingdom: $85/mes (plan Advanced para 200 monitores)

Uptime Kuma es 5.6x más barato que UptimeRobot y 17x más barato que Pingdom para el mismo número de monitores.

¿Cuándo elegir cada opción?

Elige Uptime Kuma si:

    • Gestionas homelab con muchos servicios
    • Quieres control total de tus datos
    • Necesitas monitorear Docker containers
    • Te interesa customizar código (open source)
    • Quieres chequeos frecuentes (<60 segundos)
    • Tienes conocimientos básicos Docker/Linux

Elige UptimeRobot si:

    • Solo monitorizas pocos servicios externos (<50)
    • No quieres mantener infraestructura
    • Necesitas multi-location monitoring desde ya
    • Prefieres SaaS sin preocupaciones

Elige Pingdom si:

    • Empresa con presupuesto
    • Necesitas transaction monitoring (flujos complejos)
    • Requieres analytics profundos y reportes
    • SLA garantizado crítico

Para la mayoría de homelabbers, desarrolladores indie y pequeños proyectos, Uptime Kuma es la opción obvia. Si estás montando tu homelab desde cero, el monitoring es uno de los primeros servicios que deberías configurar.

Requisitos Técnicos

Antes de empezar, asegúrate de tener:

Opción 1: Docker (Recomendado)

    • Docker instalado (versión 20.10+)
    • Docker Compose (v2.0+)
    • 512 MB RAM mínimo (1 GB recomendado para 100+ monitores)
    • 10 GB de almacenamiento (para base de datos SQLite)
    • Sistema de archivos con POSIX file locks (ext4, xfs, btrfs – NO NFS/SMB)

Distribuciones soportadas: Ubuntu, Debian, Fedora, CentOS, Arch Linux, etc.

Opción 2: Non-Docker

    • Node.js >= 20.4
    • Git
    • PM2 (para ejecutar en background)
    • Linux o Windows 10+ (también macOS)

Sistemas NO soportados: FreeBSD, OpenBSD, NetBSD, Replit, Heroku.

VPS mínimo recomendado:

    • 1 vCPU
    • 512 MB RAM (Hetzner CPX11: €4.15/mes, DigitalOcean Basic: $4/mes)
    • 10 GB SSD

Para 500+ monitores, sube a 2 vCPU y 2 GB RAM.

Instalación con Docker Compose: Paso a Paso

Vamos a instalar Uptime Kuma usando Docker Compose, el método más limpio y fácil de mantener.

1. Crear estructura de carpetas

# Crear directorio para Uptime Kuma
mkdir -p ~/homelab/uptime-kuma
cd ~/homelab/uptime-kuma

2. Crear docker-compose.yml

Crea el archivo docker-compose.yml con esta configuración básica:

version: '3.8'

services:
  uptime-kuma:
    image: louislam/uptime-kuma:2
    container_name: uptime-kuma
    restart: unless-stopped
    ports:
      - "3001:3001"
    volumes:
      - uptime-kuma-data:/app/data
    environment:
      - UPTIME_KUMA_PORT=3001
      - UPTIME_KUMA_HOST=0.0.0.0

volumes:
  uptime-kuma-data:
    driver: local

Explicación de la configuración:

    • image: louislam/uptime-kuma:2 – Usa la versión 2 (latest stable)
    • restart: unless-stopped – Reinicia automáticamente tras crashes/reboots
    • ports: "3001:3001" – Puerto por defecto (cambia el primero si quieres otro puerto externo)
    • volumes: uptime-kuma-data:/app/data – Persiste configuración y base de datos
    • UPTIME_KUMA_HOST=0.0.0.0 – Escucha en todas las interfaces (necesario para reverse proxy)

3. Levantar el servicio

# Iniciar en background
docker compose up -d

# Ver logs en tiempo real
docker compose logs -f uptime-kuma

Deberías ver algo como:

uptime-kuma  | 2025-11-03 10:00:00 [SERVER] Listening on http://0.0.0.0:3001
uptime-kuma  | 2025-11-03 10:00:00 [DB] Database ready

4. Acceder a la interfaz web

Abre tu navegador y ve a:

http://localhost:3001

O desde otra máquina en tu red local:

http://IP-DE-TU-SERVIDOR:3001

Primera vez: Te pedirá crear cuenta de administrador. Usa un username y contraseña seguros.

5. Configuración inicial recomendada

Una vez dentro:

    • Activa 2FA: Settings → Security → Enable Two-Factor Auth
    • Configura timezone: Settings → General → Timezone
    • Cambia idioma (opcional): Settings → General → Language

¡Ya tienes Uptime Kuma funcionando! Ahora vamos a configurarlo con reverse proxy para acceso seguro con HTTPS.

Configuración con Reverse Proxy (Nginx/Traefik)

Para acceso seguro desde internet, necesitas un reverse proxy con HTTPS. Uptime Kuma usa WebSocket, así que la configuración es ligeramente diferente a un servicio HTTP normal.

Opción 1: Nginx Proxy Manager (La más fácil)

Si usas Portainer para gestionar Docker, simplemente:

    • Proxy Hosts → Add Proxy Host
    • Domain: uptime.tudominio.com
    • Forward Hostname/IP: uptime-kuma (el nombre del container)
    • Forward Port: 3001
    • Activa: Websockets Support ← CRÍTICO
    • SSL: Request a new SSL Certificate (Let’s Encrypt)

Modifica tu docker-compose.yml para conectar ambos containers:

version: '3.8'

services:
  uptime-kuma:
    image: louislam/uptime-kuma:2
    container_name: uptime-kuma
    restart: unless-stopped
    volumes:
      - uptime-kuma-data:/app/data
    networks:
      - proxy  # Misma red que Nginx Proxy Manager

networks:
  proxy:
    external: true  # Red creada por NPM

volumes:
  uptime-kuma-data:

Opción 2: Nginx config manual

Si usas Nginx directamente, esta es la configuración mínima:

server {
    listen 80;
    server_name uptime.tudominio.com;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    server_name uptime.tudominio.com;

    ssl_certificate /etc/letsencrypt/live/uptime.tudominio.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/uptime.tudominio.com/privkey.pem;

    location / {
        proxy_pass http://uptime-kuma:3001;
        proxy_http_version 1.1;

        # Headers críticos para WebSocket
        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;
    }
}

Los headers Upgrade y Connection son OBLIGATORIOS o Uptime Kuma no funcionará.

Opción 3: Traefik (Con labels)

Si usas Traefik como reverse proxy:

version: '3.8'

services:
  uptime-kuma:
    image: louislam/uptime-kuma:2
    container_name: uptime-kuma
    restart: unless-stopped
    volumes:
      - uptime-kuma-data:/app/data
    networks:
      - traefik
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.uptime.rule=Host(`uptime.tudominio.com`)"
      - "traefik.http.routers.uptime.entrypoints=websecure"
      - "traefik.http.routers.uptime.tls.certresolver=letsencrypt"
      - "traefik.http.services.uptime.loadbalancer.server.port=3001"

networks:
  traefik:
    external: true

volumes:
  uptime-kuma-data:

Traefik maneja WebSocket automáticamente, no necesitas configuración extra.

Tipos de Monitores: Todos los Casos de Uso

Uptime Kuma soporta 9 tipos de monitores diferentes. Aquí está cada uno con ejemplos prácticos.

1. HTTP(S) Monitor

Uso: Websites, APIs REST, servicios web

Configuración:

    • URL completa (https://ejemplo.com)
    • HTTP Method: GET, POST, PUT, DELETE, HEAD, etc.
    • Expected Status Codes: 200-299 (default) o custom
    • Headers personalizados (Authorization, User-Agent, etc.)
    • Body (JSON/Form data)
    • Authentication (Basic Auth, Bearer Token)
    • SSL Certificate Check
    • Ignore TLS errors (para self-signed)

Ejemplo real – Monitorizar ElDiarioIA:

Monitor Name: ElDiarioIA Home
URL: https://www.eldiarioia.es
Method: GET
Heartbeat Interval: 60 seconds
Retries: 2
Expected Status: 200-299
Timeout: 48 seconds

Si el sitio devuelve 500, 503 o cualquier error, recibes alerta instantly.

2. HTTP(S) Keyword Monitor

Uso: Verificar que contenido específico existe (o NO existe) en una página

Casos de uso:

    • Detectar errores visibles: Buscar “Error 500” o “Database connection failed”
    • Verificar contenido crítico: Buscar “Comprar ahora” en e-commerce
    • Monitorear cambios: Detectar si desapareció texto importante

Ejemplo – Detectar errores en WordPress:

Monitor Name: ElDiarioIA Error Check
URL: https://www.eldiarioia.es
Keyword: "El blog donde la IA y el humano aprenden juntos"
Invert Keyword: No (queremos que EXISTA)

Si el keyword desaparece → Algo rompió el sitio.

Ejemplo inverso – Detectar mensajes de error:

Monitor Name: API Error Detection
URL: https://api.ejemplo.com/health
Keyword: "error"|"failed"|"unavailable"
Invert Keyword: Yes (NO queremos que existan)

3. HTTP(S) JSON Query Monitor

Uso: APIs REST que devuelven JSON, validar respuestas específicas

Configuración:

    • URL de API
    • JSON Path query (sintaxis JSONPath)
    • Expected value

Ejemplo – WordPress REST API:

Monitor Name: WordPress API Health
URL: https://www.eldiarioia.es/wp-json/wp/v2/posts?per_page=1
Expected Value: $.0.id
Condition: Exists

Valida que la API devuelve al menos 1 post. Si falla → API rota.

Ejemplo avanzado – Validar valor específico:

Monitor Name: n8n Webhook Status
URL: https://n8n.tudominio.com/webhook/healthcheck
JSON Path: $.status
Expected Value: "ok"

4. TCP Port Monitor

Uso: Servicios que NO son HTTP (databases, SSH, custom apps)

Ejemplos de puertos comunes:

    • SSH: 22
    • MySQL: 3306
    • PostgreSQL: 5432
    • Redis: 6379
    • MongoDB: 27017
    • SMTP: 25 / 587
    • Minecraft: 25565

Ejemplo – Monitorear SSH de Proxmox:

Monitor Name: Proxmox SSH
Hostname: 192.168.1.10
Port: 22
Heartbeat Interval: 120 seconds

Si el puerto no responde → Servidor probablemente caído.

Ejemplo – Base de datos:

Monitor Name: PostgreSQL Main
Hostname: db.interno.local
Port: 5432

5. Ping (ICMP) Monitor

Uso: Verificar que un host está online a nivel de red (Layer 3)

Configuración:

    • Hostname o IP
    • Packet Count
    • Acceptable Packet Loss %

Ejemplo – Gateway/Router:

Monitor Name: Router Principal
Hostname: 192.168.1.1
Packet Count: 5
Acceptable Loss: 0%

Ejemplo – Servidor Proxmox:

Monitor Name: Proxmox Host
Hostname: 192.168.1.10
Packet Count: 3
Acceptable Loss: 20%

Útil para detectar problemas de red incluso si los servicios están caídos.

6. DNS Monitor

Uso: Verificar que resoluciones DNS funcionan correctamente

Configuración:

    • Hostname a resolver
    • Resolver server (1.1.1.1 Cloudflare, 8.8.8.8 Google, o tu Pi-hole)
    • Record Type: A, AAAA, CNAME, MX, TXT, NS, etc.
    • Expected value (opcional)

Ejemplo – Verificar DNS principal:

Monitor Name: ElDiarioIA DNS Check
Hostname: www.eldiarioia.es
Resolver: 1.1.1.1
Type: A
Expected: (deja vacío para cualquier IP válida)

Ejemplo – Validar MX records (email):

Monitor Name: Email DNS
Hostname: eldiarioia.es
Resolver: 8.8.8.8
Type: MX

Crítico si gestionas tu propio email server.

7. Docker Container Monitor

Uso: Monitorear estado de containers Docker directamente

Configuración:

    • Bind mount del Docker socket en tu docker-compose.yml
    • Seleccionar container por nombre
    • Expected state: Running

Docker Compose modificado:

version: '3.8'

services:
  uptime-kuma:
    image: louislam/uptime-kuma:2
    container_name: uptime-kuma
    restart: unless-stopped
    ports:
      - "3001:3001"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro  # ← Socket Docker
      - uptime-kuma-data:/app/data

Ejemplo – Monitorear Nginx Proxy Manager:

Monitor Name: Nginx Proxy Manager
Docker Container: nginx-proxy-manager
Docker Host: Local Docker (socket)
Expected State: Running

Si el container se cae, reinicia o entra en estado unhealthy → Alerta instantánea.

Múltiples containers:
Crea un monitor por cada container crítico:

    • Plex/Jellyfin
    • Home Assistant
    • Pi-hole
    • Portainer
    • Vaultwarden
    • Nextcloud

8. Push Monitor (Para Cron Jobs y Backups)

Uso: Servicios que TÚ NO puedes pollear (cron jobs, scripts de backup, tareas programadas)

Cómo funciona:

    • Uptime Kuma genera URL única de push
    • Tu script hace POST a esa URL cuando completa
    • Si Uptime Kuma NO recibe POST en X tiempo → DOWN

Ejemplo – Script de backup diario:

#!/bin/bash
# backup-homelab.sh

set -e  # Para si hay error

# Tu backup
restic backup /home /var/www /etc

# Notificar a Uptime Kuma que completó OK
curl -fsS -m 10 --retry 3 https://uptime.tudominio.com/api/push/abc123def456

# Si el script falla ANTES del curl, Uptime Kuma detecta que no llegó el ping

Configuración en Uptime Kuma:

Monitor Name: Backup Diario
Type: Push
Heartbeat Interval: 1440 minutes (24 horas)
Push URL: https://uptime.tudominio.com/api/push/abc123def456

Si el backup no se ejecuta o falla → No llega el ping → Alerta.

Casos de uso:

    • Backups programados
    • Cron jobs críticos
    • Scripts de limpieza/mantenimiento
    • Procesos batch nocturnos
    • Sincronizaciones de datos

9. Steam Game Server Monitor

Uso: Monitorear servidores de juegos Steam (Minecraft, CS:GO, etc.)

Configuración básica:

    • Server IP
    • Query port
    • Game type

No lo cubro en profundidad porque está fuera del scope de homelabs típicos, pero está disponible.

Tabla Resumen: Qué Monitor Usar Cuándo

Monitor Type Caso de Uso Ejemplo
HTTP(S) Websites, APIs REST Blog WordPress, API pública
HTTP(S) Keyword Detectar errores visibles Buscar “Error 500” en página
HTTP(S) JSON Validar respuestas de APIs Verificar $.status == "ok"
TCP Port Databases, SSH, servicios non-HTTP MySQL (3306), SSH (22)
Ping Verificar host online Router, servidor físico
DNS Verificar resoluciones DNS Chequear A records, MX
Docker Container Estado de containers Nginx, Plex, Home Assistant
Push Cron jobs, backups Script backup nocturno
Steam Game Server Servidores de juegos Minecraft, CS:GO

Configurar Notificaciones: Discord y Telegram

De nada sirve monitorear si no te enteras cuando algo cae. Uptime Kuma soporta 90+ servicios de notificaciones, pero los más populares en homelabs son Discord y Telegram.

Notificaciones Discord (Webhooks)

Ventajas:

    • Gratis e ilimitado
    • Notificaciones instantáneas
    • Desktop + mobile
    • Log histórico persistente
    • Rich embeds con colores

Setup paso a paso:

1. Crear Webhook en Discord:

    • Abre tu servidor Discord
    • Click derecho en canal → Edit Channel → Integrations
    • Webhooks → New Webhook
    • Nombre: “Uptime Kuma”
    • Copiar Webhook URL (se ve así: https://discord.com/api/webhooks/123456789/abcdefg...)

2. Configurar en Uptime Kuma:

    • Settings (icono perfil arriba derecha) → Notifications
    • Setup Notification → Discord
    • Pegar Webhook URL
    • Bot Display Name: “Uptime Monitor” (aparecerá en Discord con este nombre)
    • Apply on All Existing Monitors (opcional, aplica a todos)
    • Click Test (deberías recibir mensaje de prueba en Discord)
    • Save

Ejemplo de mensaje que recibirás:

🔴 DOWN: ElDiarioIA Home
https://www.eldiarioia.es is DOWN
Time: 2025-11-03 10:30:00
Duration: Just now

Y cuando se recupera:

🟢 UP: ElDiarioIA Home
https://www.eldiarioia.es is back ONLINE
Downtime: 5 minutes

Notificaciones Telegram (Bot)

Ventajas:

    • Más privado que Discord
    • App mobile excelente
    • Notificaciones push agresivas
    • Sin servidores propios
    • Gratis

Setup paso a paso:

1. Crear Bot de Telegram:

    • Abre Telegram
    • Busca @BotFather (bot oficial)
    • Envía comando: /newbot
    • Nombre del bot: “Uptime Kuma Monitor”
    • Username del bot: mi_uptime_bot (debe terminar en bot)
    • Copia el API Token (ej: 123456789:ABCdefGHIjklMNOpqrsTUVwxyz)

2. Configurar en Uptime Kuma:

    • Settings → Notifications → Setup Notification → Telegram
    • Pegar Bot Token
    • Envía cualquier mensaje a tu bot en Telegram (para iniciar conversación)
    • Click Auto Get (al lado de Chat ID)
    • Uptime Kuma detectará automáticamente tu Chat ID
    • Test → Save

Ejemplo de mensaje:

🔴 ElDiarioIA Home is DOWN

URL: https://www.eldiarioia.es
Time: 2025-11-03 10:30:00

Configuración Óptima de Notificaciones

Recomendación para homelab:

    • Discord: Todos los monitores → Canal #monitoring-logs

      • Ventaja: Log histórico completo
      • Desventaja: Puede ser ruidoso
    • Telegram: Solo monitores críticos → Chat privado 1-on-1

      • Servicios críticos: Proxmox, Router, Servicios públicos
      • Ventaja: Notificaciones push agresivas, menos ruido
    • Email: Resumen diario/semanal (opcional)

      • Configurar SMTP
      • Enviar solo 1x al día con status general

Evitar notification fatigue: No envíes TODAS las alertas a TODOS los canales. Prioriza y segmenta.

Otras Notificaciones Populares

Gotify (Self-hosted push):

    • Instala Gotify server en Docker
    • App Android con notificaciones offline
    • 100% self-hosted (máxima privacidad)

Pushover ($5 one-time):

    • App iOS/Android
    • Sonidos custom por prioridad
    • Muy confiable

Webhook (para n8n, Home Assistant, etc.):

URL: https://n8n.tudominio.com/webhook/uptime-kuma
Method: POST
Headers: Content-Type: application/json
Body: JSON con {{MONITOR_NAME}}, {{STATUS}}, {{MESSAGE}}

Crear Status Page Pública

Una de las mejores features de Uptime Kuma es poder crear status pages públicas (algo que UptimeRobot cobra $18/mes y Pingdom $59/mes).

Casos de uso:

    • Mostrar uptime a clientes (SaaS, freelance)
    • Transparencia para usuarios de tu servicio
    • Status page interna para familia/compañeros de homelab

Paso a paso:

    • Status Pages → Add Status Page
    • Slug: homelab (URL será https://uptime.tudominio.com/status/homelab)
    • Title: “Homelab Status – ElDiarioIA”
    • Description: “Estado en tiempo real de servicios homelab”
    • Theme: Dark (o Auto/Light)
    • Select Monitors: Marca los que quieres mostrar públicamente
    • Public: Activar (o dejar privado con password)
    • Save

Customización avanzada:

Settings de Status Page:
- Custom CSS para branding
- Logo personalizado (URL a imagen)
- Footer text con links
- Google Analytics tracking ID
- Custom domain (CNAME)

Ejemplo de URL pública:

https://status.eldiarioia.es/

Muestra:

    • ✅ Website: Online (99.8% uptime 30d)
    • ✅ API: Online (100% uptime 30d)
    • ⚠️ Demo Server: Degraded (2 incidents)
    • 🔴 Test Service: Down (last 30 min)

Embed en tu sitio web:

<iframe src="https://uptime.tudominio.com/status/homelab"
        width="100%" height="600" frameborder="0"></iframe>

Caso de Uso Real: Monitorear Homelab Completo

Ahora que conoces todos los tipos de monitores, vamos a configurar un homelab completo con Uptime Kuma.

Infraestructura ejemplo:

    • 1x Proxmox host (192.168.1.10)
    • 1x Router/Firewall pfSense (192.168.1.1)
    • Docker containers: Nginx Proxy Manager, Pi-hole, Home Assistant, Plex, Portainer, Vaultwarden
    • Servicios externos: Website público, API

Configuración de monitores:

Capa 1: Red (Ping)

Monitor: Router Principal
Type: Ping
Host: 192.168.1.1
Interval: 120s
Tags: critical, network

Monitor: Proxmox Host
Type: Ping
Host: 192.168.1.10
Interval: 60s
Tags: critical, infrastructure

Capa 2: Infraestructura (TCP + HTTP)

Monitor: Proxmox SSH
Type: TCP Port
Host: 192.168.1.10
Port: 22
Interval: 300s
Tags: infrastructure

Monitor: Proxmox Web UI
Type: HTTP(S)
URL: https://192.168.1.10:8006
Interval: 300s
Ignore TLS: Yes (self-signed)
Tags: infrastructure

Capa 3: Containers Docker

# Asegúrate de tener docker socket montado
volumes:
  - /var/run/docker.sock:/var/run/docker.sock:ro
Monitor: Nginx Proxy Manager
Type: Docker Container
Container: nginx-proxy-manager
Interval: 120s
Tags: critical, proxy

Monitor: Pi-hole
Type: Docker Container
Container: pihole
Interval: 120s
Tags: critical, dns

Monitor: Home Assistant
Type: Docker Container
Container: homeassistant
Interval: 120s
Tags: homelab, automation

Monitor: Plex
Type: Docker Container
Container: plex
Interval: 300s
Tags: media

Monitor: Vaultwarden
Type: Docker Container
Container: vaultwarden
Interval: 120s
Tags: critical, security

Capa 4: Servicios Web (HTTP)

Monitor: Pi-hole Admin
Type: HTTP(S)
URL: http://192.168.1.10:8080/admin
Interval: 300s
Tags: homelab, dns

Monitor: Home Assistant UI
Type: HTTP(S)
URL: http://192.168.1.10:8123
Keyword: "Home Assistant"
Interval: 300s
Tags: homelab

Monitor: Portainer
Type: HTTP(S)
URL: https://portainer.tudominio.com
Interval: 600s
Tags: homelab, management

Capa 5: Servicios Públicos

Monitor: Website ElDiarioIA
Type: HTTP(S)
URL: https://www.eldiarioia.es
Method: GET
Expected Status: 200-299
Interval: 60s
Tags: critical, public, website

Monitor: WordPress API
Type: HTTP(S) JSON Query
URL: https://www.eldiarioia.es/wp-json/wp/v2/posts?per_page=1
JSON Path: $[0].id
Condition: Exists
Interval: 300s
Tags: critical, api

Capa 6: DNS

Monitor: DNS Principal
Type: DNS
Hostname: www.eldiarioia.es
Resolver: 1.1.1.1
Type: A
Interval: 3600s
Tags: infrastructure, dns

Capa 7: Backups (Push)

Monitor: Backup Proxmox Diario
Type: Push
Heartbeat: 1440 min (24h)
Tags: critical, backup

# En tu script de backup:
#!/bin/bash
/usr/bin/proxmox-backup-client backup ...
curl -fsS https://uptime.tudominio.com/api/push/PUSH_URL_UNICA

Total: ~20 monitores para homelab completo.

Configuración de alertas:

    • Telegram: Solo tags critical (Router, Proxmox, Website, Vaultwarden)
    • Discord: Todos los monitores → Canal #homelab-monitoring

Resultado:

    • Detectas problemas ANTES de notarlos manualmente
    • Histórico de uptime de cada servicio
    • Identificas servicios problemáticos (muchos downs)
    • Status page compartible con familia/compañeros

Integraciones Avanzadas

Integración con Home Assistant

Puedes integrar Uptime Kuma con Home Assistant usando webhooks para automatizaciones inteligentes. Si quieres aprender más sobre Home Assistant, revisa nuestra guía para automatizar tu casa desde cero.

Ejemplo: Reiniciar Plex automáticamente si cae

# configuration.yaml
automation:
  - alias: "Reiniciar Plex si down"
    trigger:
      platform: webhook
      webhook_id: uptime_kuma_plex_down
      allowed_methods:
        - POST
    condition:
      - condition: template
        value_template: "{{ trigger.json.monitor == 'Plex' and trigger.json.status == 'down' }}"
    action:
      - service: shell_command.restart_plex

shell_command:
  restart_plex: "docker restart plex"

Configura Uptime Kuma para enviar webhook a Home Assistant cuando Plex cae → Home Assistant lo reinicia automáticamente.

Integración con n8n

Crea workflows complejos con n8n para automatizar respuestas:

Ejemplo: Crear GitHub issue si servicio crítico cae

Webhook (Uptime Kuma)
  → Filter (solo monitores con tag "critical")
  → GitHub (crear issue con detalles)
  → Discord (notificar al equipo)
  → HTTP Request (intentar restart automático vía API)

Exportar métricas a Grafana

Para visualizaciones avanzadas:

    • Exporta data de Uptime Kuma a Prometheus/InfluxDB
    • Importa a Grafana
    • Crea dashboards custom con:
      • Uptime % por servicio
      • Response time trends
      • Downtime incidents timeline
      • SLA compliance

(Requiere setup adicional fuera del scope de este artículo)

Troubleshooting: Errores Comunes

Error: “Database is locked”

Causa: Estás usando volumen NFS/SMB (no soporta POSIX file locks)

Solución:

volumes:
  uptime-kuma-data:
    driver: local  # NO usar NFS driver

Usa local storage, block storage o relocate a volumen sin red.

WebSocket connection failed en navegador

Causa: Reverse proxy sin headers WebSocket

Solución Nginx:

proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

Solución Nginx Proxy Manager:
Activa “Websockets Support” en configuración de proxy host.

High CPU usage (>80% constant)

Causas posibles:

    • Demasiados monitores con intervalos <60s
    • Monitor con timeout muy alto (48s default)
    • Hardware insuficiente

Soluciones:

    • Aumenta intervalos a 120s para monitores no críticos
    • Reduce timeout a 20s para servicios locales
    • Elimina monitores redundantes
    • Upgrade a VPS con más vCPU

Notificaciones no llegan

Debugging:

    • Settings → Notifications → Click “Test” en tu notificación
    • Si falla: Verifica logs con docker logs uptime-kuma
    • Discord: Verifica Webhook URL correcta (cópiala de nuevo)
    • Telegram: Asegúrate de haber enviado mensaje al bot primero
    • Email: Verifica SMTP settings (usa port 587 TLS para Gmail)

Backup y Restauración

Backup manual del volumen Docker:

# Crear backup
docker run --rm \
  -v uptime-kuma-data:/data \
  -v $(pwd):/backup \
  ubuntu tar czf /backup/uptime-kuma-backup-$(date +%Y%m%d).tar.gz /data

# Restaurar backup
docker run --rm \
  -v uptime-kuma-data:/data \
  -v $(pwd):/backup \
  ubuntu tar xzf /backup/uptime-kuma-backup-20251103.tar.gz -C /

Backup automático con script + push monitor:

#!/bin/bash
# backup-uptime-kuma.sh

BACKUP_DIR="/backups/uptime-kuma"
DATE=$(date +%Y%m%d)

docker run --rm \
  -v uptime-kuma-data:/data \
  -v $BACKUP_DIR:/backup \
  ubuntu tar czf /backup/uptime-kuma-$DATE.tar.gz /data

# Notificar a Uptime Kuma
curl -fsS https://uptime.tudominio.com/api/push/abc123

# Limpiar backups antiguos (>30 días)
find $BACKUP_DIR -name "uptime-kuma-*.tar.gz" -mtime +30 -delete

Mejores Prácticas de Configuración

Intervalos Recomendados

Tipo de Servicio Intervalo Razón
Servicios críticos públicos 60s Balance detección/carga
Servicios homelab importantes 120s Suficiente para alertas rápidas
Servicios secundarios 300s (5 min) Reduce carga innecesaria
Backups/Cron jobs 1440 min (24h) Frecuencia del job
Infraestructura red 120s Detectar problemas de red

Regla general: No uses intervalos <60s a menos que sea absolutamente crítico (y tu servidor lo aguante).

Configuración de Retries

Retries: 2-3
Retry Interval: 60 seconds

Evita false positives por blips temporales de red. Con 2 retries, necesitas 3 fallos consecutivos para marcar como DOWN.

Timeout Settings

HTTP/HTTPS: 20-30s (servicios locales), 48s (servicios externos)
TCP: 30s
Ping: 10s

Timeout muy alto → Detección lenta de problemas
Timeout muy bajo → False positives por latencia

Organización con Tags

Usa tags estratégicos:

critical - Requiere acción inmediata
homelab - Infraestructura local
public - Servicios de cara al público
infrastructure - Red, router, hosts físicos
backup - Push monitors de backups
media - Plex, Jellyfin, etc.
automation - Home Assistant, n8n
security - Vaultwarden, Authelia

Ventaja: Filtra fácilmente en dashboard, configura notificaciones por tag.

Seguridad

Checklist:

    • ✅ Activa 2FA (TOTP)
    • ✅ Usa reverse proxy con HTTPS
    • ✅ Contraseña fuerte para admin
    • ✅ Firewall: Solo puerto 443 expuesto
    • ✅ Status page: Solo muestra info que quieres pública
    • ✅ Rotación de API tokens (si usas API)

NO expongas puerto 3001 directamente a internet (sin HTTPS ni autenticación).

Preguntas Frecuentes (FAQs)

¿Qué es Uptime Kuma?

Uptime Kuma es una herramienta open-source self-hosted para monitorear uptime de servicios web, APIs, servidores y containers Docker. Ofrece interfaz moderna, 90+ notificaciones integradas y status pages públicas, todo gratis. Es la alternativa self-hosted a servicios como UptimeRobot o Pingdom.

¿Uptime Kuma es realmente gratis?

Sí, el software es 100% gratis (licencia MIT open-source). El único costo es el hosting: necesitas un VPS (~$4-5/mes) o puedes correrlo en tu homelab existente sin costo adicional. No hay límites de monitores, notificaciones ni features ocultas detrás de paywall.

¿Uptime Kuma vs UptimeRobot: cuál es mejor?

Uptime Kuma es mejor si: quieres control total, muchos monitores (>50), intervalos <5 minutos, monitoreo de Docker containers, y te sientes cómodo con Docker/Linux. UptimeRobot es mejor si: solo necesitas monitorear pocos servicios externos (<50), no quieres mantener infraestructura, o necesitas multi-location monitoring inmediato. Para homelabs, Uptime Kuma gana por costo ($5 vs $28/mes para 200 monitores) y flexibilidad.

¿Cómo instalar Uptime Kuma con Docker?

Tres pasos: 1) Crea carpeta y archivo docker-compose.yml con la config oficial, 2) Ejecuta docker compose up -d, 3) Accede a http://localhost:3001 y crea cuenta admin. El proceso completo toma 5 minutos. Ver sección “Instalación con Docker Compose” arriba para configuración completa.

¿Qué tipos de monitores soporta Uptime Kuma?

Soporta 9 tipos: HTTP(S), HTTP(S) Keyword, HTTP(S) JSON Query, TCP Port, Ping (ICMP), DNS, Docker Container, Push (para cron jobs), y Steam Game Server. Esto cubre prácticamente cualquier servicio: websites, APIs, databases, SSH, containers, backups programados, etc.

¿Cómo configurar notificaciones Discord en Uptime Kuma?

1) En Discord: Server Settings → Integrations → Webhooks → Create Webhook, copia la URL. 2) En Uptime Kuma: Settings → Notifications → Discord, pega Webhook URL, elige nombre del bot, Test, Save. Las notificaciones aparecen instantáneamente en tu canal Discord con formato colorido indicando UP (verde) o DOWN (rojo).

¿Puedo monitorear containers Docker con Uptime Kuma?

Sí, Uptime Kuma tiene soporte nativo para Docker. Debes bind mount el socket Docker (/var/run/docker.sock:/var/run/docker.sock:ro) en tu docker-compose.yml. Luego puedes crear monitores tipo “Docker Container” que detectan si containers están Running, Stopped, Restarting o Unhealthy. Ideal para homelabs.

¿Cómo crear una status page pública en Uptime Kuma?

Settings → Status Pages → Add Status Page. Elige slug (URL), título, descripción, selecciona qué monitores mostrar, customiza tema (dark/light), y publica. La URL será https://tu-dominio.com/status/slug. Puedes añadir custom CSS, logo, footer, y embedear en tu sitio web con iframe. Todo incluido gratis (vs $18-59/mes en otras plataformas).

¿Uptime Kuma consume muchos recursos?

No. Con 50-100 monitores: ~200MB RAM, <5% CPU en 1 vCPU. Un VPS de $4/mes (512MB RAM, 1 vCPU) es suficiente. Para 500+ monitores, considera 2GB RAM. El consumo depende de intervalos (intervalos <60s aumentan CPU) y número de monitores. Es muy eficiente comparado con alternativas.

¿Cómo hacer backup de Uptime Kuma?

Método manual: docker run --rm -v uptime-kuma-data:/data -v $(pwd):/backup ubuntu tar czf /backup/uptime-kuma-backup.tar.gz /data. Método automático: crea script que hace backup del volumen Docker y usa push monitor para verificar que el backup se ejecutó. Los datos viven en /app/data (SQLite database + config). Ver sección Troubleshooting para comandos completos.

¿Uptime Kuma funciona con reverse proxy?

Sí, pero necesitas configuración especial porque usa WebSocket. En Nginx: añade headers Upgrade y Connection "upgrade". En Nginx Proxy Manager: activa “Websockets Support”. En Traefik: funciona automáticamente sin config extra. Sin estos headers, la UI no carga correctamente.

¿Qué es un push monitor y cuándo usarlo?

Push monitor es un monitor donde TÚ envías notificación a Uptime Kuma (inverso). Uptime Kuma genera URL única, tu script hace POST cuando completa. Si no recibe POST en X tiempo → DOWN. Úsalo para: cron jobs, backups programados, scripts de mantenimiento, cualquier tarea que TÚ no puedes pollear activamente. Ejemplo: script de backup nocturno que avisa cuando termina OK.

¿Uptime Kuma soporta 2FA?

Sí, soporta 2FA con TOTP (Time-based One-Time Password) compatible con Google Authenticator, Authy, 1Password, etc. Settings → Security → Enable Two-Factor Auth → Escanea QR con tu app → Guarda backup codes. Muy recomendado activarlo si expones Uptime Kuma a internet.

¿Puedo integrar Uptime Kuma con Home Assistant?

Sí, vía webhooks. Configura webhook notification en Uptime Kuma hacia tu Home Assistant. Luego crea automations que reaccionan a eventos (ej: si Plex cae → reiniciar container automáticamente). También puedes usar integraciones custom vía HACS. Muy potente para automatización de respuestas a incidents.

¿Cuántos monitores puedo crear en Uptime Kuma?

Ilimitados. No hay límite artificial de software. El único límite es tu hardware (CPU/RAM). Un VPS básico ($4/mes) maneja fácilmente 100-200 monitores. Para 500+, upgrade a 2 vCPU / 2 GB RAM. Compara con UptimeRobot free (50 monitores) o Pingdom ($85/mes para 200 monitores).

Conclusión: ¿Vale la Pena Uptime Kuma?

Después de configurar Uptime Kuma, la respuesta es SÍ rotundo, especialmente si:

✅ Gestionas homelab con múltiples servicios
✅ Quieres saber CUÁNDO se cae algo (no descubrirlo horas después)
✅ Te importa la privacidad (self-hosted)
✅ Tienes conocimientos básicos Docker/Linux
✅ Buscas alternativa gratis a Pingdom/UptimeRobot

ROI real:

    • Tiempo: 30 minutos instalación inicial + 15 min configuración monitores = inversión única de 45 minutos
    • Costo: $0 si ya tienes servidor, o $4-5/mes VPS básico
    • Ahorro vs UptimeRobot: $23/mes ($276/año) para 200 monitores
    • Ahorro vs Pingdom: $80/mes ($960/año) para 200 monitores

Beneficios intangibles:

    • Detección proactiva de problemas (vs descubrirlos reactivamente)
    • Métricas de uptime histórico (identificas servicios problemáticos)
    • Status page profesional para clientes/usuarios
    • Paz mental (sabes que recibirás alerta si algo falla)

Limitaciones honestas:

    • Requiere mantenimiento básico (updates Docker, backups)
    • No incluye multi-location monitoring out-of-box (vs UptimeRobot)
    • Soporte solo comunidad GitHub (vs soporte pago enterprise)
    • Necesitas conocimientos técnicos mínimos

Para la mayoría de homelabbers, desarrolladores indie, y pequeños proyectos SaaS, Uptime Kuma es la mejor opción en 2025. La combinación de features modernas, precio (gratis) y control total es imbatible.

Próximos pasos:

    • Instala Uptime Kuma siguiendo la guía de Docker Compose arriba
    • Configura tus primeros 5 monitores críticos
    • Añade notificaciones Discord/Telegram
    • Crea status page pública (si aplica)
    • Configura backup automático con push monitor

¿Quieres más guías de homelab? Revisa nuestros artículos sobre Tailscale para acceso remoto sin abrir puertos, Docker Compose para homelab completo, y cómo montar Proxmox desde cero.

¿Tienes dudas o problemas configurando Uptime Kuma? Déjanos un comentario abajo.

Por ziru

Deja una respuesta

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

El Diario IA
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.