From 5816c7eda6c87e0ac8af4c5c5dfd58f44f604fc0 Mon Sep 17 00:00:00 2001 From: Adam Belkacemi Date: Thu, 17 Sep 2026 13:37:37 +0200 Subject: [PATCH] =?UTF-8?q?README=20final=20:=20sch=C3=A9ma=20d'architectu?= =?UTF-8?q?re=20et=20limites=20assum=C3=A9es?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Livrable final du brief : diagramme ASCII du chemin de trafic réel (Caddy -> tripoli-edge -> tripoli-api -> Postgres/blobs), les labos volontairement hors de ce chemin (WireGuard admin, tripoli-netctl, bird-lab), et une section limites assumées explicite (1 VPS, pas de KVM, serveur partagé, OpenTofu écrit mais pas appliqué, alertes sans notification, SSH public toujours ouvert). Co-Authored-By: Claude Sonnet 5 --- README.md | 74 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) diff --git a/README.md b/README.md index e2a6205..4d2d58f 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,80 @@ concurrence sur 80/443. Reprendre ces ports casserait les sites existants. Pas de virtualisation imbriquée (KVM/QEMU) sur ce VPS Hetzner Cloud — non tenté, non simulé. +## Architecture + +``` + Internet + | + DNS (OVH) : tripoli.cloud + | + v + +-------------------------+ + | edge-caddy | <- partagé avec 6 autres + | TLS Let's Encrypt | domaines (Forgejo, + | routage par Host | lecheminvert, etc.) + +-------------------------+ + | + 172.17.0.1:9000 (passerelle docker0) + v + +-------------------------+ + | tripoli-edge | Rust (hyper/tokio), systemd, + | /healthz /metrics | utilisateur système sans + | reverse-proxy | privilège + +-------------------------+ + | + 127.0.0.1:8081 + v + +-------------------------+ + | tripoli-api | Rust (axum/sqlx), systemd, + | auth (Argon2, session) | même utilisateur système + | upload/download | + +-----------+-------------+ + | + +---------------+----------------+ + v v + PostgreSQL (Docker, /var/lib/tripoli-api/blobs + 127.0.0.1:5433, dédié - (fichiers, nommés par UUID) + séparé de celui d'iot-alarm) + + ---------------------------------------------------------------- + En dehors du chemin de trafic (labos, jamais branchés dessus) : + + Mac admin --WireGuard(10.100.0.0/24)--> serveur (accès SSH/Ansible) + tripoli-netctl : netns + veth à la demande (Phase 4) + bird-lab : BGP+BFD entre 2 netns, racine en transit (Phase 6) + + Observabilité : scrape ajouté au Prometheus/Grafana déjà en place + sur ce serveur (pas d'instance dédiée) - dashboard + alertes + versionnés dans monitoring/. + + CI/CD : Forgejo Actions (runner déployé en systemd) - build+test sur + toute PR, déploiement sur main via un compte "deploy" sans privilège. +``` + +## Limites assumées + +- **Un seul VPS, pas un cluster.** Tout ce qui ressemble à de la + redondance (deux namespaces dans `bird-lab`, par exemple) est un labo + pédagogique sur une seule machine, jamais une simulation de + multi-nœuds ou de multi-DC. +- **Pas de virtualisation imbriquée** (KVM/QEMU) - non disponible sur ce + VPS Hetzner Cloud, non tenté. +- **Serveur partagé**, pas dédié à Tripoli Cloud : 6 autres projets + personnels y tournent déjà. Plusieurs décisions d'architecture + (tripoli-edge derrière Caddy plutôt qu'à sa place, pas de second + Prometheus/Grafana, PostgreSQL dans un conteneur séparé plutôt que + natif) découlent directement de cette contrainte, pas d'un choix + gratuit. +- **OpenTofu écrit mais pas appliqué** : le code (`tofu/`) est validé + syntaxiquement, mais `plan`/`apply` demandent des identifiants OVH et + Hetzner Cloud qui n'ont pas été demandés ni extraits automatiquement. +- **Alertes Prometheus sans notification** : les règles se déclenchent + et sont vérifiables, mais rien ne les route encore par email (pas + d'Alertmanager, pas de policy Grafana dédiée branchée). +- **SSH public toujours ouvert** : choix explicite fait avec + l'utilisateur, pas encore restreint au tunnel WireGuard. + ## État réel | Composant | État |