Seguridad y backups
Cifrado en reposo
LibreDrive usa cifrado de sobre (envelope encryption). Cada archivo recibe una clave de datos (DEK) aleatoria; el contenido se cifra con AES-256-GCM bajo esa DEK. La propia DEK se envuelve con la clave de cifrado de la instancia (KEK), que proviene de LIBREDRIVE_ENCRYPTION_KEY. En Postgres solo se guarda la pequeña DEK envuelta: la KEK nunca toca disco, y LIBREDRIVE_ENCRYPTION_KEY es obligatoria para poder arrancar la instancia.
Genera una clave robusta antes de tu primer despliegue:
openssl rand -base64 32Guarda este valor en un lugar seguro fuera del contenedor: perderlo hace que los archivos existentes sean irrecuperables.
Rotar la clave de cifrado
La rotación vuelve a envolver la DEK de cada archivo; nunca vuelve a cifrar el contenido, así que es seguro ejecutarla contra una instancia en producción sin downtime.
-
Genera una clave nueva (
openssl rand -base64 32) y defínela comoLIBREDRIVE_ENCRYPTION_KEY_NEW, junto a laLIBREDRIVE_ENCRYPTION_KEYexistente, y reinicia el stack. -
Ejecuta la rotación:
Ventana de terminal docker compose exec libredrive libredrive-cli rotate-key -
Cuando indique
Rewrapped N file key(s)sin nada pendiente, promociona la nueva clave: ponLIBREDRIVE_ENCRYPTION_KEYcon el valor deLIBREDRIVE_ENCRYPTION_KEY_NEW, eliminaLIBREDRIVE_ENCRYPTION_KEY_NEWy reinicia.
Copias de seguridad
Define LIBREDRIVE_BACKUP_TARGET como s3 o local, y LIBREDRIVE_BACKUP_SCHEDULE como una expresión cron, para activar backups automáticos según ese horario:
LIBREDRIVE_BACKUP_TARGET=s3LIBREDRIVE_BACKUP_S3_BUCKET=libredrive-backupsLIBREDRIVE_BACKUP_SCHEDULE=0 3 * * *Un backup es un pg_dump de la base de datos más el almacén de archivos local (cuando se usa el driver local), empaquetado en un único tar.gz. Los backups programados y los manuales llaman al mismo servicio, así que no pueden desincronizarse.
Backup manual
docker compose exec libredrive libredrive-cli backup --output /data/backups/manual-$(date +%F).tar.gzRestaurar
docker compose exec libredrive libredrive-cli restore --input /data/backups/manual-2026-09-10.tar.gzRestaura siempre sobre una instancia nueva con la misma LIBREDRIVE_ENCRYPTION_KEY usada al crear el backup; restaurar con una clave distinta dejará los archivos ilegibles.
Endurecimiento de red y accesos
- Ejecuta siempre LibreDrive detrás de un proxy inverso con TLS en producción (ver instalación); el contenedor solo escucha en
127.0.0.1:8080y no termina TLS por sí mismo. - Usa una
LIBREDRIVE_SECRET_KEYlarga y aleatoria; nunca la reutilices entre entornos. - Restringe el acceso directo al contenedor
db: solo el serviciolibredrivedebería alcanzar el puerto 5432; eldocker-compose.ymlincluido no lo publica externamente por defecto. - Mantén
LIBREDRIVE_ENCRYPTION_KEYy tu archivo.envfuera del control de versiones y de cualquier backup que no esté a su vez cifrado.