Duplicati es una herramienta de copias de seguridad de código abierto que cifra los datos con AES-256 en el propio servidor, los divide en bloques deduplicados y los sube a almacenamiento remoto como Amazon S3, Backblaze B2 o cualquier servicio compatible con S3. En este tutorial instalarás Duplicati como servicio en Ubuntu 24.04, crearás una copia diaria de /etc, /home y /var/www hacia un bucket S3, definirás una política de retención y harás una restauración de prueba para confirmar que la copia sirve.
Requisitos previos
- Un servidor con Ubuntu 24.04 LTS, por ejemplo un VPS de CubePath, con al menos 1 GB de RAM.
- Un usuario no root con privilegios
sudo. - Un bucket en un servicio compatible con S3 y un par de claves de acceso (Access Key ID y Secret Access Key) con permiso de lectura, escritura y listado sobre ese bucket.
- Un cliente SSH en tu equipo local para abrir un túnel hacia la interfaz web.
Paso 1: Instalar Duplicati
Duplicati publica paquetes .deb en su página de descargas y en GitHub. Para un servidor sin entorno gráfico se usa la variante cli, que incluye el servidor web, el programador de tareas y las herramientas de línea de comandos, pero no el icono de bandeja.
Consulta la última versión estable en duplicati.com/download. En el momento de escribir esta guía es la 2.4.0.0. Descarga el paquete para x64 (usa arm64 si tu servidor es ARM):
cd /tmp
wget https://github.com/duplicati/duplicati/releases/download/v2.4.0.0_stable_2026-09-03/duplicati-2.4.0.0_stable_2026-09-03-linux-x64-cli.deb
Instálalo con apt para que resuelva las dependencias (OpenSSL e ICU):
sudo apt update
sudo apt install ./duplicati-2.4.0.0_stable_2026-09-03-linux-x64-cli.deb
Comprueba la versión instalada:
dpkg -s duplicati | grep Version
Version: 2.4.0.0
El paquete instala los binarios en /usr/bin (duplicati-server, duplicati-cli, duplicati-server-util...), la unidad duplicati.service y el archivo de opciones /etc/default/duplicati.
Paso 2: Arrancar el servicio
La unidad de systemd ejecuta duplicati-server como root, lo que le permite leer cualquier archivo del sistema. Actívala y arráncala:
sudo systemctl enable --now duplicati
Verifica que está activa y en qué dirección escucha:
systemctl status duplicati --no-pager
sudo ss -tlnp | grep 8200
LISTEN 0 512 127.0.0.1:8200 0.0.0.0:* users:(("duplicati-serve",pid=2143,fd=312))
Por defecto la interfaz web solo escucha en 127.0.0.1:8200. Déjalo así: no abras el puerto 8200 en el cortafuegos. Accederás a través de un túnel SSH.
Paso 3: Acceder a la interfaz web por túnel SSH
Desde tu equipo local, abre un túnel que redirija el puerto 8200 local al del servidor. Sustituye your_user y your_server_ip por tus datos:
ssh -L 8200:127.0.0.1:8200 your_user@your_server_ip
Mientras esa sesión esté abierta, la interfaz estará disponible en http://localhost:8200 en tu navegador.
Duplicati exige contraseña para la interfaz web y, si no has definido ninguna, genera una aleatoria al arrancar. Define la tuya desde el servidor (en otra terminal SSH) con la utilidad incluida:
sudo duplicati-server-util change-password
La herramienta te pedirá la nueva contraseña. Usa una robusta y guárdala en tu gestor de contraseñas. Después inicia sesión en http://localhost:8200 con ella.
Notasi la utilidad no consigue conectar con el servidor, revisa el registro con
sudo journalctl -u duplicati -n 50 --no-pager. Al arrancar sin contraseña conocida, Duplicati escribe ahí un enlace de inicio de sesión de un solo uso que puedes abrir a través del túnel para cambiar la contraseña desde Configuración.
Paso 4: Preparar el bucket de destino
Antes de crear la tarea, reúne estos datos de tu proveedor S3:
| Dato | Ejemplo |
|---|---|
| Servidor (endpoint) | s3.eu-west-1.amazonaws.com o el endpoint de tu proveedor |
| Bucket | your_bucket |
| Carpeta dentro del bucket | duplicati/web01 |
| Región | eu-west-1 |
| Access Key ID / Secret | las claves creadas para Duplicati |
Crea unas claves exclusivas para este servidor con permisos limitados a ese bucket. Si el servidor se ve comprometido, podrás revocarlas sin afectar a otros sistemas.
Paso 5: Crear la tarea de copia de seguridad
En la interfaz web pulsa Añadir copia de seguridad y elige Configurar una nueva copia de seguridad. El asistente tiene cinco pantallas.
General
- Nombre: por ejemplo
web01-diaria. - Cifrado:
AES-256 encryption, built in. - Frase de contraseña: genera una larga, por ejemplo con
openssl rand -base64 32en el servidor.
Advertenciasin la frase de contraseña no hay forma de recuperar los datos. Guárdala fuera del servidor (gestor de contraseñas o caja fuerte) antes de continuar.
Destino
- Tipo de almacenamiento:
S3 compatible. - Rellena servidor, bucket, región, carpeta y las claves de acceso del paso anterior.
- Pulsa Probar conexión. Debe responder que la conexión funciona. Si la carpeta no existe, Duplicati ofrecerá crearla.
Datos de origen
Selecciona las rutas que quieres proteger, por ejemplo:
/etc//home//var/www/
En Filtros añade exclusiones para lo que no aporta nada al restaurar, como */.cache/ o */node_modules/. No incluyas /proc, /sys, /dev ni /run: son sistemas de archivos virtuales.
Programación
Activa Ejecutar automáticamente y elige una hora de poco tráfico, por ejemplo cada día a las 03:00. El programador forma parte de duplicati-server, así que no necesitas cron.
Opciones
- Tamaño del volumen remoto: deja el valor por defecto (50 MB) salvo que tengas un motivo para cambiarlo.
- Retención de copias: elige Retención de copias inteligente, o Personalizada con un valor como
7D:1D,4W:1W,12M:1M. Esa cadena significa: una versión diaria durante 7 días, una semanal durante 4 semanas y una mensual durante 12 meses. Las versiones que quedan fuera se borran del bucket automáticamente tras cada copia.
Guarda la tarea y pulsa Ejecutar ahora para lanzar la primera copia completa. Las siguientes serán incrementales: solo se suben los bloques que hayan cambiado.
Paso 6: Verificar la copia
Cuando termine, la página de inicio mostrará la fecha de la última copia correcta, el número de versiones y el tamaño en destino. Revisa también el registro del servicio por si hubo avisos:
sudo journalctl -u duplicati --since "1 hour ago" --no-pager | tail -n 20
Duplicati puede descargar una muestra de volúmenes y comprobar sus hashes. Desde la tarea, abre el menú y usa Verificar archivos. Para hacerlo desde la terminal, exporta la tarea en Exportar > Como línea de comandos: obtendrás la URL de almacenamiento con todas las opciones. Con ella puedes ejecutar una verificación completa:
sudo duplicati-cli test "s3://your_bucket/duplicati/web01?..." all --passphrase="your_passphrase"
Sustituye la URL por la que te dio la exportación. Una verificación sin errores indica que los volúmenes remotos están completos y se pueden descifrar.
Consejoel comando exportado contiene las claves S3 y la frase de contraseña. No lo guardes en archivos legibles por otros usuarios ni en el historial de la shell; puedes anteponer un espacio al comando si
HISTCONTROLincluyeignorespace, que es el valor por defecto en Ubuntu.
Paso 7: Hacer una restauración de prueba
Una copia que nunca se ha restaurado no está comprobada. Restaura /etc/ssh en una carpeta temporal y compárala con el original.
- En la interfaz, entra en Restaurar y elige la tarea
web01-diaria. - Selecciona la versión más reciente y marca la carpeta
/etc/ssh/. - En Restaurar en, elige Elegir ubicación e indica
/tmp/restore-test. - Marca Restaurar permisos de lectura y escritura y pulsa Restaurar.
Compara el resultado con el original:
sudo diff -r /etc/ssh /tmp/restore-test/ssh && echo "Restauración idéntica"
Restauración idéntica
Borra la carpeta de prueba al terminar:
sudo rm -rf /tmp/restore-test
Guarda también una copia de la configuración de la tarea (Exportar > A archivo, con cifrado). Si pierdes el servidor, podrás importarla en una instalación nueva de Duplicati y restaurar directamente desde el bucket.
Solución de problemas
La interfaz responde con un error de nombre de host no permitido. Duplicati solo acepta peticiones dirigidas a localhost o a la IP de escucha. Si accedes por el túnel SSH usando http://localhost:8200 no deberías verlo. Si necesitas otro nombre, añádelo en /etc/default/duplicati con DAEMON_OPTS="--webservice-allowed-hostnames=your_hostname" y reinicia con sudo systemctl restart duplicati.
El servicio no arranca y el registro menciona ICU. Duplicati necesita la biblioteca ICU del sistema. En Ubuntu 24.04 instálala con sudo apt install libicu74 y reinicia el servicio.
La copia falla con AccessDenied o 403. Las claves no tienen permiso de listado o escritura sobre el bucket o la carpeta. Revisa la política asociada a las claves y vuelve a pulsar Probar conexión en la pantalla de destino.
Bases de datos en ejecución. Duplicati copia archivos; los ficheros de datos de MySQL o PostgreSQL en uso pueden quedar inconsistentes. Programa un volcado (mysqldump, pg_dump) antes de la hora de la copia e incluye el directorio de volcados en los datos de origen.
Conclusión
Tienes Duplicati funcionando como servicio en Ubuntu 24.04, con copias diarias cifradas en el servidor antes de salir hacia S3, una política de retención que limpia las versiones antiguas y una restauración comprobada. Como siguientes pasos, configura notificaciones por correo en Configuración > Opciones predeterminadas para enterarte de los fallos, programa una restauración de prueba periódica y añade una segunda tarea hacia otro proveedor si quieres cumplir la regla 3-2-1.
