Règle simple : le code de Dailies Delivery et les données utilisateur sont séparés.
.dailies-delivery/ ├── app/ code de l'application ├── master/ Federation Master, si utilisé ├── config/ configuration locale ├── data/ ← BASE DE DONNÉES │ ├── videohub.db │ └── storage/federation/ ├── media/ espace technique réservé au stockage média local ├── logs/ journaux ├── backups/ sauvegardes └── runtime/ environnement Python
La base principale est .dailies-delivery/data/videohub.db. L'identité cryptographique du nœud de Fédération est sous data/storage/federation/. Elle n'est jamais stockée dans le dépôt ou dans le ZIP de distribution.
Les projets gardent leur chemin physique propre, enregistré dans la base. Le dossier media/ de l'installation ne déplace pas automatiquement les médias existants et ne doit pas être considéré comme le dossier unique des projets. Si un dossier est publié comme Bibliothèque fédérée, il reste à son emplacement choisi et n’est pas automatiquement inclus dans les sauvegardes de projet : ajoutez-le explicitement à votre stratégie de sauvegarde.
dailies_data → /data dailies_media → /media federation_data → /data dailies_keys → /keys (clé de chiffrement)
Les volumes Docker sont persistants. Conservez impérativement dailies_keys avec les données. Aucune base utilisateur n'est embarquée dans l'image.
Les scripts update et repair ne suppriment pas data/, media/, logs/ ou backups/. Une ancienne base placée dans app/videohub.db est migrée vers data/videohub.db si aucune base cible n'existe.
La base SQLite reste au format SQLite, mais les secrets de configuration, le secret TOTP et les jetons de session y sont chiffrés avec AES-256-GCM. Les exports et sauvegardes automatiques de la base portent l’extension .db.enc. Les copies de médias créées par la sauvegarde sont chiffrées fichier par fichier en .ddenc. Sur macOS et Linux, Dailies Delivery restreint aussi les droits des données et des clés ; sous Windows, vérifiez les ACL du compte du serveur.
La clé est créée au premier démarrage dans runtime/dailies-encryption.key (installation native), ou dans le volume Docker dailies_keys. Elle peut être fournie par la variable DAILIES_ENCRYPTION_KEY (64 caractères hexadécimaux). Copiez cette clé dans un gestionnaire de secrets ou un support sécurisé séparé des sauvegardes. Sans la clé correspondante, les secrets et sauvegardes chiffrés sont irrécupérables. Ne supprimez pas le volume Docker de clés lors d’une réinstallation.
Pour restaurer des fichiers, utilisez install/decrypt-backup.py avec --key et --output. Le script déchiffre dans un nouveau dossier et vérifie l’intégrité avant d’écrire le résultat. Les anciennes sauvegardes en clair sont converties en .db.enc à la prochaine sauvegarde de base ; les anciennes copies de médias sont converties lors de la prochaine sauvegarde du projet concerné.
data/videohub.db et le fichier de clé conservé séparémentdata/storage/federation/backups/ (incluant .db.enc)