Stack technique

Cette infrastructure est hybride : services personnels auto-hébergés sur une VM ARM64 à domicile, site portfolio déployé sur un VPS Scaleway. Les outils sont intégralement open source — auditables, sans dépendance propriétaire, représentatifs des standards en entreprise. L'hébergement cloud repose sur Scaleway, acteur européen : un compromis assumé entre souveraineté des données et maîtrise des coûts. Cette page documente l'architecture et les choix qui la composent.

Vue d'ensemble

Internet
  │
  ├── kiwinet.me → VPS Scaleway (Traefik + Astro/Nginx, CI/CD GitHub Actions)
  │
  └── freebox.kiwinet.me → Traefik VM (reverse proxy + SSL Let's Encrypt)
           ├── status.kiwinet.me    → Uptime Kuma
           ├── grafana.kiwinet.me   → Grafana
           ├── plex.kiwinet.me      → Plex Media Server
           ├── hub.kiwinet.me       → Home Assistant
           ├── calibre.kiwinet.me   → Calibre-Web
           ├── komga.kiwinet.me     → Komga
           └── traefik.kiwinet.me   → Dashboard Traefik (auth-basic)
  │
  └── minecraft.kiwinet.me:25565 (TCP passthrough Traefik)

L'infrastructure est hybride : kiwinet.me est hébergé sur un VPS Scaleway (souveraineté européenne, CI/CD automatisé), tandis que tous les services personnels et d'observabilité tournent sur une VM auto-hébergée. Traefik gère le routage, le SSL automatique et l'isolation des services côté VM. Minecraft transite via Traefik en mode TCP passthrough — le trafic est routé sans déchiffrement TLS.

Architecture détaillée

Internet
  │
  ├── :80/:443  → kiwinet.me → VPS Scaleway
  │                                 └── Traefik → Container kiwinet-web (Astro/Nginx)
  │
  ├── :80/:443  → freebox.kiwinet.me → Traefik VM
  │                                        ├── status.kiwinet.me      → Container uptime-kuma
  │                                        ├── grafana.kiwinet.me     → Container grafana
  │                                        ├── plex.kiwinet.me        → Container plex (Plex Media Server)
  │                                        ├── hub.kiwinet.me         → Home Assistant (network_mode: host)
  │                                        ├── calibre.kiwinet.me     → Container calibre-web
  │                                        ├── komga.kiwinet.me       → Container komga
  │                                        └── traefik.kiwinet.me     → Dashboard Traefik (auth-basic)
  │
  ├── :25565    → minecraft.kiwinet.me → Container minecraft (TCP brut, passthrough Traefik)
  ├── :22       → SSH (accès VM, clé ed25519)
  └── :XXXXX    → 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

Infrastructure

Architecture hybride : VM Debian GNU/Linux ARM64 auto-hébergée pour les services personnels, VPS Scaleway (fr-par-1) pour le site portfolio. Traefik comme reverse proxy unique sur chaque hôte, SSL Let's Encrypt automatique via HTTP Challenge. WireGuard pour l'accès sécurisé au réseau local. Provisioning automatisé via Ansible (dual-target VM + VPS) et Terraform pour l'infrastructure cloud Scaleway.

TraefikLet's EncryptDockerWireGuardDebian ARM64AnsibleTerraformScaleway
kiwinet-infra-ansible · kiwinet-infra-cloud
CI/CD

Pipeline GitHub Actions : build Astro → image Docker linux/amd64 → push GHCR → déploiement SSH sur VPS Scaleway (port dédié) → Docker Compose. Migration de ARM64 vers AMD64 réalisée lors du passage au VPS — la contrainte d'architecture est documentée comme décision technique.

GitHub ActionsDocker BuildxGHCRSSH deploylinux/amd64
kiwinet-web
Observabilité

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.

Uptime KumaPrometheusGrafanaLokicAdvisor
kiwinet-status · kiwinet-monitoring

Récapitulatif des outils

Rôle Outil Pourquoi ce choix Repo
Reverse proxy Traefik v3 Natif Docker, SSL auto, standard conteneurs kiwinet-services
SSL Let's Encrypt Gratuit, automatique, reconnu universellement kiwinet-services
VPN WireGuard Zéro exposition, clé par appareil kiwinet-infra-ansible
Provisioning VM/VPS Ansible Idempotent, dual-target VM + VPS, standard DevOps kiwinet-infra-ansible
Infrastructure cloud Terraform + Scaleway IaC reproductible, souveraineté européenne kiwinet-infra-cloud
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-observability
Métriques Prometheus + cAdvisor + Node Exporter Standard industrie kiwinet-observability
Logs Loki + Promtail Cohérence Grafana Labs kiwinet-observability
Dashboards Grafana Visualisation unifiée kiwinet-observability
Voir tous les repos sur GitHub →

État des services

kiwinet.me statut kiwinet.me
traefik.kiwinet.me statut traefik.kiwinet.me
status.kiwinet.me statut status.kiwinet.me
grafana.kiwinet.me statut grafana.kiwinet.me
plex.kiwinet.me statut plex.kiwinet.me
minecraft.kiwinet.me statut minecraft.kiwinet.me
hub.kiwinet.me statut hub.kiwinet.me
komga.kiwinet.me statut komga.kiwinet.me
calibre.kiwinet.me statut calibre.kiwinet.me

Badges live — état en temps réel depuis Uptime Kuma.