Files
Effi/docs/01-architecture/infrastructure.md
T
Folzo d1e12cff60 Initial commit: Documentation Effi v1.0
- 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
2026-04-04 08:45:59 +02:00

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