Em uma instalação no seu próprio servidor, tudo o que importa está no banco de dados: configurações, instruções, fontes de conhecimento, mensagens, rascunhos e os segredos criptografados. Por isso você faz backup do banco de dados – e do arquivo .env com a MASTER_KEY.
Do que fazer backup
- Do banco de dados – com um dump regular, copiado para fora do servidor.
- Do
.env, sobretudo daMASTER_KEY– fora do servidor, em um lugar seguro. Sem ela, você não consegue ler do banco de dados as chaves de API, os acessos às caixas de e-mail nem os clientes de login; o backup seria inútil. Nós não a temos.
Um dump do banco de dados contém os e-mails dos clientes. Proteja-o como a própria caixa de e-mail.
Os dumps antes de uma atualização não são um backup
Antes de cada atualização, o draften salva um dump do banco de dados na pasta backups/ do diretório da instalação e mantém os três últimos (o número é definido por DRAFTEN_BACKUPS). Eles ficam, porém, no mesmo disco que o banco de dados – são uma rede de segurança para as atualizações, não um backup. Copie-os para fora do servidor junto com o .env, como fazem os seus outros backups.
Um dump regular do banco de dados
A partir do diretório da instalação:
docker compose exec -T db sh -c 'mariadb-dump -uroot -p"$MARIADB_ROOT_PASSWORD" --single-transaction --databases draften' | gzip > draften-$(date +%F).sql.gz
Execute-o regularmente (por exemplo, diariamente pelo cron) e guarde os dumps fora do servidor.
Restauração
Pare os workers, carregue o dump e inicie a versão que estava rodando quando o dump foi feito (nos dumps de backups/, ela está no nome do arquivo):
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
Em um servidor novo, instale primeiro o draften e coloque no .env a MASTER_KEY da época em que o dump foi feito.
Trocar a chave de criptografia
A MASTER_KEY pode ser trocada sem interrupção – na interface (Instalação → Instalação → Chave de criptografia → Trocar a chave de criptografia, requer o updater) ou com o comando:
./draften rotate-key
A nova chave é gravada primeiro no .env, os contêineres a assumem um a um e tudo o que está guardado é criptografado de novo com ela. A chave antiga fica no .env como MASTER_KEY_PREVIOUS enquanto backups/ tiver dumps de antes da troca – só ela consegue abri-los. O draften recusa uma nova troca enquanto existir um dump desses.
Depois da troca, copie o novo .env para fora do servidor na hora. A nova chave nunca chega à interface; ela está só no .env do servidor.
Atenção
- O volume
db-dataé o banco de dados em uso. Nunca remova a instalação comdocker compose down -vse não tiver um dump recente. - A pasta
data/não guarda a verdade – ali ficam só o log e os relatórios do worker. - Você sempre pode conferir na interface: o cartão Status da instalação na página Instalação mostra se a
MASTER_KEYestá definida.