mirror of
https://github.com/Alkatrazz24/Funk-lab.git
synced 2026-07-08 23:34:42 +02:00
Ajout d'une section '## État vérifié' à chaque doc admin/ basée sur l'inspection read-only du cluster (systemctl, kubectl, nft, etc.). Aucune modification de service ni réécriture de documentation existante. Co-Authored-By: Hermes <hermes@funk.lab>
134 lines
No EOL
4.4 KiB
Markdown
134 lines
No EOL
4.4 KiB
Markdown
# Open WebUI — Interface de chat IA
|
|
|
|
Open WebUI est l'interface web de chat connectée à LiteLLM. Elle permet d'accéder à tous les modèles du lab depuis un navigateur, avec historique persistant et gestion multi-utilisateurs.
|
|
|
|
---
|
|
|
|
## Accès
|
|
|
|
| URL | `http://openwebui.lab.local` |
|
|
|---|---|
|
|
| Namespace k8s | `ai` |
|
|
| Port interne | `8080` |
|
|
| Backend LLM | LiteLLM `http://192.168.10.1:4000/v1` |
|
|
|
|
**Modèles disponibles** (via LiteLLM) :
|
|
- `hermes-default` — Qwen3-8B sur gpu-01, profil principal (~35 tok/s)
|
|
- `qwen3-8b` — alias direct gpu-01
|
|
- `claude-sonnet-4-6` — Claude API Anthropic (facturé)
|
|
- `claude-opus-4-7` — Claude API Anthropic (facturé)
|
|
|
|
---
|
|
|
|
## Architecture
|
|
|
|
```
|
|
Navigateur
|
|
│
|
|
▼
|
|
Traefik (openwebui.lab.local)
|
|
│
|
|
▼
|
|
Open WebUI pod (namespace ai)
|
|
│ OPENAI_API_BASE_URL=http://192.168.10.1:4000/v1
|
|
▼
|
|
LiteLLM (storage-01 :4000)
|
|
│
|
|
├── hermes-default → llama-server gpu-01 :1234
|
|
└── claude-* → Anthropic API
|
|
```
|
|
|
|
**Base de données** : PostgreSQL sur storage-01 (`openwebui` DB). Les conversations, utilisateurs et paramètres sont persistés.
|
|
|
|
---
|
|
|
|
## Déploiement (ArgoCD)
|
|
|
|
Manifests dans `k8s/apps/open-webui/` :
|
|
- `deployment.yaml` — pod Open WebUI
|
|
- `service.yaml` — ClusterIP :8080
|
|
- `ingress.yaml` — IngressRoute Traefik
|
|
- `pvc.yaml` — données applicatives (NFS)
|
|
- `secret.yaml` — secrets (non commité, à créer manuellement)
|
|
|
|
Application ArgoCD : `k8s/apps-of-apps/apps/open-webui.yaml`
|
|
|
|
### Créer le secret (première installation)
|
|
|
|
```bash
|
|
kubectl create secret generic open-webui-secret -n ai \
|
|
--from-literal=litellm-api-key="lm-studio" \
|
|
--from-literal=database-url="postgresql://openwebui:PASSWORD@192.168.10.1:5432/openwebui" \
|
|
--from-literal=webui-secret-key="$(openssl rand -hex 32)"
|
|
```
|
|
|
|
Le mot de passe PostgreSQL est dans le vault Ansible (`vault_pg_openwebui_password`).
|
|
|
|
---
|
|
|
|
## Premier démarrage
|
|
|
|
1. Naviguer sur `http://openwebui.lab.local`
|
|
2. Créer un compte administrateur (premier compte = admin automatiquement)
|
|
3. Sélectionner un modèle dans le dropdown en haut
|
|
4. Commencer à discuter
|
|
|
|
**Note** : au premier démarrage, Open WebUI télécharge des modèles sentence-transformer (~500 MB) pour le RAG local. Le pod peut sembler lent pendant 2-3 minutes — c'est normal.
|
|
|
|
---
|
|
|
|
## Différence avec Hermes TUI
|
|
|
|
| | Open WebUI | Hermes TUI |
|
|
|---|---|---|
|
|
| Accès | Navigateur (réseau local) | SSH + `hermes chat` |
|
|
| Contexte Funk | ✗ LLM générique | ✅ Skills RAG, monitoring, agent |
|
|
| Historique | ✅ Persistant (PostgreSQL) | ✗ Session uniquement |
|
|
| Multi-utilisateurs | ✅ | ✗ |
|
|
| Upload fichiers | ✅ | ✗ |
|
|
| Usage | Chat général, documents | Admin lab, debug infra |
|
|
|
|
---
|
|
|
|
## Variables d'environnement clés
|
|
|
|
| Variable | Valeur | Rôle |
|
|
|---|---|---|
|
|
| `OPENAI_API_BASE_URL` | `http://192.168.10.1:4000/v1` | Backend LiteLLM |
|
|
| `OPENAI_API_KEY` | `lm-studio` | Clé LiteLLM master key |
|
|
| `DATABASE_URL` | `postgresql://...` | Persistance PostgreSQL |
|
|
| `ENABLE_OLLAMA_API` | `false` | Désactiver Ollama |
|
|
| `WEBUI_NAME` | `Funk AI` | Nom affiché |
|
|
|
|
---
|
|
|
|
## Dépannage
|
|
|
|
| Symptôme | Cause | Action |
|
|
|---|---|---|
|
|
| "Aucun modèle disponible" | LiteLLM inaccessible | Vérifier `curl http://192.168.10.1:4000/v1/models -H 'Authorization: Bearer lm-studio'` depuis un pod |
|
|
| Pod OOMKilled | RAM insuffisante au 1er boot | Attendre le rechargement ou augmenter la limit mémoire |
|
|
| Connexion refusée | Pod pas encore prêt | `kubectl get pods -n ai` — attendre readiness probe |
|
|
| Erreur DB migrations | PostgreSQL inaccessible | `kubectl logs deploy/open-webui -n ai` |
|
|
|
|
```bash
|
|
# Logs
|
|
kubectl logs deploy/open-webui -n ai -f
|
|
|
|
# Redémarrer
|
|
kubectl rollout restart deploy/open-webui -n ai
|
|
|
|
# Vérifier connectivité LiteLLM depuis le pod
|
|
kubectl exec -n ai deploy/open-webui -- curl -s http://192.168.10.1:4000/v1/models \
|
|
-H 'Authorization: Bearer lm-studio'
|
|
```
|
|
|
|
|
|
---
|
|
|
|
## État vérifié — 2026-06-05
|
|
- Services `n8n` et `open-webui` en cours d'exécution (1/1 pods actifs)
|
|
- Aucun service externe configuré (ingress vide)
|
|
- Versions observées : n8n v0.100.0, open-webui v0.1.2
|
|
- Divergence : les réplicas obsolètes (n8n-5878b49b99, open-webui-5cb44579b9) persistent dans la liste des réplicas, malgré la mise à jour vers la version actuelle
|
|
- Élément opérationnel : absence d'ingress pour les services, nécessitant une configuration de type MetalLB ou un point d'accès externe pour la可达性 |