Uptime Kuma: Herramienta de monitoreo autohospedada con interfaz reactiva

Publicado por


uptime-kuma
Monitoreo Autohospedado

Uptime Kuma: Herramienta de monitoreo autohospedada con interfaz reactiva

Monitoriza servicios HTTP, TCP, DNS, WebSocket y contenedores Docker con notificaciones multiplataforma y páginas de estado personalizables

Vídeo tutorial en YouTube

Mira el vídeo completo sobre cómo instalar y usar Uptime Kuma: Herramienta de monitoreo autohospedada con interfaz reactiva en el canal GENBYTE:

¿Qué es Uptime Kuma: Herramienta de monitoreo autohospedada con interfaz reactiva?

Uptime Kuma es una herramienta de monitoreo de tiempo de actividad autohospedada, diseñada como alternativa a servicios como Uptime Robot. Desarrollada por Louis Lam, ofrece una interfaz de usuario reactiva construida con Vue 3 y Vite, comunicación en tiempo real mediante Socket.io y almacenamiento basado en SQLite. El proyecto cuenta con más de 92.000 estrellas en GitHub y se distribuye bajo licencia MIT. Permite monitorizar múltiples tipos de endpoints —HTTP(S), TCP, palabras clave en respuestas HTTP, consultas JSON, WebSocket, Ping, registros DNS, servidores de juegos Steam y contenedores Docker— con intervalos de verificación de 20 segundos. Incluye sistema de notificaciones con más de 90 proveedores (Telegram, Discord, Slack, Email SMTP, Gotify, Pushover, entre otros), páginas de estado públicas personalizables, gráficos de latencia, información de certificados TLS, soporte para proxy y autenticación de dos factores (2FA).

Interfaz reactiva en tiempo real, más de 90 canales de notificación y monitorización de contenedores Docker sin agente externo.

Características principales

Monitorización multiprotocolo

Soporta comprobaciones HTTP(S), TCP, HTTP(S) Keyword, HTTP(S) Json Query, WebSocket, Ping, DNS Record, Push, Steam Game Server y contenedores Docker.

Interfaz reactiva y rápida

UI/UX construida con Vue 3, Vite y Bootstrap 5, con actualizaciones en tiempo real mediante Socket.io sin necesidad de recargar la página.

Notificaciones extensivas

Más de 90 servicios de notificación integrados, incluyendo Telegram, Discord, Gotify, Slack, Pushover, Email (SMTP) y webhooks genéricos.

Páginas de estado públicas

Permite crear múltiples páginas de estado y mapearlas a dominios personalizados para visibilidad externa del estado de los servicios.

Gráficos de latencia y certificados

Visualización de histórico de ping con gráficos y detalle de información de certificados TLS (validez, emisor, algoritmo).

Soporte multiidioma y 2FA

Interfaz traducida a múltiples idiomas gestionada vía Weblate y autenticación de dos factores para acceso administrativo.

Compatibilidad con proxy inverso

Funcionamiento detrás de proxies inversos (Nginx, Traefik, Caddy) con cabeceras X-Forwarded-For y X-Real-IP para logging y seguridad.

Despliegue sencillo con Docker

Imagen oficial multi-arquitectura (amd64/arm64) en Docker Hub, con persistencia de datos en volumen y reinicio automático.

Requisitos del sistema

  • Docker Engine y Docker Compose (recomendado)
  • Node.js >= 26.2.0 para instalación sin Docker
  • Git para clonar el repositorio
  • PM2 para gestión de procesos en instalación sin Docker
  • Sistema de archivos local (NFS no soportado para persistencia)
  • Puerto 3001 disponible en el host
  • Linux (Debian, Ubuntu, Fedora, Arch), Windows 10/Server 2012 R2 o superior

Instalación con Docker Compose

Despliegue con Docker Compose (recomendado)

Crea un directorio, descarga el archivo compose.yaml oficial y levanta el contenedor. Los datos persisten en ./data mapeado a /app/data dentro del contenedor.

mkdir uptime-kuma
cd uptime-kuma
curl -o compose.yaml https://raw.githubusercontent.com/louislam/uptime-kuma/master/compose.yaml
docker compose up -d

Despliegue con Docker CLI

Ejecución directa del contenedor con volumen nombrado y política de reinicio unless-stopped. Expone el puerto 3001 en todas las interfaces.

docker run -d –restart=unless-stopped -p 3001:3001 -v uptime-kuma:/app/data –name uptime-kuma louislam/uptime-kuma:2

Instalación sin Docker (Node.js + PM2)

Clona el repositorio, ejecuta el script de configuración y gestiona el proceso con PM2. Requiere Node.js >= 26.2.0 y Git instalados.

git clone https://github.com/louislam/uptime-kuma.git
cd uptime-kuma
npm run setup
npm install pm2 -g && pm2 install pm2-logrotate
pm2 start server/server.js –name uptime-kuma
pm2 startup && pm2 save

Acceder al proyecto

Interfaz web

Accede a la interfaz en http://localhost:3001 o http://<IP-del-servidor>:3001 tras el despliegue. En el primer acceso se solicita crear usuario administrador y contraseña.

Exposición solo en localhost

Para limitar el acceso a la máquina local, modifica el mapeo de puertos a 127.0.0.1:3001:3001 en Docker Compose o en el comando docker run.

Casos de uso

  • Monitorización de disponibilidad de sitios web, APIs y microservicios HTTP/HTTPS
  • Supervisión de puertos TCP de bases de datos, colas de mensajes y servicios internos
  • Verificación de contenido específico en respuestas HTTP (palabras clave, JSON)
  • Comprobación de conectividad WebSocket en aplicaciones de tiempo real
  • Monitorización de latencia ICMP (Ping) y resolución de registros DNS
  • Control de estado de contenedores Docker en el mismo host o remotos
  • Alertas de expiración de certificados TLS y cambios en cadena de confianza
  • Páginas de estado públicas para comunicar incidencias a clientes o equipos
  • Notificación de caídas y recuperaciones vía Telegram, Discord, Slack, Email u otros 90+ canales
  • Auditoría de tiempo de actividad histórico con gráficos de latencia por endpoint

Configuración avanzada

Configuración detrás de proxy inverso (Nginx)

Ejemplo de bloque server para Nginx con cabeceras necesarias para WebSocket y IP real del cliente. Ajusta server_name y rutas de certificados TLS.

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

server {
listen 443 ssl http2;
server_name monitor.tudominio.com;
ssl_certificate /etc/letsencrypt/live/monitor.tudominio.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/monitor.tudominio.com/privkey.pem;

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;
proxy_cache off;
proxy_read_timeout 90s;
}
}

Variables de entorno útiles

La imagen oficial no documenta variables de entorno obligatorias en el README. La configuración principal (puerto, base de datos, ajustes de seguridad) se gestiona desde la interfaz web tras el primer inicio. Para personalización avanzada, consulta la wiki oficial.

# No hay variables de entorno documentadas para configuración básica.
# La persistencia se gestiona vía volumen /app/data.
# Puerto interno fijo: 3001.

Actualización de versión

Procedimiento estándar para actualizar contenedor Docker: detener, eliminar, descargar imagen nueva y recrear con mismo volumen de datos.

docker compose pull
cd uptime-kuma
docker compose down
docker compose up -d

Gestión y mantenimiento

Copia de seguridad de datos

La base de datos SQLite y archivos de configuración residen en el volumen /app/data. Realiza copias de seguridad del directorio mapeado (./data en Docker Compose o volumen uptime-kuma en Docker CLI).

# Backup con Docker Compose
cd uptime-kuma
docker compose stop
tar -czf uptime-kuma-backup-$(date +%F).tar.gz data
docker compose start

Restablecimiento de contraseña y 2FA

Scripts oficiales para recuperar acceso administrativo en caso de pérdida de credenciales o 2FA. Requieren acceso al contenedor o al sistema de archivos del host.

# Dentro del contenedor o host con Node.js
npm run reset-password
npm run remove-2fa

Limpieza de logs y optimización

PM2 gestiona logs con rotación (pm2-logrotate). En Docker, los logs del contenedor se gestionan con docker logs y driver json-file. Limita tamaño con –log-opt max-size=10m –log-opt max-file=3 al crear el contenedor.

# Ver logs recientes
docker logs –tail 100 -f uptime-kuma

# Limitar logs en nuevo contenedor
docker run -d –restart=unless-stopped \
–log-opt max-size=10m –log-opt max-file=3 \
-p 3001:3001 -v uptime-kuma:/app/data \
–name uptime-kuma louislam/uptime-kuma:2

Stack técnico

  • Node.js >= 26.2.0
  • Vue 3.5 (Composition API)
  • Vite 8.1 (bundler y dev server)
  • TypeScript 4.4
  • Express 4.22 (servidor HTTP)
  • Socket.io 4.8 (WebSocket en tiempo real)
  • Better-SQLite3 12.11 (base de datos embebida)
  • Bootstrap 5.1 (framework CSS)
  • Chart.js 4.2 (gráficos de latencia)
  • Vue Router 4.2 (SPA routing)
  • Vue I18n 11.2 (internacionalización)
  • Knex 3.3 (query builder SQL)
  • PM2 (gestión de procesos en modo non-Docker)
  • Docker multi-arch (debian-base, builder-go, nightly targets)

Referencias oficiales

Apoya el canal GENBYTE

Sígueme en mis redes sociales

Dejar un comentario

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