Mises à jour et sauvegardes
Mettre à jour
Téléchargez les nouvelles images et recréez les conteneurs. Les migrations s'exécutent au démarrage.
docker compose pull && docker compose up -d
Si vous utilisez le profil d'IA locale, reconstruisez l'image Laya après une mise à jour :
docker compose --profile ai build laya
Tâches d'arrière-plan et worker
Le travail d'arrière-plan (la maintenance aujourd'hui, puis la synchronisation du courrier et le passage de l'IA à mesure qu'ils arrivent) s'exécute dans le même conteneur. L'image exécute campbooks-server all, c'est-à-dire l'API plus le worker de tâches. Les tâches vivent dans Postgres, donc rien n'est perdu au redémarrage.
Pour exécuter le worker séparément, ajoutez un second service avec la même image et le même environnement, et ces deux réglages :
command: ["worker"]healthcheck: { disable: true }, car le contrôle de santé sonde l'API, qu'un worker ne sert pas.
Donnez ensuite command: ["api"] au premier service. Les réglages du worker forment le bloc CAMPBOOKS_JOBS__* dans Configuration.
Quoi sauvegarder
Sauvegardez ces éléments ensemble, à peu près au même moment :
| Quoi | Où | Contient |
|---|---|---|
| Postgres | volume postgres-data (utilisez pg_dump) | Tout sauf les fichiers et la clé secrète de l'instance : comptes, clés de connexion, autorisations |
| Fichiers | volume blobs-data, ou votre bucket | Messages bruts, pièces jointes, documents |
| Clé secrète de l'instance | volume server-secrets | La clé qui ouvre les clés de connexion et les identifiants stockés dans Postgres |
Gardez aussi une copie de votre .env et des fichiers de secret client de deploy/secrets/. Ils ne sont dans aucun volume.
:::warning Gardez une copie de la clé secrète de l'instance
server-init génère la clé une seule fois, au premier démarrage. Elle protège les clés de connexion et les identifiants des comptes connectés. La clé est irrécupérable si vous la perdez : gardez-en une copie en lieu sûr, à part de vos sauvegardes.
Sans la bonne clé, le serveur refuse de démarrer. Si la clé est vraiment perdue, vous pouvez repartir avec une nouvelle :
- Supprimez les lignes de
identity.signing_keysdans Postgres. - Retirez la clé :
docker compose run --rm server-init rm /secrets/secret-key. - Lancez
docker compose up -d && docker compose restart server.
Tout le monde se reconnecte, et les boîtes mail connectées affichent « autorisation à renouveler » jusqu'à ce que leur propriétaire les reconnecte. Le courrier et les documents déjà stockés ne sont pas perdus. :::
Restaurez Postgres et les fichiers au même instant. Un fichier absent du stockage alors que Postgres le liste encore ne peut pas être lu. Faites donc d'abord le dump de la base, puis copiez les fichiers : les fichiers ajoutés entre-temps ne sont que des surplus sans danger. Pour un bucket, activez le versionnement (et gardez les anciennes versions quelques jours) au lieu de copier.
Sauvegardez les volumes locaux avec un conteneur jetable. Pour les fichiers :
docker run --rm -v campbooks_blobs-data:/data -v "$PWD":/backup busybox:1.37.0-musl \
tar czf /backup/blobs-data.tgz -C /data .
Et pour la clé secrète de l'instance :
docker run --rm -v campbooks_server-secrets:/data -v "$PWD":/backup busybox:1.37.0-musl \
tar czf /backup/server-secrets.tgz -C /data .
L'archive contient la clé elle-même : rangez-la là où vous seul pouvez la lire.
Passer de la connexion Rauthy à la connexion intégrée
Les versions précédentes livraient Rauthy comme fournisseur d'identité : les services idp, idp-init et idp-provision et le volume idp-data. Campbooks connecte désormais les gens lui-même, et le nouveau compose.yaml n'en contient aucun.
-
Copiez le nouveau
compose.yamlpar-dessus le vôtre, puis supprimez les trois anciens conteneurs :docker compose up -d --remove-orphansRien ne casse si vous laissez tourner les anciens services. Ils ne servent simplement plus.
-
Les comptes qui existaient dans Rauthy ne sont pas repris. Ces personnes se reconnectent avec Google, Microsoft, Zoho ou une clé d'accès, et obtiennent un nouveau compte Campbooks.
-
Reportez les anciens réglages de fournisseur
CAMPBOOKS_IDP_*versCAMPBOOKS_GOOGLE__*,CAMPBOOKS_MICROSOFT__*etCAMPBOOKS_ZOHO__*. Gardez chaque secret client dansdeploy/secrets/<provider>-client-secret. Voir Connexion. -
Ajoutez
${CAMPBOOKS_PUBLIC_URL}/auth/callback/<provider>comme URI de redirection dans l'application OAuth de chaque fournisseur. -
Le volume
idp-datareste en place. Quand vous êtes sûr de ne plus en avoir besoin, supprimez-le :docker volume rm <project>_idp-data
Supervision (facultatif)
Campbooks écrit des journaux JSON sur la sortie standard et n'exporte rien par défaut.
docker compose logs server
Les réglages CAMPBOOKS_TELEMETRY__* activent une page Prometheus ou un export OTLP. Voir .env.example.