Atualizações e cópias de segurança
Atualizar
Obtenha as imagens novas e recrie os contentores. As migrações correm no arranque.
docker compose pull && docker compose up -d
Se usar o perfil de IA local, reconstrua a imagem do Laya depois de uma atualização:
docker compose --profile ai build laya
Tarefas em segundo plano e o worker
O trabalho em segundo plano (manutenção hoje, e sincronização de correio e passagem de IA à medida que chegarem) corre dentro do mesmo contentor. A imagem executa campbooks-server all, que é a API mais o worker de tarefas. As tarefas vivem no Postgres, por isso nada se perde num reinício.
Para executar o worker em separado, acrescente um segundo serviço com a mesma imagem e o mesmo ambiente, e estas duas definições:
command: ["worker"]healthcheck: { disable: true }, porque a verificação de saúde testa a API, que um worker não serve.
Depois dê ao primeiro serviço command: ["api"]. As definições do worker são o bloco CAMPBOOKS_JOBS__* em Configuração.
O que copiar
Faça cópia destes elementos em conjunto, aproximadamente à mesma hora:
| O quê | Onde | Contém |
|---|---|---|
| Postgres | volume postgres-data (use pg_dump) | Tudo exceto os ficheiros e a chave secreta da instância: contas, chaves de início de sessão, autorizações |
| Ficheiros | volume blobs-data, ou o seu bucket | Mensagens em bruto, anexos, documentos |
| Chave secreta da instância | volume server-secrets | A chave que abre as chaves de início de sessão e as credenciais guardadas no Postgres |
Guarde também uma cópia do seu .env e dos ficheiros de segredo de cliente em deploy/secrets/. Não estão em nenhum volume.
:::warning Guarde uma cópia da chave secreta da instância
O server-init gera a chave uma só vez, no primeiro arranque. Ela protege as chaves de início de sessão e as credenciais das contas ligadas. A chave não pode ser recuperada se a perder, por isso guarde uma cópia num sítio seguro, separada das suas cópias de segurança.
Sem a chave certa, o servidor recusa-se a arrancar. Se a chave estiver mesmo perdida, pode recomeçar com uma nova:
- Apague as linhas de
identity.signing_keysno Postgres. - Remova a chave:
docker compose run --rm server-init rm /secrets/secret-key. - Execute
docker compose up -d && docker compose restart server.
Todas as pessoas voltam a iniciar sessão, e as caixas de correio ligadas mostram «precisa de nova autorização» até o seu dono as ligar de novo. O correio e os documentos já guardados não se perdem. :::
Restaure o Postgres e os ficheiros para o mesmo momento no tempo. Um ficheiro que falta no armazenamento enquanto o Postgres ainda o lista não pode ser lido. Por isso faça primeiro o dump da base de dados e depois copie os ficheiros: os ficheiros enviados entretanto são apenas extras inofensivos. Para um bucket, ative o versionamento (e mantenha as versões antigas alguns dias) em vez de copiar.
Faça cópia dos volumes locais com um contentor descartável. Para os ficheiros:
docker run --rm -v campbooks_blobs-data:/data -v "$PWD":/backup busybox:1.37.0-musl \
tar czf /backup/blobs-data.tgz -C /data .
E para a chave secreta da instância:
docker run --rm -v campbooks_server-secrets:/data -v "$PWD":/backup busybox:1.37.0-musl \
tar czf /backup/server-secrets.tgz -C /data .
O arquivo contém a própria chave, por isso guarde-o num sítio que só você possa ler.
Atualizar a partir do início de sessão com Rauthy
As versões anteriores traziam o Rauthy como fornecedor de identidade: os serviços idp, idp-init e idp-provision e o volume idp-data. O Campbooks passou a iniciar a sessão das pessoas por si, e o novo compose.yaml não tem nenhum deles.
-
Copie o novo
compose.yamlpor cima do seu e remova os três contentores antigos:docker compose up -d --remove-orphansNada se estraga se deixar os serviços antigos a correr. Apenas deixam de ser usados.
-
As contas que existiam no Rauthy não são transferidas. Essas pessoas voltam a iniciar sessão com Google, Microsoft, Zoho ou uma chave de acesso, e ficam com uma conta nova no Campbooks.
-
Passe as antigas definições de fornecedor
CAMPBOOKS_IDP_*paraCAMPBOOKS_GOOGLE__*,CAMPBOOKS_MICROSOFT__*eCAMPBOOKS_ZOHO__*. Mantenha cada segredo de cliente emdeploy/secrets/<provider>-client-secret. Veja Início de sessão. -
Adicione
${CAMPBOOKS_PUBLIC_URL}/auth/callback/<provider>como URI de redirecionamento em cada aplicação OAuth do fornecedor. -
O volume
idp-datafica no sítio. Quando tiver a certeza de que não precisa dele, apague-o:docker volume rm <project>_idp-data
Monitorização (opcional)
O Campbooks escreve registos JSON no stdout e, por omissão, não exporta nada.
docker compose logs server
As definições CAMPBOOKS_TELEMETRY__* ativam uma página Prometheus ou a exportação OTLP. Veja o .env.example.