Files
chlova/infra/networks.md
T
Kantin-Petit ceddb86198 refactor(infra): MCP n8n natif, retrait du conteneur dédié (v0.15.0)
n8n ≥ 2.18.4 sert son propre MCP : suppression du service mcp-n8n,
MCP_N8N_URL pointe vers l'endpoint natif de l'instance (auth MCP Access
Token Bearer). Portainer reste un sidecar officiel. Aucun changement de
code (registry HTTP+Bearer inchangé). Docs + .env alignés, compose
revalidé.

Palier de risque : n/a (infra + config).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 01:40:49 +02:00

35 lines
1.6 KiB
Markdown

# Réseaux & exposition
> Invariant : **une seule surface exposée**, le backend CHLOVA. Tout le reste
> reste interne. Voir `docs/security.md`.
## Réseaux Docker
| Réseau | Type | Membres | But |
|---|---|---|---|
| `chlova-internal` | `internal: true` | backend, ollama, mcp-portainer, socket-proxy, (n8n + Portainer existants, à attacher) | bus interne ; **aucun accès externe** |
| `chlova-egress` | bridge | ollama uniquement | sortie contrôlée vers `ollama.com` |
- `chlova-internal` est déclaré `internal: true` : **pas de route vers l'extérieur**.
- Seul **Ollama** est aussi sur `chlova-egress` (il doit joindre `ollama.com`).
- Le backend n'a **pas** besoin d'egress en Phase 1 (Telegram en long-polling sort
vers `api.telegram.org` → à autoriser explicitement quand la surface est activée).
## Ports publiés
- **Phase 1 : aucun.** La surface Telegram fonctionne en long-polling (le bot
appelle Telegram, rien n'écoute en entrée).
- Phases ultérieures (API/UI CHLOVA) : exposer **uniquement** le backend derrière
**Traefik + TLS**, et/ou via **VPN mesh** (Tailscale/Wireguard). Jamais Ollama,
n8n, Portainer ou un serveur MCP.
## Egress (pare-feu)
- Politique par défaut : **deny**.
- Autoriser : `ollama.com` (proxy cloud), et `api.telegram.org` quand la surface
Telegram est active.
- À appliquer au niveau hôte (iptables/nftables ou réseau Docker dédié) ; documenté
ici, mis en œuvre côté infra serveur (hors dépôt si géré par l'hôte).
## Rappels
- Ollama **n'a aucune auth native** → ne jamais lui publier de port.
- Accès Docker **uniquement** via `socket-proxy` (jamais le socket brut).