Uptime Kuma se ha consolidado como una de las soluciones de monitoreo auto-hospedado más populares, ofreciendo una alternativa robusta y privada a servicios de terceros. Esta guía detallada cubre la instalación completa en Debian 13, incluyendo optimizaciones para entornos de producción.
Prerrequisitos del Sistema
Requisitos Mínimos:
-
Debian 13 (Trixie) instalado y actualizado
-
1 GB RAM mínimo (2 GB recomendado para múltiples monitores)
-
10 GB de espacio en disco
-
Acceso root o usuario con privilegios sudo
Actualización Inicial del Sistema:
sudo apt update && sudo apt upgrade -y sudo reboot
Instalación de Node.js LTS
Configuración del Repositorio:
# Instalar herramientas esenciales sudo apt install -y curl wget git build-essential # Agregar repositorio NodeSource para Node.js LTS curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash - # Instalar Node.js y npm sudo apt install -y nodejs # Verificar instalación node --version # Debe mostrar v18.x o superior npm --version # Debe mostrar 9.x o superior
Configuración de Permisos NPM (Opcional):
# Evitar uso de sudo con npm global mkdir ~/.npm-global npm config set prefix '~/.npm-global' echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc source ~/.bashrc
Instalación de Uptime Kuma
Clonación y Configuración:
# Crear directorio y clonar repositorio sudo mkdir -p /opt sudo git clone https://github.com/louislam/uptime-kuma.git /opt/uptime-kuma # Configurar permisos adecuados sudo chown -R $USER:$USER /opt/uptime-kuma cd /opt/uptime-kuma # Instalar dependencias npm ci --production
Configuración Inicial:
# Ejecutar setup npm run setup # Verificar que la instalación fue exitosa ls -la /opt/uptime-kuma
Configuración con PM2 para Producción
Instalación y Configuración de PM2:
# Instalar PM2 globalmente sudo npm install pm2 -g # Instalar rotación de logs pm2 install pm2-logrotate # Configurar rotación automática de logs pm2 set pm2-logrotate:max_size 10M pm2 set pm2-logrotate:retain 30 pm2 set pm2-logrotate:compress true
Inicio de Uptime Kuma con PM2:
# Crear script de inicio para Uptime Kuma cat > /opt/uptime-kuma/start-uptime-kuma.sh << 'EOF' #!/bin/bash cd /opt/uptime-kuma node server/server.js EOF chmod +x /opt/uptime-kuma/start-uptime-kuma.sh # Iniciar con PM2 pm2 start /opt/uptime-kuma/start-uptime-kuma.sh --name uptime-kuma --interpreter bash # Configurar inicio automático pm2 startup sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u $USER --hp /home/$USER # Guardar configuración pm2 save
Verificación del Servicio:
# Verificar estado pm2 status uptime-kuma pm2 logs uptime-kuma --lines 20 # Verificar que está escuchando en el puerto 3001 ss -tulpn | grep 3001
Configuración de Nginx como Proxy Inverso
Instalación de Nginx:
sudo apt install -y nginx sudo systemctl enable nginx sudo systemctl start nginx
Configuración del Virtual Host:
# Crear archivo de configuración sudo tee /etc/nginx/sites-available/uptime-kuma > /dev/null << 'EOF' server { listen 80; server_name tu-dominio.com; # Reemplazar con tu dominio 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_bypass $http_upgrade; # Timeouts proxy_connect_timeout 30s; proxy_send_timeout 30s; proxy_read_timeout 30s; } # Security headers add_header X-Frame-Options "SAMEORIGIN" always; add_header X-XSS-Protection "1; mode=block" always; add_header X-Content-Type-Options "nosniff" always; add_header Referrer-Policy "no-referrer-when-downgrade" always; } EOF
Habilitar Sitio y Configurar SSL (Opcional):
# Habilitar sitio sudo ln -s /etc/nginx/sites-available/uptime-kuma /etc/nginx/sites-enabled/ # Testear configuración sudo nginx -t # Recargar Nginx sudo systemctl reload nginx
Configuración SSL con Certbot (Recomendado):
# Instalar Certbot sudo apt install -y certbot python3-certbot-nginx # Obtener certificado SSL sudo certbot --nginx -d tu-dominio.com # Configurar renovación automática sudo crontab -l | { cat; echo "0 12 * * * /usr/bin/certbot renew --quiet"; } | sudo crontab -
Configuración Inicial de Uptime Kuma
Acceso y Configuración:
-
Acceder al Panel: Abrir
https://tu-dominio.com(ohttp://ip-servidor:3001) -
Configuración Inicial:
-
Idioma: Seleccionar español o preferencia
-
Usuario Admin: Crear cuenta administrativa
-
Configuración Base: Ajustes iniciales del sistema
-
Configuración de Monitores Básicos:
# Ejemplo de configuración para monitores comunes Monitores Recomendados: - Servicio Web: HTTP/HTTPS check cada 60 segundos - SSH Server: Puerto 22 cada 120 segundos - Base de Datos: Puerto específico (3306, 5432, etc.) - Recursos Sistema: Plugin de monitorización local
Optimizaciones para Producción
Configuración de Base de Datos (Opcional):
# Uptime Kuma usa SQLite por defecto, pero para cargas altas: sudo apt install -y sqlite3 # La base de datos se encuentra en: /opt/uptime-kuma/data/
Configuración de Respaldos Automáticos:
# Script de backup para datos de Uptime Kuma sudo tee /usr/local/bin/backup-uptime-kuma.sh > /dev/null << 'EOF' #!/bin/bash BACKUP_DIR="/opt/backups/uptime-kuma" TIMESTAMP=$(date +%Y%m%d_%H%M%S) mkdir -p $BACKUP_DIR # Backup de base de datos y configuración tar -czf $BACKUP_DIR/uptime-kuma-backup-$TIMESTAMP.tar.gz -C /opt/uptime-kuma data # Eliminar backups antiguos (mantener últimos 30 días) find $BACKUP_DIR -name "uptime-kuma-backup-*.tar.gz" -mtime +30 -delete echo "Backup completado: $BACKUP_DIR/uptime-kuma-backup-$TIMESTAMP.tar.gz" EOF sudo chmod +x /usr/local/bin/backup-uptime-kuma.sh # Agregar a cron para backups diarios (crontab -l ; echo "0 2 * * * /usr/local/bin/backup-uptime-kuma.sh") | crontab -
Monitorización del Propio Uptime Kuma:
# Script de health check sudo tee /usr/local/bin/check-uptime-kuma.sh > /dev/null << 'EOF' #!/bin/bash RESPONSE=$(curl -s -o /dev/null -w "%{http_code}" http://127.0.0.1:3001) if [ "$RESPONSE" != "200" ]; then echo "Uptime Kuma no responde. Reiniciando..." pm2 restart uptime-kuma # Aquí puedes agregar notificación por email o otro método fi EOF sudo chmod +x /usr/local/bin/check-uptime-kuma.sh # Verificación cada 5 minutos (crontab -l ; echo "*/5 * * * * /usr/local/bin/check-uptime-kuma.sh") | crontab -
Solución de Problemas Comunes
Problemas de Permisos:
# Si hay problemas de permisos con SQLite sudo chown -R $USER:$USER /opt/uptime-kuma/data
Problemas de Puerto en Uso:
# Verificar y liberar puerto 3001 si es necesario sudo lsof -i :3001 sudo kill -9 $(sudo lsof -t -i:3001)
Logs y Debugging:
# Ver logs en tiempo real pm2 logs uptime-kuma --lines 50 # Ver logs específicos de la aplicación tail -f /opt/uptime-kuma/logs/*.log # Ver estado del sistema pm2 monit
Configuración Avanzada y Mejores Prácticas
Variables de Entorno para Personalización:
# Crear archivo de entorno cat > /opt/uptime-kuma/.env << 'EOF' NODE_ENV=production PUERTO=3001 HOST=0.0.0.0 EOF
Configuración de Notificaciones:
-
Telegram: Configurar bot para alertas instantáneas
-
Email: Configurar SMTP para notificaciones por correo
-
Webhook: Integración con sistemas externos
-
Discord/Slack: Notificaciones en canales de equipo
Mantenimiento y Actualizaciones
Actualización de Uptime Kuma:
# Detener servicio pm2 stop uptime-kuma # Backup antes de actualizar /usr/local/bin/backup-uptime-kuma.sh # Actualizar código cd /opt/uptime-kuma git pull origin master npm ci --production # Reiniciar servicio pm2 start uptime-kuma pm2 save
Monitoreo de Recursos:
# Ver consumo de recursos pm2 monit htop df -h
Conclusión
Con esta configuración completa, tendrás una instancia de Uptime Kuma totalmente funcional y optimizada para entornos de producción. La solución ofrece:
-
✅ Monitoreo en Tiempo Real de todos tus servicios
-
✅ Alertas Inmediatas mediante múltiples canales
-
✅ Interfaz Web Moderna y responsive
-
✅ Auto-hospedaje completo y privado
-
✅ Bajo Consumo de recursos
-
✅ Fácil Mantenimiento con PM2 y backups automáticos
Próximos Pasos Recomendados:
-
Configurar monitores para todos tus servicios críticos
-
Establecer canales de notificación preferidos
-
Implementar dashboard público si es necesario
-
Configurar autenticación adicional si se expone a internet
Esta implementación provee una base sólida para el monitoreo de infraestructura, asegurando alta disponibilidad y rápida detección de problemas en tus servicios.






