Ir al contenido

Uptime Kuma

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
ComandoDescripción
docker run -d -p 3001:3001 louislam/uptime-kuma:2Iniciar contenedor Uptime Kuma
docker compose up -dIniciar con Docker Compose
docker compose downDetener todos los servicios
docker compose logs -fSeguir logs del contenedor
docker restart uptime-kumaReiniciar el contenedor
docker stop uptime-kumaDetener el contenedor
docker start uptime-kumaIniciar contenedor detenido
node server/server.jsIniciar sin Docker
pm2 start server/server.js --name uptime-kumaIniciar con PM2
pm2 restart uptime-kumaReiniciar con PM2
pm2 stop uptime-kumaDetener con PM2
pm2 logs uptime-kumaVer 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
TipoDescripción
HTTP(S)Monitorear disponibilidad del sitio web y tiempo de respuesta
HTTP(S) KeywordVerificar texto específico en el cuerpo de respuesta
HTTP(S) JSON QueryValidar valores de respuesta JSON
TCP PortVerificar si un puerto TCP está abierto y respondiendo
PingPing ICMP para disponibilidad del host
DNSMonitorear resolución de registros DNS
Docker ContainerMonitorear estado de salud del contenedor
Steam Game ServerVerificar disponibilidad del servidor de juegos
MQTTMonitorear conectividad del broker MQTT
gRPCMonitorear salud del servicio gRPC
RadiusVerificación del servidor de autenticación RADIUS
GameDigMonitoreo de servidor de juegos (múltiples protocolos)
PushMonitoreo pasivo vía endpoint de latido
GroupAgrupación lógica de monitores
ServicioDescripción
SlackWebhooks de canal y notificaciones de bot
DiscordNotificaciones de canal basadas en webhook
TelegramNotificaciones de API de bot
Microsoft TeamsNotificaciones de webhook entrante
MattermostIntegración de chat auto-hospedada
Rocket.ChatNotificaciones de webhook
Google ChatNotificaciones de webhook de espacio
MatrixNotificaciones de chat descentralizado
ServicioDescripción
PushoverNotificaciones push móviles
GotifyServidor push auto-hospedado
ntfyNotificaciones pub/sub basadas en HTTP
PushbulletNotificaciones push entre dispositivos
SignalNotificaciones de mensajería segura
LINEIntegración de LINE Notify
ServicioDescripción
PagerDutyAlertas de incidentes y sobre llamadas
OpsgenieGestión de alertas y escalamiento
SquadcastGestión de incidentes
Splunk On-CallEnrutamiento de alertas VictorOps
Better StackMonitoreo de disponibilidad y gestión de incidentes
ServicioDescripción
SMTP EmailNotificaciones de correo electrónico personalizado
WebhookLlamadas a endpoint HTTP personalizado
Home AssistantDisparadores de automatización del hogar inteligente
ApprisePuerta de enlace universal de notificaciones
VariableDescripciónPredeterminado
UPTIME_KUMA_PORTPuerto del servidor3001
UPTIME_KUMA_HOSTDirección de enlace::
DATA_DIRDirectorio de almacenamiento de datos./data
TZZona horariaUTC
UMASKMáscara de permisos de archivo0000
NODE_EXTRA_CA_CERTSRuta de certificados CA personalizados
SSL_CERTRuta del certificado SSL
SSL_KEYRuta de clave privada SSL
CaracterísticaDescripción
Múltiples PáginasCrear páginas de estado separadas para diferentes servicios
Dominios PersonalizadosAsignar páginas de estado a nombres de dominio personalizados
CSS PersonalizadoEstilizar páginas de estado con CSS personalizado
Publicaciones de IncidentesCrear reportes de incidentes visibles en página de estado
MantenimientoProgramar ventanas de mantenimiento
Grupos de MonitoresOrganizar monitores en grupos en página de estado
# Instalar cliente API de Python
pip install uptime-kuma-api
OperaciónDescripción
Agregar monitorCrear monitores programáticamente
Editar monitorActualizar configuración de monitor
Eliminar monitorEliminar monitores
Pausar/ReanudarAlternar estado del monitor
Obtener estadoRecuperar estado actual del monitor
Agregar notificaciónConfigurar proveedores de notificación
Obtener disponibilidadConsultar 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ísticaDescripción
2FAAutenticación de dos factores para inicio de sesión
Reverse ProxyImplementar detrás de Nginx, Caddy o Traefik
SSL/TLSSSL integrado o terminación de proxy inverso
Limitación de Tasa de Inicio de SesiónProtección contra ataques de fuerza bruta
Claves APIAcceso 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;
    }
}
ComandoDescripción
docker cp uptime-kuma:/app/data ./backupHacer copia de seguridad del directorio de datos
docker cp ./backup/. uptime-kuma:/app/dataRestaurar desde copia de seguridad
docker volume inspect uptime-kumaEncontrar punto de montaje del volumen
ProblemaSolución
No se puede acceder a la interfaz de usuarioVerificar enlace de puerto: docker port uptime-kuma
Errores de volumen NFSUsar directorios locales, no sistemas de archivos de red
Errores de WebSocketConfigurar proxy inverso para actualización de WebSocket
Contenedor no iniciaVerificar logs: docker logs uptime-kuma
Persistencia de datos perdidaAsegurar que se usa volumen -v uptime-kuma:/app/data
Fallo en monitoreo de DockerMontar docker.sock: -v /var/run/docker.sock:/var/run/docker.sock:ro
PlataformaEstado
Linux (x64, ARM)Soportado
Windows 10+ (x64)Soportado
macOSSoportado
Docker DesktopSoportado
KubernetesVía imagen Docker
FreeBSD/OpenBSDNo soportado
Replit/HerokuNo 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