Stack technique
Cette infrastructure est entièrement auto-hébergée sur une VM ARM64 à domicile. Chaque outil a été choisi pour trois raisons majeures : open source, représentatif des standards en entreprise, et cohérent avec l'ensemble de la chaîne. Cette page a pour but de documenter l'architecture et les choix qui la composent.
Vue d'ensemble
Internet
└── freebox.kiwinet.me (point d'entrée)
└── Traefik (reverse proxy + SSL Let's Encrypt)
├── kiwinet.me → Kiwinet (Astro/Nginx)
├── status.kiwinet.me → Uptime Kuma
├── grafana.kiwinet.me → Grafana
├── plex.kiwinet.me → Container plex (Plex Media Server)
├── hub.kiwinet.me → Home Assistant
└── traefik.kiwinet.me → Dashboard (auth-basic)
└── minecraft.kiwinet.me:25565 (TCP passthrough Traefik) Traefik est le point d'entrée unique de la VM : il gère le routage, le SSL automatique et l'isolation des services. Minecraft transite par Traefik en mode TCP passthrough — le trafic est routé sans déchiffrement TLS.
Architecture détaillée
Internet │ ├── :80/:443 → freebox.kiwinet.me → Traefik │ ├── kiwinet.me / www → Container kiwinet-web (Nginx) │ ├── traefik.kiwinet.me → Dashboard Traefik (auth-basic) │ ├── plex.kiwinet.me → Container plex (Plex Media Server) │ ├── hub.kiwinet.me → Home Assistant (network_mode: host) │ ├── status.kiwinet.me → Container uptime-kuma │ └── grafana.kiwinet.me → Container grafana │ ├── :25565 → minecraft.kiwinet.me → Container minecraft (TCP brut, passthrough Traefik) ├── :22 → SSH (accès VM, clé ed25519) └── :22121 → WireGuard VPN (accès réseau local chiffré, clé par appareil)
L'accès à l'interface d'administration de la Freebox ne passe pas par le réseau public. Il transite exclusivement par un tunnel WireGuard — zéro surface d'attaque, authentification par clé, clé distincte par appareil.
Les couches de la stack
VM Debian GNU/Linux sur ARM64, auto-hébergée. Traefik comme reverse proxy unique, SSL Let's Encrypt automatique via HTTP Challenge. WireGuard pour l'accès sécurisé au réseau local.
Pipeline GitHub Actions : build Astro → image Docker multi-plateforme (linux/arm64 via Docker Buildx) → push GHCR → git pull sur la VM → déploiement Docker Compose. L'architecture ARM64 est traitée comme une contrainte de build démontrée, pas contournée.
Deux niveaux distincts : statut public (Uptime Kuma, badges live, alertes Discord) et observabilité interne (Prometheus, cAdvisor, Node Exporter, Loki, Promtail, Grafana). La séparation externe/interne est un choix délibéré de maturité DevOps.
Récapitulatif des outils
| Rôle | Outil | Pourquoi ce choix | Repo |
|---|---|---|---|
| Reverse proxy | Traefik v3 | Natif Docker, SSL auto, standard conteneurs | kiwinet-infra |
| SSL | Let's Encrypt | Gratuit, automatique, reconnu universellement | kiwinet-infra |
| VPN | WireGuard | Zéro exposition, clé par appareil | kiwinet-infra |
| Framework front | Astro | Statique, léger, image Docker ~15 Mo | kiwinet-web |
| Serveur fichiers | Nginx Alpine | Minimaliste, multi-stage build | kiwinet-web |
| Registry | GHCR | Cohérence écosystème GitHub | kiwinet-web |
| CI/CD | GitHub Actions + SSH | Auditable, maîtrise des secrets | kiwinet-web |
| Statut public | Uptime Kuma | Page publique + alertes Discord | kiwinet-status |
| Métriques | Prometheus + cAdvisor + Node Exporter | Standard industrie | kiwinet-monitoring |
| Logs | Loki + Promtail | Cohérence Grafana Labs | kiwinet-monitoring |
| Dashboards | Grafana | Visualisation unifiée | kiwinet-monitoring |
État des services
Badges live — état en temps réel depuis Uptime Kuma.