Files
nas-runbooks/common/bifrost-update-procedure.md
T

67 lines
2.8 KiB
Markdown

# 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
}'
```