Saltearse al contenido

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:

Ventana de terminal
openssl rand -base64 32

Guarda 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.

  1. Genera una clave nueva (openssl rand -base64 32) y defínela como LIBREDRIVE_ENCRYPTION_KEY_NEW, junto a la LIBREDRIVE_ENCRYPTION_KEY existente, y reinicia el stack.

  2. Ejecuta la rotación:

    Ventana de terminal
    docker compose exec libredrive libredrive-cli rotate-key
  3. Cuando indique Rewrapped N file key(s) sin nada pendiente, promociona la nueva clave: pon LIBREDRIVE_ENCRYPTION_KEY con el valor de LIBREDRIVE_ENCRYPTION_KEY_NEW, elimina LIBREDRIVE_ENCRYPTION_KEY_NEW y 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:

Ventana de terminal
LIBREDRIVE_BACKUP_TARGET=s3
LIBREDRIVE_BACKUP_S3_BUCKET=libredrive-backups
LIBREDRIVE_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

Ventana de terminal
docker compose exec libredrive libredrive-cli backup --output /data/backups/manual-$(date +%F).tar.gz

Restaurar

Ventana de terminal
docker compose exec libredrive libredrive-cli restore --input /data/backups/manual-2026-09-10.tar.gz

Restaura 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:8080 y no termina TLS por sí mismo.
  • Usa una LIBREDRIVE_SECRET_KEY larga y aleatoria; nunca la reutilices entre entornos.
  • Restringe el acceso directo al contenedor db: solo el servicio libredrive debería alcanzar el puerto 5432; el docker-compose.yml incluido no lo publica externamente por defecto.
  • Mantén LIBREDRIVE_ENCRYPTION_KEY y tu archivo .env fuera del control de versiones y de cualquier backup que no esté a su vez cifrado.