# Atualizar pela linha de comando

Quando o updater está rodando na instalação, atualizar pela interface é o mais
prático – [Atualizar com o updater](/pt/admin/updating-with-the-updater)
descreve isso. Aqui está o mesmo procedimento pela linha de comando; ele sempre
funciona, com o updater ou sem ele. Todos os comandos rodam no diretório da
instalação.

## Atualizar para uma nova versão

Cada release é um novo pacote. Ou você o passa diretamente ao comando:

```
./draften update --bundle /path/to/draften-<new version>.tar
```

ou o copia para a pasta `updates/` e executa:

```
./draften update <new version>
```

A atualização **não causa interrupção** e segue passo a passo:

1. confere o pacote com as chaves da release instalada – antes de usar
   qualquer coisa dele,
2. salva um dump do banco de dados em `backups/` (os três últimos backups de
   antes de uma atualização são mantidos, o número é definido por
   `DRAFTEN_BACKUPS` no `.env`; os backups diários são contados separadamente,
   veja [Backup e restauração](/pt/admin/backup-and-restore)),
3. executa as migrações do banco de dados,
4. substitui os workers,
5. inicia a nova versão da web ao lado da que está atendendo e muda para ela
   assim que estiver saudável.

Se a nova versão não ficar saudável, nada é trocado e a anterior continua
atendendo.

Um pacote também pode ser conferido sem ser instalado:

```
./draften check draften-<new version>.tar
```

## Depois de atualizar

```
./draften status
```

mostra qual cor da web está atendendo, a versão e a saúde das duas cores e dos
workers, o status do HTTPS e os dumps do banco de dados. Na página **Operação**
os workers dão sinal e o veredito é “a capacidade é suficiente”. O que a
release mudou está no arquivo `NOTES.md`.

## Voltar para a versão anterior

A versão que atendia antes da atualização continua rodando, sem tráfego. Você
muda para ela na hora:

```
./draften rollback
```

Isso funciona porque o banco de dados continua legível também para a versão
anterior.

## Voltar para uma versão ainda mais antiga

Isso só é possível restaurando um dump do banco de dados. Cada dump em
`backups/` traz no nome a versão que estava rodando quando ele foi feito
(`<time>-<version>.sql.gz` antes de uma atualização,
`<time>-<version>.backup.sql.gz` diário e sob demanda):

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

Tudo o que aconteceu no draften depois que o dump foi feito se perde.

!> Um dump de antes da troca da chave de criptografia só abre com a chave
anterior, `MASTER_KEY_PREVIOUS` no `.env`. Veja [Backup e restauração](/pt/admin/backup-and-restore).

## Uma máquina sem internet

O updater baixa as novas releases com a chave da licença. Uma máquina sem
internet não baixa nada: copie o pacote para `updates/` e atualize com
`./draften update <version>` – ou o updater o oferece a você a partir dali, na
interface.

## O que não muda sozinho

- **As configurações, as instruções e as fontes dos assistentes** estão no
  banco de dados, e uma atualização não mexe nelas.
- **O client secret de um registro no Entra** expira conforme o prazo para o
  qual você o emitiu; renove-o na interface (Organização → Integrações → Novo
  segredo), não atualizando.
- **O certificado HTTPS** você mesmo renova: `./draften certificate new.pem new.key`.
