Para administradores
← Todos os tópicos

Backup e restauração

O que guardar além do banco de dados, por que a MASTER_KEY importa tanto quanto ele e como testar uma restauração.

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

  1. Do banco de dados – com um dump regular, copiado para fora do servidor.
  2. Do .env, sobretudo da MASTER_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

Versão em texto