> ## Documentation Index
> Fetch the complete documentation index at: https://docs.casebender.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Atualizando o CaseBender

> Atualize sua implantação do CaseBender para a versão mais recente com segurança, sem perder dados, licenças ou credenciais.

## Visão geral

O CaseBender é distribuído como um conjunto de imagens de contêiner versionadas.
Atualizar significa baixar as imagens mais recentes e recriar os contêineres.
Seus dados, a licença e a configuração residem em **volumes Docker nomeados** e no
seu arquivo **`.env`** — ambos são preservados durante as atualizações, portanto
uma atualização nunca afeta seus casos, usuários, credenciais ou licença, desde
que você os mantenha.

<Note>
  As migrações de banco de dados e o seeding de dados padrão são executados
  automaticamente na inicialização após cada atualização. Você não precisa executar
  nenhum comando de migração manualmente.
</Note>

## O que é preservado nas atualizações

| O quê                                   | Onde reside                | Preservado por             |
| --------------------------------------- | -------------------------- | -------------------------- |
| Casos, alertas, usuários, configurações | PostgreSQL                 | volume `pgdata`            |
| Chave secreta da licença + blob         | `/app/apps/web/app/secret` | volume `casebender_secret` |
| Arquivos enviados / anexos              | MinIO                      | volume `miniodata`         |
| Estado de fila / cache                  | Redis                      | volume `redis_data`        |
| Configuração de ambiente                | `.env`                     | seu arquivo `.env`         |

<Warning>
  Nunca execute `docker compose down -v` em um sistema de produção. A opção `-v`
  apaga todos os volumes nomeados — seu banco de dados, licença e arquivos. Sem
  esses volumes, a próxima inicialização cria um banco de dados novo, o que
  redefine a senha do administrador para o padrão e regenera a licença.
</Warning>

## Procedimento de atualização (Docker Compose)

<Steps>
  <Step title="Faça backup do banco de dados e do .env">
    ```bash theme={null}
    # Backup do PostgreSQL
    docker compose exec -T db pg_dump -U superadmin casebender > casebender-backup-$(date +%F).sql

    # Mantenha uma cópia da sua configuração
    cp .env .env.backup
    ```
  </Step>

  <Step title="Baixe as imagens mais recentes">
    ```bash theme={null}
    docker compose pull
    ```
  </Step>

  <Step title="Recrie os contêineres">
    ```bash theme={null}
    docker compose up -d
    ```

    O Compose recria apenas os serviços cuja imagem mudou e mantém seus volumes.
  </Step>

  <Step title="Acompanhe os logs">
    ```bash theme={null}
    docker compose logs -f app
    ```

    As migrações e o seeding são executados na inicialização — aguarde a aplicação
    reportar que está saudável (healthy).
  </Step>
</Steps>

## Verificação após a atualização

* Faça login e confirme que seus casos, alertas e usuários existentes estão presentes.
* Confirme que seu login ainda funciona (sua senha de administrador não muda).
* Verifique se o worker está processando os jobs:

```bash theme={null}
docker compose logs worker | tail
```

## Rollback

Se algo der errado, fixe a tag da imagem anterior e restaure seu backup:

```bash theme={null}
# Fixe a versão conhecida como estável no docker-compose.yml, ex.:
#   image: casebender/casebender:vX.Y.Z
docker compose pull
docker compose up -d

# Se necessário, restaure o backup do banco de dados
cat casebender-backup-YYYY-MM-DD.sql | docker compose exec -T db psql -U superadmin casebender
```

<Note>
  Sempre atualize primeiro um ambiente de staging e faça um backup recente do banco
  de dados imediatamente antes de atualizar a produção.
</Note>

## Erros comuns de atualização

Os dois problemas mais comuns vêm da perda de estado:

* **Alterar o nome do projeto ou o diretório do Compose.** O Docker deriva os nomes
  dos volumes a partir do projeto. Renomear a pasta ou usar um nome de projeto `-p`
  diferente faz o Compose apontar para volumes *novos e vazios*. Sempre atualize a
  partir do mesmo diretório/projeto para reutilizar seus volumes existentes.
* **`LICENSE_SECRET_KEY` ausente e sem o volume `casebender_secret`.** Em
  implantações antigas sem o volume de segredo persistente, defina
  `LICENSE_SECRET_KEY` no `.env` (ou adicione o volume) para que a licença
  sobreviva. As implantações atuais a preservam automaticamente.

## Instalador Desktop

Se você fez a implantação com o Instalador Desktop, use o fluxo de atualização
integrado do aplicativo — ele baixa as imagens mais recentes e recria os serviços
preservando seu diretório de dados, o `.env` e a chave de licença.

## Google Cloud Run

As atualizações no Cloud Run implantam uma nova revisão. Como o Cloud Run tem um
sistema de arquivos efêmero, o segredo da licença deve ser fornecido via **Secret
Manager** como `LICENSE_SECRET_KEY` para que persista entre revisões. Reimplante
usando sua instância do Cloud SQL e os segredos existentes:

```bash theme={null}
gcloud run deploy casebender-web --image <nova-imagem> --region <região>
```

As migrações são executadas automaticamente na nova revisão.
