Jugando con Docker: Monitoriza tus servicios con Uptime Kuma

Monitoriza tus servicios con Uptime Kuma en Docker

Si tienes un homelab, un VPS, una web, un servidor de domótica o varios contenedores Docker funcionando, hay una pregunta que tarde o temprano aparece:

¿Cómo me entero cuando algo se cae?

Puedes mirar los servicios manualmente. Puedes abrir cada panel de vez en cuando. Puedes confiar en que “si algo falla ya me avisará alguien”.

Pero eso no es monitorización. Eso es esperanza.

Para mí, una de las herramientas más cómodas para empezar a monitorizar servicios es Uptime Kuma: sencilla, visual, autohospedada y perfecta para recibir avisos cuando algo deja de responder.

No sustituye a Prometheus, Grafana, Loki o un sistema completo de observabilidad. No pretende hacerlo. Uptime Kuma responde a una pregunta mucho más directa:

¿Mis servicios están vivos?

Y para un homelab, muchas veces esa es la pregunta más importante.


¿Qué es Uptime Kuma?

Uptime Kuma es una herramienta open source de monitorización de disponibilidad.

Permite crear monitores para comprobar si una web, API, servidor, puerto TCP, DNS, certificado o servicio responde correctamente. Si algo falla, puede enviarte una notificación por Telegram, correo, Discord, Slack, Signal, Pushover y muchos otros métodos.

Lo que más me gusta es que no necesitas montar una arquitectura compleja para empezar. Lo levantas en Docker, creas unos checks y en pocos minutos tienes alertas útiles.

Casos típicos:

  • Comprobar si tu web responde.
  • Vigilar Home Assistant.
  • Monitorizar AdGuard Home o Pi-hole.
  • Comprobar si Caddy o Nginx están sirviendo HTTPS.
  • Recibir aviso si un certificado está cerca de caducar.
  • Ver si un puerto TCP está abierto.
  • Crear una página de estado sencilla para tus servicios.

Mi forma de verlo es esta:

Uptime Kuma → ¿responde el servicio?
Grafana     → ¿qué está pasando por dentro?
Logs        → ¿por qué ha pasado?

Cada herramienta tiene su sitio. Uptime Kuma es la alarma de “esto se ha caído”.


Requisitos previos

Este tutorial asume que ya tienes:

  • Un servidor Linux, VPS o máquina de tu homelab.
  • Docker instalado.
  • Docker Compose V2 disponible como docker compose.
  • Acceso SSH al servidor.
  • Un usuario con permisos para ejecutar Docker.
  • Telegram si quieres recibir alertas en el móvil.

Si todavía no tienes claro cómo encaja Docker en una empresa o en un homelab, puedes empezar por mi artículo de introducción a Docker.


Paso 1: preparar el entorno

Crea una carpeta para Uptime Kuma:

sudo mkdir -p /opt/uptime-kuma
sudo chown -R $USER:$USER /opt/uptime-kuma
cd /opt/uptime-kuma

Dentro de esta carpeta guardaremos el archivo Compose y los datos persistentes.

La persistencia es importante. Uptime Kuma guarda configuración, monitores, usuarios y estado en su carpeta de datos. Si no montas un volumen, perderás la configuración al recrear el contenedor.


Paso 2: crear el docker-compose.yml

Crea el archivo:

nano docker-compose.yml

Y pega esta configuración:

services:
  uptime-kuma:
    image: louislam/uptime-kuma:latest
    container_name: uptime-kuma
    restart: unless-stopped
    ports:
      - "3001:3001"
    volumes:
      - "./data:/app/data"

Algunos matices:

  • No uso version: '3'. En Docker Compose moderno el campo version ya no hace falta y puede generar avisos.
  • El puerto por defecto de Uptime Kuma es 3001.
  • La carpeta ./data se monta en /app/data, que es donde Uptime Kuma guarda sus datos.
  • Usa almacenamiento local o un volumen fiable. Evita montar la base de datos sobre ubicaciones con problemas de bloqueo de archivos, como ciertos NFS.

Si quieres mantenerlo un poco más ordenado, también puedes usar una red dedicada:

services:
  uptime-kuma:
    image: louislam/uptime-kuma:latest
    container_name: uptime-kuma
    restart: unless-stopped
    ports:
      - "3001:3001"
    volumes:
      - "./data:/app/data"
    networks:
      - monitoring

networks:
  monitoring:
    name: monitoring

Para una instalación sencilla, cualquiera de las dos opciones vale.


Paso 3: desplegar el contenedor

Levanta Uptime Kuma:

docker compose up -d

Comprueba que está corriendo:

docker ps

Y si algo falla, revisa los logs:

docker logs uptime-kuma

También puedes ver el estado con:

docker compose ps

Paso 4: acceder a Uptime Kuma

Abre en el navegador:

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

Si lo estás ejecutando en tu propia máquina:

http://localhost:3001

La primera vez, Uptime Kuma te pedirá crear el usuario administrador.

Usa una contraseña fuerte. Parece obvio, pero Uptime Kuma es una herramienta de monitorización que puede contener información sensible: nombres de servicios, dominios internos, IPs, rutas, tokens de notificación y estructura de tu red.

No es un panel para dejar abierto alegremente a Internet.


Paso 5: crear tus primeros monitores

Una vez dentro, toca añadir servicios.

En Uptime Kuma, pulsa Add New Monitor y elige el tipo de comprobación.

Servicio Tipo recomendado Ejemplo
Web pública HTTP(s) https://tudominio.com
Home Assistant HTTP(s) http://192.168.1.50:8123
AdGuard Home HTTP(s) http://192.168.1.60:8081
Pi-hole DNS DNS 192.168.1.61
Servidor Linux Ping 192.168.1.10
Servicio en puerto concreto TCP Port 192.168.1.10:22
Certificado SSL HTTP(s) o certificado https://tudominio.com

Mi recomendación inicial:

  • Intervalo de 60 segundos para servicios importantes.
  • Reintentos antes de marcar como caído.
  • No crear 200 monitores el primer día.
  • Empezar por lo que realmente te importa.

Monitorizarlo todo suena bien, pero si luego recibes alertas por cualquier tontería, dejarás de hacerles caso.

La alerta que no vas a atender es ruido.


Paso 6: configurar alertas con Telegram

Una de las mejores combinaciones para un homelab es Uptime Kuma + Telegram.

No necesito tener un panel abierto todo el día. Necesito que me llegue un aviso cuando algo importante se cae y otro cuando se recupera.

Crear el bot en Telegram

  1. Abre Telegram.
  2. Busca @BotFather.
  3. Ejecuta el comando /newbot.
  4. Ponle un nombre al bot.
  5. Elige un username que termine en bot.
  6. BotFather te dará un token.

Ese token es una contraseña. No lo publiques, no lo pegues en capturas y no lo subas a GitHub. Si documentas la instalación, usa siempre valores ficticios o [REDACTADO]. Un token de Telegram expuesto puede permitir enviar mensajes como tu bot.

Obtener tu chat ID

Para que Uptime Kuma pueda enviarte mensajes, necesita saber a qué chat enviarlos.

La forma sencilla:

  1. Escribe un mensaje a tu bot desde Telegram.
  2. Obtén el chat ID usando una herramienta como @userinfobot o consultando la API de Telegram.

Si usas un grupo, añade el bot al grupo y obtén el ID del grupo.

En grupos, normalmente tendrás que dar permisos al bot para enviar mensajes.

Configurar Telegram en Uptime Kuma

  1. Entra en Uptime Kuma.
  2. Ve a Settings → Notifications.
  3. Pulsa Setup Notification.
  4. Elige Telegram.
  5. Introduce el token del bot.
  6. Introduce el chat ID.
  7. Prueba la notificación.
  8. Guarda.

Después, asigna esa notificación a los monitores importantes.

No hace falta que todo avise. Un monitor informativo puede quedarse sin alerta. Un servicio crítico sí debe avisar.


Paso 7: qué alertas tienen sentido

Mi criterio es sencillo:

Solo quiero alertas accionables.

Ejemplos de alertas útiles:

  • Home Assistant no responde.
  • AdGuard Home o Pi-hole no resuelven DNS.
  • La web principal cae.
  • Un certificado está cerca de caducar.
  • El reverse proxy deja de responder.
  • Un servidor importante no responde por ping.

Ejemplos de alertas que pueden convertirse en ruido:

  • Servicios de prueba.
  • Contenedores que apagas a propósito.
  • Checks externos demasiado sensibles.
  • Alertas por latencia puntual.
  • Servicios no críticos con intervalos demasiado agresivos.

Uptime Kuma es muy cómodo, pero si lo configuras sin criterio, acabas creando tu propia máquina de spam.

Y eso mata cualquier sistema de monitorización.


Paso 8: exponer Uptime Kuma de forma segura

Para uso doméstico, lo más seguro es no exponer Uptime Kuma directamente a Internet.

Opciones recomendadas:

  • Acceso solo desde LAN.
  • Acceso remoto por WireGuard o Tailscale.
  • Reverse proxy con HTTPS y autenticación adicional si sabes lo que estás haciendo.

Si quieres usar Caddy como proxy inverso, puedes publicarlo con HTTPS. Pero no lo dejaría solo con usuario y contraseña de Uptime Kuma si va a estar expuesto al mundo.

Como mínimo:

  • HTTPS.
  • Contraseña fuerte.
  • Autenticación adicional en el proxy si es posible.
  • Restricción por IP o VPN si puedes.
  • Actualizaciones frecuentes.

Si lo vas a exponer con Caddy, la idea básica sería:

uptime.tudominio.com {
    reverse_proxy 127.0.0.1:3001
}

Pero mi recomendación real sigue siendo esta:

LAN o VPN primero.
Internet solo si hay una razón clara.

Si quieres profundizar, puedes ver mi artículo sobre proxy inverso con Caddy.


Paso 9: actualizar Uptime Kuma

Actualizar con Docker Compose es sencillo:

cd /opt/uptime-kuma
docker compose pull
docker compose up -d

Antes de actualizar, especialmente si tienes muchos monitores, haz copia de la carpeta de datos:

tar -czf uptime-kuma-backup-$(date +%F).tar.gz data

O intégrala en tu sistema de backups.

La carpeta importante es:

/opt/uptime-kuma/data

Ahí está la configuración de Uptime Kuma. Si pierdes esa carpeta, pierdes monitores, notificaciones y usuarios.


Paso 10: copia de seguridad

Esto se olvida mucho.

Uptime Kuma no suele contener “datos de negocio”, pero sí contiene una parte importante de tu operación: qué servicios monitorizas, cómo los llamas, cómo avisas y qué estructura tienes.

Como mínimo, haz backup de:

/opt/uptime-kuma/docker-compose.yml
/opt/uptime-kuma/data

Si ya tienes una estrategia de backups 3-2-1, inclúyelo ahí.

Y si estás montando un sistema de monitorización más completo, puedes combinar Uptime Kuma con Prometheus, Grafana y alertas por Telegram, como explico en el artículo sobre monitorización de homelab con Uptime Kuma, Prometheus y Grafana.


Resumen

Con muy poco esfuerzo puedes tener un sistema de monitorización útil para tu homelab o tus servicios personales.

Uptime Kuma destaca porque es:

  • Sencillo.
  • Visual.
  • Autohospedado.
  • Fácil de desplegar con Docker.
  • Compatible con muchas notificaciones.
  • Perfecto para alertas por Telegram.

Pero lo importante no es instalarlo. Lo importante es configurarlo con criterio.

No monitorices todo por ansiedad. Monitoriza lo que te permite actuar.

Mi configuración mínima sería:

  • Uptime Kuma en Docker.
  • Datos persistentes en /app/data.
  • Alertas por Telegram.
  • Monitores para servicios realmente críticos.
  • Acceso solo por LAN o VPN.
  • Backup de la carpeta data.

Con eso ya tienes algo mucho mejor que mirar manualmente si tus servicios siguen vivos.

Y en un homelab, dormir tranquilo empieza por enterarte cuando algo se rompe.


¿Usas Uptime Kuma, Grafana, Netdata o algo distinto para monitorizar tu homelab? Cuéntalo en los comentarios — las configuraciones reales enseñan más que cualquier captura perfecta.


Artículos relacionados

Deja un comentario