Pour les administrateurs
← Tous les sujets

Sauvegarde et restauration

Ce qu’il faut sauvegarder en plus de la base de données, pourquoi MASTER_KEY compte tout autant, et comment tester une restauration.

Dans une installation sur votre propre serveur, tout ce qui compte se trouve dans la base de données : paramètres, consignes, sources de connaissances, messages, brouillons et secrets chiffrés. Vous sauvegardez donc la base de données – ainsi que le fichier .env avec la MASTER_KEY.

Ce qu’il faut sauvegarder

  1. La base de données – par un dump régulier, copié hors du serveur.
  2. .env, et surtout MASTER_KEY – hors du serveur, en lieu sûr. Sans elle, vous ne pouvez pas lire dans la base de données les clés API, les accès aux boîtes mail ni les clients de connexion ; la sauvegarde ne servirait à rien. Nous ne l’avons pas.

Un dump de la base de données contient les e-mails des clients. Protégez-le comme la boîte mail elle-même.

Les dumps avant une mise à jour ne sont pas une sauvegarde

Avant chaque mise à jour, draften enregistre un dump de la base de données dans le dossier backups/ du répertoire d’installation et conserve les trois derniers (le nombre est fixé par DRAFTEN_BACKUPS). Ils se trouvent toutefois sur le même disque que la base de données – c’est un filet de sécurité pour les mises à jour, pas une sauvegarde. Copiez-les hors du serveur avec .env, comme vos autres sauvegardes.

Un dump régulier de la base de données

Depuis le répertoire d’installation :

docker compose exec -T db sh -c 'mariadb-dump -uroot -p"$MARIADB_ROOT_PASSWORD" --single-transaction --databases draften' | gzip > draften-$(date +%F).sql.gz

Exécutez-le régulièrement (par exemple chaque jour depuis cron) et conservez les dumps hors du serveur.

Restauration

Arrêtez les workers, chargez le dump et démarrez la version qui tournait au moment du dump (pour les dumps de backups/, elle figure dans le nom du fichier) :

docker compose stop worker
gunzip -c <dump>.sql.gz | docker compose exec -T db sh -c 'mariadb -uroot -p"$MARIADB_ROOT_PASSWORD"'
./draften update <version> --no-backup

Sur un nouveau serveur, installez d’abord draften et placez dans .env la MASTER_KEY en vigueur au moment du dump.

Remplacer la clé de chiffrement

La MASTER_KEY peut être remplacée sans interruption de service – dans l’interface (Installation → Installation → Clé de chiffrement → Remplacer la clé de chiffrement, nécessite l’updater), ou avec la commande :

./draften rotate-key

La nouvelle clé est d’abord inscrite dans .env, les conteneurs la prennent l’un après l’autre et tout ce qui est stocké est chiffré à nouveau avec elle. L’ancienne clé reste dans .env sous le nom MASTER_KEY_PREVIOUS tant que backups/ contient des dumps antérieurs au remplacement – elle seule peut les ouvrir. draften refuse un nouveau remplacement tant qu’un tel dump existe.

Après le remplacement, copiez immédiatement le nouveau .env hors du serveur. La nouvelle clé n’apparaît jamais dans l’interface ; elle se trouve uniquement dans .env sur le serveur.

Attention

Version texte