From f87528a1ec613111fa8cfe84bd2f86e600d70c2a Mon Sep 17 00:00:00 2001 From: bolbol Date: Fri, 21 Aug 2026 16:59:25 +0100 Subject: [PATCH] =?UTF-8?q?Ajout=20runbook=20proc=C3=A9dure=20de=20mise=20?= =?UTF-8?q?=C3=A0=20jour=20Bifrost=20(capitalisation)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/bifrost-update-procedure.md | 66 ++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 common/bifrost-update-procedure.md diff --git a/common/bifrost-update-procedure.md b/common/bifrost-update-procedure.md new file mode 100644 index 0000000..81c8816 --- /dev/null +++ b/common/bifrost-update-procedure.md @@ -0,0 +1,66 @@ +# Procédure de Mise à Jour de Bifrost (Gateway LLM) + +## Contexte et Emplacement +- **Emplacement** : `/volume1/docker/bifrost/` +- **Compose** : `/volume1/docker/bifrost/docker-compose.yml` +- **Port** : `3085` (interne n8n, non exposé WAN direct) +- **Réseau** : `n8n` + +--- + +## Précautions Critiques et Pièges Connus + +1. **Pin Explicite de Version Obligatoire** : + Ne jamais laisser `image: maximhq/bifrost` sans tag (ce qui équivaut à un `:latest` implicite et provoque des dérives silencieuses). Toujours épingler la version cible exacte, ex. : `image: maximhq/bifrost:v1.6.11`. + +2. **Sauvegarde Double Préalable** : + Dans `/volume1/docker/bifrost/data/`, il existe deux fichiers de configuration essentiels : + - `config.db` (base SQLite contenant la gouvernance, les virtual keys, les budgets et le mapping providers) + - `config.json` (configuration des providers et clés API amont) + Toujours sauvegarder les deux fichiers avec horodatage avant toute intervention : + ```bash + cd /volume1/docker/bifrost/data + cp config.db "config.db.bak-$(date +%Y%m%d-%H%M%S)" + cp config.json "config.json.bak-$(date +%Y%m%d-%H%M%S)" + ``` + +3. **Mécanisme de Rechargement des Clés Provider (Governance)** : + Au redémarrage d'un conteneur recréé, les virtual keys utilisent les autorisations enregistrées dans la table `governance_virtual_key_provider_configs` (`allow_all_keys = 1`). + Si après un restart un appel renvoie `provider not found`, vérifier et réactiver `allow_all_keys` dans `config.db` : + ```sql + UPDATE governance_virtual_key_provider_configs SET allow_all_keys = 1; + ``` + +4. **Taille de `logs.db`** : + Le fichier `/volume1/docker/bifrost/data/logs.db` enregistre l'historique complet des requêtes et tokens. Il peut atteindre plusieurs dizaines de Go (~98 Go relevés en août 2026). Ne pas tronquer sans validation explicite. + +--- + +## Procédure Standard de Mise à Jour + +```bash +# 1. Sauvegardes +cd /volume1/docker/bifrost/data +TIMESTAMP=$(date +%Y%m%d-%H%M%S) +cp config.db "config.db.bak-$TIMESTAMP" +cp config.json "config.json.bak-$TIMESTAMP" + +# 2. Modifier le tag dans docker-compose.yml +# image: maximhq/bifrost:vX.Y.Z + +# 3. Pull et Recréation +cd /volume1/docker/bifrost +docker compose pull +docker compose up -d --force-recreate + +# 4. Vérifications +curl -s http://192.168.100.33:3085/health # doit renvoyer {"components":{"db_pings":"ok"},"status":"ok"} +curl -s http://192.168.100.33:3085/api/version # doit renvoyer la nouvelle version + +# 5. Test réel de complétion avec une Virtual Key valide +curl -s http://192.168.100.33:3085/v1/chat/completions -H "Authorization: Bearer $BIFROST_VK" -H "Content-Type: application/json" -d '{ + "model": "deepseek-v4-flash", + "messages": [{"role": "user", "content": "ping"}], + "max_tokens": 5 + }' +```