Automatización de backups en homelab: estrategias esenciales para no perder datos
Mantener copias de seguridad fiables en un homelab es tan crítico como configurar correctamente los servicios. La pérdida de datos no solo implica reinstalar aplicaciones, sino también recuperar configuraciones complejas, bases de datos o archivos personales que pueden tardar horas o días en reconstruirse. La automatización es la clave para evitar olvidos humanos y garantizar recuperaciones rápidas ante fallos de hardware, errores de configuración o ataques de ransomware.
1. Componentes críticos para un sistema de backups robusto
Un backup completo debe incluir:
- Datos persistentes: configuraciones de Docker (
/var/lib/docker/volumes/), bases de datos (MariaDB, PostgreSQL), archivos de usuarios y configuraciones de aplicaciones (Nextcloud, Home Assistant). - Metadatos del sistema: scripts de configuración, manuales de servicios y registros (logs) importantes.
- Sistema operativo: aunque no se suele respaldar, tener una imagen mínima del sistema operativo en un disco externo ayuda a recuperar rápidamente ante fallos catastróficos.
Para servidores pequeños (Raspberry Pi, mini-PCs), prioriza los datos persistentes sobre el SO. En servidores más potentes, usa clonaciones completas del disco (como dd o herramientas como Clonezilla) junto con backups de datos.
2. Herramientas clave: rsync, BorgBackup y Duplicati
rsync es la herramienta más simple y eficiente para sincronizar archivos entre directorios locales o remotos (incluso por SSH). Ejemplo básico para respaldar la carpeta de Docker:
rsync -avz --delete /var/lib/docker/volumes/ /mnt/backups/docker_volumes/
-a: modo archivo (preserva permisos, fechas, enlaces simbólicos).-v: modo verbose (para depuración).-z: comprime durante la transferencia.--delete: elimina archivos en destino que no existan en origen (útil para sincronizar).
BorgBackup es una solución más avanzada que usa deduplicación de datos, cifrado y compresión. Ideal para backups incrementales y remotos (opciona S3, SSH o repositorios locales). Instalación y ejemplo:
sudo apt install borgbackup
borg init --encryption=repokey /mnt/backups/homelab_borg
borg create --stats --progress /mnt/backups/homelab_borg::homelab-{now} /var/lib/docker/volumes/
now: variable que genera una etiqueta con la fecha automáticamente.--statsy--progress: muestran información detallada durante la ejecución.
Duplicati es una opción con interfaz web, ideal para usuarios que prefieren evitar la terminal. Soporta múltiples proveedores de almacenamiento (Backblaze, Google Drive, Wasabi) y cifrado AES-256. Configuración básica mediante Docker:
version: '3'
services:
duplicati:
image: duplicati/duplicati
environment:
- CLI_ARGS=--webservice-interface=any --server-data=/config
volumes:
- ./duplicati-config:/config
- /var/lib/docker/volumes:/data_to_backup
- /mnt/backups/duplicati:/backups
ports:
- 8200:8200
3. Estrategias de rotación: la regla 3-2-1
Para evitar que un único backup sea vulnerable (ejemplo: un disco externo puede fallar), aplica la regla 3-2-1:
- 3 copias de los datos (original + 2 copias de seguridad).
- 2 tipos distintos de almacenamiento (ejemplo: NAS local + almacenamiento en la nube).
- 1 copia fuera de sitio (cloud, otro hogar o un servidor remoto).
Ejemplo práctico con borg y rotación:
# Backup diario (7 días de retención)
borg create --stats /mnt/backups/homelab_borg::homelab-{now} /var/lib/docker/volumes/
# Borrar backups antiguos (más de 7 días)
borg prune --keep-daily 7 --keep-weekly 4 /mnt/backups/homelab_borg
4. Pruebas de recuperación: lo único que valida un backup
De nada sirve tener backups si no se pueden restaurar. Establece un plan de recuperación que incluya:
- Pruebas trimestrales: Restaura archivos críticos en un entorno de pruebas (un contenedor Docker temporal o una VM).
- Documentación: Registra los pasos para restaurar cada servicio (ejemplo: “Para recuperar Home Assistant, clone el volumen de Docker y reinicia el servicio”).
- Logs de verificación: Usa herramientas como
borg checkpara validar la integridad de los repositorios:
borg check /mnt/backups/homelab_borg --verify-data
Ejemplo de restauración con borg:
# Listar backups disponibles
borg list /mnt/backups/homelab_borg
# Restaurar un volumen específico
borg extract /mnt/backups/homelab_borg::homelab-2024-01-15 /var/lib/docker/volumes/postgres_data/
5. Cloud vs. Local: ventajas y costes
| Opción | Ventajas | Desventajas | Coste aproximado |
|---|---|---|---|
| Local (NAS) | Velocidad, coste reducido, control total | Riesgo físico (incendio, robo) | 100-300€ (discos duros) |
| Remoto (SSH) | Fuera de sitio, automático | Requiere ancho de banda, latencia | 5-15€/mes (VPS barato) |
| Cloud (S3, B2) | Escalable, seguro, accesible desde cualquier sitio | Coste mensual por almacenamiento | 5-20€/mes (100GB) |
| Físico (exFAT) | Restauración inmediata, sin dependencias | Poco práctico para +100GB, riesgo de fallo | 50-100€ (discos externos) |
Recomendación: Combina opciones. Ejemplo:
- Copias locales diarias (borg + NAS de discos duros).
- Copias semanales a cloud (Duplicati a Backblaze B2, ~6€/mes para 100GB).
- Copias mensuales en un disco externo (guardado en casa de un familiar).
6. Automatización con cron y Docker Compose
Para evitar depender de un script manual, usa cron para programar backups y Docker Compose para servicios como Duplicati.
Ejemplo con cron para borg (ejecuta a las 3 AM diariamente):
0 3 * * * borg create --stats /mnt/backups/homelab_borg::homelab-{now} /var/lib/docker/volumes/ && borg prune --keep-daily 7 --keep-weekly 4 /mnt/backups/homelab_borg
Ejemplo con Docker Compose (backup incremental con rsync):
version: '3'
services:
backup-rsync:
image: atmoz/sftp
volumes:
- /var/lib/docker/volumes:/backup/source
command: /backup/source /home/backupuser
environment:
- SFTP_USERS=backupuser:password
Recuerda: Un backup no es válido hasta que no se haya restaurado al menos una vez. Automatiza el proceso, pero dedica tiempo cada 6 meses a probar manualmente la recuperación de datos críticos.