Almacenamiento de ficheros¶
Didacta guarda ficheros — portadas de curso, certificados PDF, paquetes SCORM, evidencias Fundae, logos — en un storage conmutables por driver: disco local (por defecto) o cualquier proveedor S3-compatible.
Driver local (por defecto)¶
Los ficheros van al volumen de datos, bajo STORAGE_ROOT (/app/data/storage en la imagen oficial).
El volumen de datos guarda algo más que ficheros
En STORAGE_ROOT vive también la clave de cifrado autogenerada (.didacta-secret-key) que protege los secretos por tenant (SSO, SMTP, Stripe, Zoom…). Aunque uses S3 para los ficheros, mantén el volumen montado y respaldado, o fija la clave con TENANT_SETTINGS_ENC_KEY.
Driver S3¶
Configura las cuatro variables y el driver:
STORAGE_DRIVER=s3
S3_ENDPOINT=https://s3.eu-central-1.amazonaws.com # o tu MinIO/Hetzner/otro
S3_BUCKET=didacta
S3_ACCESS_KEY=...
S3_SECRET_KEY=...
# Opcionales:
S3_REGION=us-east-1
S3_FORCE_PATH_STYLE=true # necesario para MinIO
S3_PRESIGNED_TTL_SECONDS=... # TTL de las URLs prefirmadas
Comportamiento del selector STORAGE_DRIVER:
local— fuerza disco.s3— fuerza S3 y falla al arrancar si falta alguna de las 4 variables (mejor un error ruidoso que subir ficheros a un limbo).- (sin definir) — intenta S3 y cae a disco local si la configuración está incompleta.
MinIO para pruebas¶
El compose oficial trae MinIO bajo el profile s3:
docker compose -f docker-compose.alpha.yml --profile s3 up -d
# API S3: http://localhost:9000
# Consola: http://localhost:9001 (didacta / didacta_dev)
El job minio-init crea el bucket didacta-dev automáticamente. Después, descomenta el bloque S3_* del servicio didacta en el compose.
Copias de seguridad¶
- Driver local: respalda el volumen
didacta_datacompleto (ficheros + clave de cifrado). - Driver S3: el proveedor se ocupa de la durabilidad de los ficheros, pero la clave de cifrado sigue en el volumen local — inclúyelo igualmente. Ver Copias de seguridad.