Page:
Backup y Restauración
Clone
1
Backup y Restauración
groales edited this page 2025-12-05 11:04:10 +01:00
Backup y Restauración
Uptime Kuma usa SQLite embebida. Todos los datos están en un solo archivo: kuma.db.
Backup Manual
Método 1: Copia Directa
Detener contenedor primero (evitar corrupción):
# Detener
docker compose stop uptime-kuma
# Copiar base de datos
docker compose cp uptime-kuma:/app/data/kuma.db ./backup/kuma-$(date +%Y%m%d).db
# Reiniciar
docker compose start uptime-kuma
Método 2: Backup en Caliente (Recomendado)
Usar comando SQLite .backup sin detener servicio:
# Backup sin detener contenedor
docker compose exec uptime-kuma sqlite3 /app/data/kuma.db ".backup /app/data/kuma-backup.db"
# Copiar al host
docker compose cp uptime-kuma:/app/data/kuma-backup.db ./backup/kuma-$(date +%Y%m%d).db
# Limpiar backup temporal
docker compose exec uptime-kuma rm /app/data/kuma-backup.db
Backup Automático
Script Bash
Crear script /usr/local/bin/backup-uptime-kuma.sh:
#!/bin/bash
BACKUP_DIR="/backups/uptime-kuma"
RETENTION_DAYS=30
COMPOSE_FILE="/path/to/uptime-kuma/docker-compose.yml"
mkdir -p $BACKUP_DIR
# Backup en caliente
docker compose -f $COMPOSE_FILE exec -T uptime-kuma \
sqlite3 /app/data/kuma.db ".backup /app/data/kuma-backup.db"
# Copiar al host
docker compose -f $COMPOSE_FILE cp \
uptime-kuma:/app/data/kuma-backup.db \
$BACKUP_DIR/kuma-$(date +%Y%m%d-%H%M%S).db
# Limpiar temporal
docker compose -f $COMPOSE_FILE exec -T uptime-kuma \
rm /app/data/kuma-backup.db
# Limpiar backups antiguos
find $BACKUP_DIR -name "kuma-*.db" -mtime +$RETENTION_DAYS -delete
echo "✅ Backup completado: $(date)"
Permisos:
chmod +x /usr/local/bin/backup-uptime-kuma.sh
Cron (Diario a las 2 AM)
crontab -e
Añadir:
0 2 * * * /usr/local/bin/backup-uptime-kuma.sh >> /var/log/backup-uptime-kuma.log 2>&1
PowerShell (Windows con Docker Desktop)
Script C:\Scripts\Backup-UptimeKuma.ps1:
$BackupDir = "C:\Backups\UptimeKuma"
$RetentionDays = 30
$ComposeDir = "C:\Users\...\repos\uptime-kuma"
# Crear directorio si no existe
if (-not (Test-Path $BackupDir)) {
New-Item -ItemType Directory -Path $BackupDir
}
# Backup
Set-Location $ComposeDir
docker compose exec -T uptime-kuma sqlite3 /app/data/kuma.db ".backup /app/data/kuma-backup.db"
$Timestamp = Get-Date -Format "yyyyMMdd-HHmmss"
docker compose cp uptime-kuma:/app/data/kuma-backup.db "$BackupDir\kuma-$Timestamp.db"
docker compose exec -T uptime-kuma rm /app/data/kuma-backup.db
# Limpiar backups antiguos
Get-ChildItem $BackupDir -Filter "kuma-*.db" |
Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-$RetentionDays) } |
Remove-Item
Write-Host "✅ Backup completado: $(Get-Date)"
Tarea programada (Task Scheduler):
$Action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-File C:\Scripts\Backup-UptimeKuma.ps1"
$Trigger = New-ScheduledTaskTrigger -Daily -At 2:00AM
$Principal = New-ScheduledTaskPrincipal -UserId "SYSTEM" -LogonType ServiceAccount -RunLevel Highest
Register-ScheduledTask -TaskName "Backup Uptime Kuma" -Action $Action -Trigger $Trigger -Principal $Principal
Backup a Cloud
Rclone (S3, Google Drive, OneDrive, etc.)
Instalar rclone:
curl https://rclone.org/install.sh | sudo bash
Configurar remoto:
rclone config
# Seguir wizard para configurar S3/GDrive/etc
Script de backup a S3:
#!/bin/bash
BACKUP_FILE="/tmp/kuma-$(date +%Y%m%d).db"
RCLONE_REMOTE="s3:mi-bucket/uptime-kuma"
# Backup local
docker compose -f /path/to/docker-compose.yml exec -T uptime-kuma \
sqlite3 /app/data/kuma.db ".backup $BACKUP_FILE"
# Subir a S3
rclone copy $BACKUP_FILE $RCLONE_REMOTE
# Limpiar
rm $BACKUP_FILE
echo "✅ Backup subido a S3"
Restauración
Restaurar desde Backup
# 1. Detener contenedor
docker compose stop uptime-kuma
# 2. Restaurar archivo
docker compose cp ./backup/kuma-20241205.db uptime-kuma:/app/data/kuma.db
# 3. Verificar permisos (si es necesario)
docker compose run --rm uptime-kuma chown 1000:1000 /app/data/kuma.db
# 4. Reiniciar
docker compose start uptime-kuma
# 5. Verificar logs
docker compose logs -f uptime-kuma
Restaurar en Nuevo Servidor
# 1. Clonar repositorio
git clone https://git.ictiberia.com/groales/uptime-kuma.git
cd uptime-kuma
# 2. Configurar
cp docker-compose.override.traefik.yml.example docker-compose.override.yml
cp .env.example .env
nano .env
# 3. Iniciar primera vez (crear volumen)
docker compose up -d
# 4. Detener
docker compose stop
# 5. Restaurar backup
docker compose cp /path/to/kuma-backup.db uptime-kuma:/app/data/kuma.db
# 6. Reiniciar
docker compose start uptime-kuma
Verificar Integridad
Verificar base de datos SQLite
# Verificar integridad
docker compose exec uptime-kuma sqlite3 /app/data/kuma.db "PRAGMA integrity_check;"
# Debe mostrar: ok
Reparar base de datos corrupta
Si hay corrupción:
# Intentar reparar
docker compose exec uptime-kuma sqlite3 /app/data/kuma.db ".recover"
# Si falla, restaurar desde backup
docker compose stop uptime-kuma
docker compose cp ./backup/kuma-latest.db uptime-kuma:/app/data/kuma.db
docker compose start uptime-kuma
Migración a Nuevo Servidor
Exportar Datos
En servidor antiguo:
# Backup
docker compose exec uptime-kuma sqlite3 /app/data/kuma.db ".backup /tmp/kuma-migration.db"
docker compose cp uptime-kuma:/tmp/kuma-migration.db ./kuma-migration.db
# Transferir a nuevo servidor (ejemplo: SCP)
scp kuma-migration.db user@new-server:/tmp/
Importar Datos
En servidor nuevo:
# Desplegar Uptime Kuma
git clone https://git.ictiberia.com/groales/uptime-kuma.git
cd uptime-kuma
cp docker-compose.override.traefik.yml.example docker-compose.override.yml
cp .env.example .env
nano .env # Configurar DOMAIN_HOST
# Iniciar primera vez
docker compose up -d
# Detener y restaurar
docker compose stop
docker compose cp /tmp/kuma-migration.db uptime-kuma:/app/data/kuma.db
docker compose start uptime-kuma
¿Qué se Respalda?
El archivo kuma.db contiene todo:
- ✅ Usuarios y contraseñas
- ✅ Configuración 2FA
- ✅ Monitores y configuración
- ✅ Notificaciones
- ✅ Status Pages
- ✅ Historial de uptime (según retención configurada)
- ✅ Incidentes
- ✅ Tags y grupos
NO incluye:
- ❌ Configuración de Traefik/NPM (están en docker-compose.yml y .env)
- ❌ Logs de Docker (usar
docker compose logs > logs.txtsi necesario)
Siguiente Paso
Continúa con Actualización para mantener Uptime Kuma al día.