In un’installazione sul tuo server, tutto ciò che conta sta nel database: impostazioni, istruzioni, fonti di conoscenza, messaggi, bozze e i segreti cifrati. Quindi fai il backup del database – e del file .env con la MASTER_KEY.
Di cosa fare il backup
- Il database – con un dump regolare, copiato fuori dal server.
.env, soprattutto laMASTER_KEY– fuori dal server, in un posto sicuro. Senza di essa non puoi leggere dal database le chiavi API, l’accesso alle caselle né i client di accesso; il backup sarebbe inutile. Noi non la abbiamo.
Un dump del database contiene la posta dei clienti. Proteggilo come la casella stessa.
I dump prima di un aggiornamento non sono un backup
Prima di ogni aggiornamento, draften salva un dump del database nella cartella backups/ della cartella dell’installazione e tiene gli ultimi tre (il numero lo imposta DRAFTEN_BACKUPS). Però stanno sullo stesso disco del database – sono una rete di sicurezza per gli aggiornamenti, non un backup. Copiali fuori dal server insieme a .env, come gli altri tuoi backup.
Un dump regolare del database
Dalla cartella dell’installazione:
docker compose exec -T db sh -c 'mariadb-dump -uroot -p"$MARIADB_ROOT_PASSWORD" --single-transaction --databases draften' | gzip > draften-$(date +%F).sql.gz
Eseguilo regolarmente (per esempio ogni giorno da cron) e tieni i dump fuori dal server.
Ripristino
Ferma i worker, carica il dump e avvia la versione che era in esecuzione quando il dump è stato creato (per i dump da backups/ è nel nome del file):
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
Su un nuovo server, installa prima draften e metti in .env la MASTER_KEY del momento in cui è stato creato il dump.
Sostituire la chiave di cifratura
La MASTER_KEY si può sostituire senza interruzioni – nell’interfaccia (Installazione → Installazione → Chiave di cifratura → Sostituisci la chiave di cifratura, richiede l’updater), oppure con il comando:
./draften rotate-key
La nuova chiave viene prima scritta in .env, i container la prendono uno alla volta e tutto ciò che è salvato viene cifrato di nuovo con essa. La vecchia chiave resta in .env come MASTER_KEY_PREVIOUS finché in backups/ ci sono dump precedenti alla sostituzione – solo lei li può aprire. draften rifiuta un’altra sostituzione finché esiste un dump del genere.
Dopo la sostituzione, copia subito il nuovo .env fuori dal server. La nuova chiave non arriva mai nell’interfaccia; è solo in .env sul server.
Attenzione
- Il volume
db-dataè il database attivo. Non rimuovere mai l’installazione condocker compose down -vse non hai un dump recente. - La cartella
data/non contiene i dati veri e propri – lì ci sono solo il log e i report del worker. - Nell’interfaccia puoi sempre controllare: il riquadro Stato dell’installazione nella pagina Installazione mostra se la
MASTER_KEYè impostata.