Actualización
groales edited this page 2025-12-05 11:46:27 +01:00

Actualización

Guía para mantener Uptime Kuma actualizada de forma segura.


Estrategia de Versionado

Uptime Kuma usa versionado semántico: MAJOR.MINOR.PATCH

Tags Docker:

  • latest: Última versión (no recomendado en producción)
  • 2: Última versión 2.x (recomendado)
  • 2.0: Última versión 2.0.x
  • 2.0.2: Versión específica

Recomendación: Usar tag 2 para recibir actualizaciones automáticas dentro de v2.x (compatibles).


Actualización Manual

1. Backup Previo (CRÍTICO)

# Backup base de datos
docker compose exec uptime-kuma sqlite3 /app/data/kuma.db ".backup /app/data/kuma-pre-update.db"

# Copiar al host
docker compose cp uptime-kuma:/app/data/kuma-pre-update.db ./backup/kuma-$(date +%Y%m%d)-pre-update.db

2. Pull Nueva Imagen

cd /path/to/uptime-kuma
docker compose pull uptime-kuma

Salida esperada:

Pulling uptime-kuma ... done

3. Recrear Contenedor

docker compose up -d uptime-kuma

Docker Compose:

  • Detiene contenedor actual
  • Crea nuevo contenedor con imagen actualizada
  • Mantiene volumen de datos (no se pierde nada)

4. Verificar

# Ver logs
docker compose logs -f uptime-kuma

# Verificar versión
docker compose exec uptime-kuma cat /app/package.json | grep version

Logs esperados:

✅ Server is ready
Listening on http://0.0.0.0:3001

5. Probar Acceso

  1. Navegar a https://uptime.example.com
  2. Login
  3. Verificar que monitores funcionan
  4. Verificar notificaciones activas

Actualización Automática (Watchtower)

Watchtower monitoriza cambios en imágenes Docker y actualiza contenedores automáticamente.

Configuración

Añadir a docker-compose.yml:

services:
  uptime-kuma:
    # ... configuración existente ...
  
  watchtower:
    image: containrrr/watchtower:latest
    container_name: watchtower-uptime-kuma
    restart: unless-stopped
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - WATCHTOWER_CLEANUP=true  # Eliminar imágenes antiguas
      - WATCHTOWER_INCLUDE_STOPPED=false
      - WATCHTOWER_MONITOR_ONLY=false
      - WATCHTOWER_SCHEDULE=0 0 4 * * *  # 4 AM diario
      - WATCHTOWER_NOTIFICATIONS=email
      - WATCHTOWER_NOTIFICATION_EMAIL_FROM=watchtower@example.com
      - WATCHTOWER_NOTIFICATION_EMAIL_TO=admin@example.com
      - WATCHTOWER_NOTIFICATION_EMAIL_SERVER=smtp.gmail.com
      - WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT=587
      - WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER=tu_email@gmail.com
      - WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD=app_password
    command: uptime-kuma  # Solo monitorizar uptime-kuma

Desplegar:

docker compose up -d watchtower

Horario de Actualización

Formato cron: segundos minutos horas día_mes mes día_semana

Ejemplos:

# Diario a las 4 AM
WATCHTOWER_SCHEDULE=0 0 4 * * *

# Cada lunes a las 3 AM
WATCHTOWER_SCHEDULE=0 0 3 * * MON

# Cada 12 horas
WATCHTOWER_SCHEDULE=0 0 */12 * * *

Rollback (Volver a Versión Anterior)

Si actualización causa problemas:

Opción 1: Restaurar desde Backup

# Detener
docker compose stop uptime-kuma

# Restaurar base de datos
docker compose cp ./backup/kuma-pre-update.db uptime-kuma:/app/data/kuma.db

# Reiniciar
docker compose start uptime-kuma

Opción 2: Usar Versión Específica

Editar docker-compose.yml:

services:
  uptime-kuma:
    image: louislam/uptime-kuma:2.0.1  # Versión específica anterior

Desplegar:

docker compose pull
docker compose up -d uptime-kuma

Actualización a Nueva Versión Mayor (v1 → v2)

⚠️ Importante: Actualizaciones mayores pueden tener cambios incompatibles.

Antes de Actualizar

  1. Leer Changelog: GitHub Releases
  2. Backup completo
  3. Probar en entorno de desarrollo primero

Proceso

# Backup
docker compose exec uptime-kuma sqlite3 /app/data/kuma.db ".backup /tmp/kuma-v1.db"
docker compose cp uptime-kuma:/tmp/kuma-v1.db ./backup/

# Cambiar a v2
nano docker-compose.yml
# image: louislam/uptime-kuma:2

# Actualizar
docker compose pull
docker compose up -d uptime-kuma

# Verificar logs para errores de migración
docker compose logs -f uptime-kuma

Verificación Post-Actualización

Checklist

  • Uptime Kuma inicia sin errores
  • Login funciona
  • Monitores siguen activos
  • Notificaciones funcionan (enviar test)
  • Status Pages accesibles
  • WebSockets funcionan (actualización en tiempo real)

Verificar Base de Datos

# Integridad
docker compose exec uptime-kuma sqlite3 /app/data/kuma.db "PRAGMA integrity_check;"

# Debe devolver: ok

Verificar Versión

# Desde Docker
docker compose exec uptime-kuma cat /app/package.json | grep version

# O desde UI
# Settings → About → Version

Problemas Comunes

Base de datos corrupta tras actualización

Síntoma: Error al iniciar, monitores desaparecen.

Solución:

# Restaurar desde backup
docker compose stop uptime-kuma
docker compose cp ./backup/kuma-pre-update.db uptime-kuma:/app/data/kuma.db
docker compose start uptime-kuma

Contenedor no inicia tras actualización

Ver logs:

docker compose logs uptime-kuma

Errores comunes:

  • EACCES: permission denied → Permisos del volumen
    docker compose exec uptime-kuma chown -R 1000:1000 /app/data
    
  • Database locked → Asegurar que no hay múltiples contenedores
    docker ps -a | grep uptime-kuma
    docker rm -f <container_id_antiguo>
    

Monitores se marcan como "down" tras actualización

Causa: Cambio en lógica de checks (raro).

Solución:

  1. Editar monitor problemático
  2. Click en Test
  3. Ajustar configuración si necesario
  4. Save

Notificaciones de Actualización

Uptime Kuma NO notifica automáticamente cuando hay actualizaciones.

Alternativas:

1. Watchtower con Notificaciones

(Ver sección Actualización Automática)

2. Monitorizar GitHub Releases

Usar servicio como:

3. Docker Hub Webhooks

Configurar webhook en Docker Hub que envíe notificación cuando louislam/uptime-kuma:2 se actualiza.


Estrategia Recomendada

Producción:

  • Tag: 2 (actualizaciones automáticas de parches/minor)
  • Watchtower: Deshabilitado (actualizaciones manuales programadas)
  • Backup: Automático diario
  • Testing: Probar actualizaciones en entorno dev primero

Desarrollo/Testing:

  • Tag: latest
  • Watchtower: Habilitado
  • Backup: Antes de actualización manual

Siguiente Paso

Continúa con Solución de Problemas para resolver errores comunes.