Ajout runbook procédure de mise à jour Bifrost (capitalisation)
This commit is contained in:
@@ -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
|
||||
}'
|
||||
```
|
||||
Reference in New Issue
Block a user