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).
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.
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.
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.
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.
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.
# 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.
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).
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.
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.
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
- Repositorio oficial en GitHub: https://github.com/louislam/uptime-kuma
- Sitio web y documentación oficial: https://uptime.kuma.pet
- Demo en vivo (datos temporales, 10 min): https://demo.kuma.pet/start-demo
- Imagen oficial en Docker Hub: https://hub.docker.com/r/louislam/uptime-kuma
- Wiki: Guía de instalación avanzada: https://github.com/louislam/uptime-kuma/wiki/%F0%9F%94%A7-How-to-Install
- Wiki: Guía de actualización: https://github.com/louislam/uptime-kuma/wiki/%F0%9F%86%99-How-to-Update
- Lista completa de proveedores de notificación: https://github.com/louislam/uptime-kuma/tree/master/src/components/notifications
- Traducciones en Weblate: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/
- Issues y soporte en GitHub: https://github.com/louislam/uptime-kuma/issues
- Subreddit de la comunidad: https://www.reddit.com/r/UptimeKuma/
- Patrocinadores en OpenCollective: https://opencollective.com/uptime-kuma
- GitHub Sponsors del autor: https://github.com/sponsors/louislam
Apoya el canal GENBYTE
¿Te ha sido útil este contenido?
Suscríbete a YouTube
Newsletter GENBYTE
Ko-fi
Contacto: [email protected]
