El problema#
Tengo varios contenedores Docker corriendo en mi servidor doméstico con datos que no puedo perder: bases de datos, configuraciones, archivos de usuarios. Un día el disco falla y pierdo todo. No vuelvo a cometer ese error.
Necesitaba una solución que:
- Fuera automática (sin intervención manual)
- Cifrara los datos
- Guardara en almacenamiento externo (USB, NAS)
- Me avisara si algo fallaba
Duplicati resultó ser la herramienta indicada.
Instalación de Duplicati#
Ejecuto Duplicati en Docker también (redundancia controlada). Mi docker-compose:
duplicati:
image: duplicati/duplicati:latest
container_name: duplicati
restart: always
ports:
- "8200:8200"
volumes:
- /var/lib/duplicati:/data
- /var/lib/docker/volumes:/source:ro
- /mnt/backup:/destination
environment:
- PUID=1000
- PGID=1000La clave aquí: monto los volúmenes de Docker como lectura (ro) en /source y el almacenamiento externo en /destination.
Accedo a la interfaz web en http://localhost:8200 y configuro el primer backup.
Configuración del backup#
Paso 1: Seleccionar origen
En “Agregar backup” → “Configurar nuevo backup”, elijo los volúmenes específicos a respaldar:
/source/mi-database/_data
/source/mi-app/config
/source/wordpress/htmlNo respaldo todo. Es innecesario y ocupa espacio. Solo lo que importa.
Paso 2: Destino y cifrado
- Destino:
file:///destination/duplicati-backups - Algoritmo: AES-256
- Contraseña: generada con
openssl rand -base64 32
Guardo la contraseña en un gestor seguro. Sin ella, nadie accede a los backups.
Paso 3: Planificación
Programo un backup diario a las 3 AM:
Horario: 03:00
Frecuencia: Diaria
Retención: Mantener versiones de los últimos 30 díasNotificaciones por email#
Aquí está el punto crítico: saber cuándo falla un backup.
En la configuración del backup, voy a “Opciones avanzadas” y añado:
--send-mail-to=miuser@gmail.com
--send-mail-from=servidor@localhost
--send-mail-subject=Duplicati Backup Report
--send-mail-body=Resultado del backup de Docker
--send-mail-level=AllPero necesito un servicio SMTP funcional. Uso ssmtp en el contenedor:
FROM duplicati/duplicati:latest
RUN apt-get update && apt-get install -y ssmtp
COPY ssmtp.conf /etc/ssmtp/ssmtp.conf
RUN chmod 600 /etc/ssmtp/ssmtp.confArchivo ssmtp.conf:
root=miuser@gmail.com
mailhub=smtp.gmail.com:587
AuthUser=miuser@gmail.com
AuthPass=mi-contraseña-app-google
UseSTARTTLS=YESGenero una contraseña específica de Google (no uso la contraseña real).
Verificación y monitoreo#
Ejecuto un backup manual para verificar:
docker logs duplicatiBusco:
Email notification sent successfully
Backup completed successfullySi algo falla, recibo un email inmediatamente. Lo he probado: funciona.
Casos reales donde esto me salvó#
La semana pasada, el disco USB de destino dejó de responder. Recibí el email a las 3:04 AM. Reemplacé el USB antes del desayuno y re-programé el backup. Sin pérdida de datos.
Antes de esto, había perdido dos años de fotos por un fallo en cascada. Nunca más.
Consideraciones finales#
- Espacio: Un backup cifrado ocupa 40-50% del original. Calcula bien.
- Velocidad: Los primeros backups son lentos (cifrado de 256-bit). Paciencia.
- Contraseñas: Guarda la del cifrado en dos lugares seguros. La necesitarás.
- Rotación: No elimines backups automáticamente. Duplicati gestiona la retención.
Duplicati no es perfecto, pero para un servidor doméstico es rock solid. Llevo 18 meses sin un fallo de backup y durmiendo mejor por las noches.