Guía Completa: Instalación y Configuración de Uptime Kuma en Debian 13 para Monitoreo de Servicios

Published:

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:

  1. Acceder al Panel: Abrir https://tu-dominio.com (o http://ip-servidor:3001)

  2. 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:

  1. Configurar monitores para todos tus servicios críticos

  2. Establecer canales de notificación preferidos

  3. Implementar dashboard público si es necesario

  4. 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.

- Advertisement -
Jorge
Jorgehttps://nksistemas.com
Soy Jorge, Sr Sysadmin Linux/DevOps/SRE y creador de NKSistemas.com Trabajo con plataformas: Linux, Windows, AWS, GCP, VMware, Helm, kubernetes, Docker, etc.

Related articles