- Structure complète du projet - Docker compose de production - Documentation organisée par thèmes - Guides d'installation et configuration - Section dépannage détaillée - Journal historique
186 lines
6.4 KiB
Markdown
186 lines
6.4 KiB
Markdown
# 🏗️ Architecture Infrastructure
|
|
|
|
## Vue d'ensemble
|
|
|
|
Effi fonctionne sur une architecture **multi-machines** avec une séparation claire entre le serveur principal (services Docker) et la station de travail puissante (calcul GPU).
|
|
|
|
---
|
|
|
|
## Machines
|
|
|
|
### effi-server (192.168.1.27)
|
|
|
|
**Rôle** : Serveur Docker principal, héberge tous les services de l'interface et de la logique
|
|
|
|
| Caractéristique | Valeur |
|
|
|-----------------|--------|
|
|
| **OS** | Ubuntu Server 22.04 LTS |
|
|
| **CPU** | Intel J5040 (4 cœurs) |
|
|
| **RAM** | ~7.6 GB |
|
|
| **Stockage** | SSD |
|
|
| **GPU** | Aucun (tout est fait en CPU) |
|
|
|
|
**Services hébergés :**
|
|
- Open WebUI (interface utilisateur)
|
|
- Qdrant (base vectorielle)
|
|
- CouchDB (synchronisation Obsidian)
|
|
- n8n (automatisation)
|
|
- mcpo (proxy MCP)
|
|
- wol-proxy (Wake-on-LAN)
|
|
- pipelines (middleware mémoire)
|
|
- Watchtower (mises à jour auto)
|
|
- Obsidian Server (interface web)
|
|
|
|
---
|
|
|
|
### folzo-Corp (192.168.1.11)
|
|
|
|
**Rôle** : Station de calcul GPU pour LLM et traitement audio
|
|
|
|
| Caractéristique | Valeur |
|
|
|-----------------|--------|
|
|
| **OS** | Bazzite (Fedora-based) |
|
|
| **CPU** | AMD Ryzen 5800X3D |
|
|
| **RAM** | 32 GB+ |
|
|
| **GPU** | AMD RX 7800 XT 16 GB VRAM |
|
|
| **ROCm** | Version 6.3.4 |
|
|
| **Architecture GPU** | gfx1100 |
|
|
|
|
**Services hébergés :**
|
|
- Ollama (LLM qwen2.5:14b)
|
|
- speaches (STT Whisper)
|
|
- openedai-speech (TTS Piper/XTTS)
|
|
|
|
---
|
|
|
|
## Schéma Réseau
|
|
|
|
```
|
|
Internet
|
|
│
|
|
▼
|
|
┌────────────────────────────────────────────────────────────┐
|
|
│ Routeur (Box) │
|
|
│ DHCP 192.168.1.0/24 │
|
|
└────────────────────────────────────────────────────────────┘
|
|
│ │
|
|
│ │
|
|
▼ ▼
|
|
┌──────────────┐ ┌──────────────────┐
|
|
│ effi-server │◄────────►│ folzo-Corp │
|
|
│ 192.168.1.27 │ LAN │ 192.168.1.11 │
|
|
│ │ │ │
|
|
│ • Docker │ │ • Ollama │
|
|
│ • WebUI │ WoL │ • Whisper │
|
|
│ • Qdrant │◄─────────│ • TTS │
|
|
│ • n8n │ │ • ROCm/GPU │
|
|
└──────────────┘ └──────────────────┘
|
|
```
|
|
|
|
---
|
|
|
|
## Flux de Données
|
|
|
|
### Pipeline Conversationnelle
|
|
|
|
```
|
|
┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐
|
|
│ Micro │────►│ speaches │────►│ Open WebUI │────►│ Ollama │
|
|
│ (Client) │ STT │ (folzo-Corp) │ │(effi-server) │ │ (folzo-Corp) │
|
|
└──────────────┘ └──────────────┘ └──────┬───────┘ └──────┬───────┘
|
|
│ │
|
|
│◄───────────────────┘
|
|
│ Réponse LLM
|
|
│
|
|
▼
|
|
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
|
|
│ Haut- │◄────│ openedai- │◄────│ Open WebUI │
|
|
│ parleurs │ TTS │ speech │ │(traite la │
|
|
│ │ │(folzo-Corp) │ │ réponse) │
|
|
└──────────────┘ └──────────────┘ └──────────────┘
|
|
```
|
|
|
|
### Wake-on-LAN
|
|
|
|
Quand OpenWebUI sur effi-server veut appeler Ollama sur folzo-Corp :
|
|
|
|
1. Requête vers `192.168.1.27:3011` (wol-proxy)
|
|
2. wol-proxy vérifie si Ollama répond sur `192.168.1.11:11434`
|
|
3. Si non → envoie un Magic Packet WoL à l'adresse MAC configurée
|
|
4. Attend que le PC démarre (timeout configurable)
|
|
5. Une fois démarré, fait le proxy vers Ollama
|
|
|
|
---
|
|
|
|
## Sécurité Réseau
|
|
|
|
### Ports ouverts sur effi-server
|
|
|
|
| Port | Service | Exposition |
|
|
|------|---------|------------|
|
|
| 3000 | Open WebUI | LAN uniquement |
|
|
| 5678 | n8n | LAN uniquement |
|
|
| 5984 | CouchDB | LAN uniquement |
|
|
| 6333 | Qdrant | LAN uniquement |
|
|
| 8000 | mcpo | LAN uniquement |
|
|
|
|
### Ports ouverts sur folzo-Corp
|
|
|
|
| Port | Service | Exposition |
|
|
|------|---------|------------|
|
|
| 8100 | openedai-speech | LAN uniquement |
|
|
| 8200 | speaches | LAN uniquement |
|
|
| 11434 | Ollama | LAN uniquement |
|
|
|
|
### Recommandations
|
|
|
|
- Utiliser un VPN (WireGuard, Tailscale) pour l'accès externe
|
|
- Jamais exposer les ports directement sur Internet
|
|
- Configurer le pare-feu UFW (Ubuntu) ou firewall-cmd (Fedora)
|
|
|
|
---
|
|
|
|
## Sauvegardes
|
|
|
|
### Données critiques à sauvegarder
|
|
|
|
**Sur effi-server :**
|
|
```
|
|
~/effi/
|
|
├── docker-compose.yml # Configuration
|
|
├── .env # Variables (chiffrer)
|
|
├── open-webui-data/ # Mémoire, config
|
|
├── qdrant-storage/ # Vecteurs RAG
|
|
├── couchdb-data/ # Sync Obsidian
|
|
└── n8n-data/ # Workflows
|
|
```
|
|
|
|
**Sur folzo-Corp :**
|
|
```
|
|
~/ollama/ # Modèles téléchargés
|
|
~/speaches/models/ # Modèles Whisper
|
|
~/openedai-speech/tts-voices/ # Voix TTS
|
|
```
|
|
|
|
### Commande de backup
|
|
|
|
```bash
|
|
# Sur effi-server
|
|
tar -czvf effi-backup-$(date +%Y%m%d).tar.gz \
|
|
~/effi/docker-compose.yml \
|
|
~/effi/.env \
|
|
~/effi/open-webui-data/ \
|
|
~/effi/qdrant-storage/ \
|
|
~/effi/couchdb-data/ \
|
|
~/effi/n8n-data/
|
|
```
|
|
|
|
---
|
|
|
|
## Évolution Future
|
|
|
|
- **Réservation DHCP** : Fixer les IPs via le routeur
|
|
- **DNS local** : Utiliser des noms comme `effi.local` et `folzo-corp.local`
|
|
- **Reverse Proxy** : Traefik ou Nginx Proxy Manager pour HTTPS
|
|
- **Monitoring** : Prometheus + Grafana pour les métriques
|