Bei einer Installation auf dem eigenen Server steht alles, was zählt, in der Datenbank: Einstellungen, Anweisungen, Wissensquellen, Nachrichten, Entwürfe und die verschlüsselten Geheimnisse. Sie sichern also die Datenbank – und die Datei .env mit dem MASTER_KEY.
Was Sie sichern
- Die Datenbank – mit einer regelmäßigen Sicherung, kopiert außerhalb des Servers.
.env, vor allemMASTER_KEY– außerhalb des Servers, an einem sicheren Ort. Ohne ihn können Sie die API-Schlüssel, die Zugriffe auf Postfächer und die Anmelde-Clients aus der Datenbank nicht lesen; die Sicherung wäre nutzlos. Wir haben ihn nicht.
Eine Datenbanksicherung enthält die Post der Kunden. Schützen Sie sie wie das Postfach selbst.
Sicherungen vor einer Aktualisierung sind kein Backup
Vor jeder Aktualisierung speichert draften eine Datenbanksicherung im Ordner backups/ im Verzeichnis der Installation und behält die letzten drei (die Zahl legt DRAFTEN_BACKUPS fest). Sie liegen allerdings auf derselben Platte wie die Datenbank – sie sind ein Sicherheitsnetz für Aktualisierungen, kein Backup. Kopieren Sie sie zusammen mit .env vom Server weg, so wie Ihre anderen Backups.
Eine regelmäßige Datenbanksicherung
Im Verzeichnis der 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
Führen Sie das regelmäßig aus (etwa täglich per cron) und bewahren Sie die Sicherungen außerhalb des Servers auf.
Wiederherstellen
Halten Sie die Worker an, laden Sie die Sicherung und starten Sie die Version, die bei der Erstellung der Sicherung lief (bei Sicherungen aus backups/ steht sie im Dateinamen):
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
Auf einem neuen Server installieren Sie zuerst draften und tragen den MASTER_KEY aus der Zeit der Sicherung in .env ein.
Den Verschlüsselungsschlüssel ersetzen
MASTER_KEY lässt sich ohne Ausfall ersetzen – in der Oberfläche (Installation → Installation → Verschlüsselungsschlüssel → Verschlüsselungsschlüssel ersetzen, braucht den Updater) oder mit dem Befehl:
./draften rotate-key
Der neue Schlüssel wird zuerst in .env geschrieben, die Container übernehmen ihn nacheinander, und alles Gespeicherte wird mit ihm neu verschlüsselt. Der alte Schlüssel bleibt als MASTER_KEY_PREVIOUS in .env, solange backups/ Sicherungen von vor dem Ersetzen enthält – nur er kann sie öffnen. Solange es eine solche Sicherung gibt, lehnt draften ein weiteres Ersetzen ab.
Kopieren Sie nach dem Ersetzen die neue .env sofort vom Server weg. Der neue Schlüssel gelangt nie in die Oberfläche; er steht nur in .env auf dem Server.
Achtung
- Das Volume
db-dataist die lebende Datenbank. Entfernen Sie die Installation nie mitdocker compose down -v, wenn Sie keine frische Sicherung haben. - Im Ordner
data/liegt nicht die Wahrheit – dort sind nur das Log und die Berichte des Workers. - In der Oberfläche können Sie immer nachsehen: Die Karte Zustand der Installation auf der Seite Installation zeigt, ob
MASTER_KEYgesetzt ist.