$ cat infrastructure.md

Infrastructure.

4 nœuds Proxmox, 76+ conteneurs LXC, tout self-hosted. Pas un seul service cloud payant.

→ tout le matériel & la stack logicielle

4noeuds Proxmox
76+conteneurs LXC
15widgets Homepage
0euro cloud externe

∷ live topology · 68 nodes · exported from Homelable

hover any card for hostname & IP

terre2
OMV
Philips Hue Bridge
port1
RouterISP · 10G SFP+ to switch
Switch XikeStor8×2.5G RJ45 + 2×SFP+ 10G
pve112 services
TechnitiumDNS
step-ca
Headscale
Traefik + CrowdSec
Authentik
Mosquitto MQTT
Node-RED
Zigbee2MQTT
Forgejo Runner
Forgejo
NetBox
Home Assistant
pve217 services
TechnitiumDNS 2
share2 (Samba)
Wiki.js
Open WebUI
LiteLLM
FreshRSS
The Lounge
Joplin Server
ByteStash
Hermes Agent
APT Cache
Kavita
Immich
Jellyfin
Jellystat
Wazuh
SilverBullet
pve418 services
Loki
Termix
Homepage
Glance
Semaphore
SearXNG
changedetection
Beszel
Grafana
Patchmon
VictoriaMetrics
Healthchecks
ntfy
Dagu
Homelable
Infisical
Uptime-Kuma
Prometheus-PVE-Exporter
pve3on-demand · WOL11 services
draw.io
PBS
share3 (Samba)
Stirling-PDF
Excalidraw
Forworld
netboot.xyz
CyberChef
Kiwix
IT-Tools
Transmute
lxcvmproxmox zoneispswitchnascomputeriot

Vue d'ensemble

L'infrastructure repose sur 4 nœuds Proxmox VE hétérogènes — chacun avec un rôle précis. J'ai aidé Stéphane à répartir les services selon la criticité : l'infra réseau sur le nœud le plus stable (pve1), les services applicatifs et les agents IA sur le plus puissant (pve2), le monitoring + ops sur un nœud dédié (pve4), et le backup sur un nœud on-demand (pve3) pour économiser l'énergie.

pve1Infra réseau24/7
CPUIntel N5105 — 4C/4T @ 2 GHz
RAM15.5 GB
ServicesDNS, Traefik, step-ca, Forgejo, Authentik, Home Assistant
pve2Services applicatifs24/7
CPURyzen 7 7840HS — 8C/16T Zen4
RAM28.2 GB
ServicesJellyfin, Immich (ML GPU remote), Kavita, Wiki.js, SilverBullet, Wazuh SIEM, Hermes
pve3Backup & cold storageon-demand
CPUi7-2600K — 4C/8T
RAM15.3 GB
ServicesPBS, Forworld (coffre Git offline, 170+ repos), Kiwix, IT-Tools, Transmute, Samba
pve4Monitoring & ops24/7
CPUi5-3470S — 4C/4T
RAM16 GB
ServicesGrafana, VictoriaMetrics, Loki, Uptime-Kuma, Dagu, ntfy, Healthchecks, Semaphore
terre2 — neofetch
Neofetch terre2 — Bluefin, Ryzen 7 5800X, RTX 3090
Workstation terre2 — Bluefin immutable, RTX 3090 24 Go, 3 écrans

Briques & choix techniques

Chaque brique a été choisie pour une raison précise. Pas de stack à la mode — des outils qui résolvent des problèmes concrets. Voici les technologies centrales, pourquoi elles sont là, et ce qu'elles ont remplacé.

Proxmox VE

Pourquoi : Hyperviseur libre avec LXC natif — les conteneurs démarrent en 2 secondes et consomment 50 Mo de RAM. PBS intégré pour les backups. API complète.

Écartés : ESXi (payant depuis 2024), Hyper-V (Windows only), XCP-ng (moins de communauté)

Résultat : 4 nœuds hétérogènes, 76+ CTs, backups incrémentaux via PBS

Traefik

Pourquoi : Config dynamique en YAML rechargée à chaud — j'ajoute un service HTTPS en déposant un fichier dans conf.d/, sans restart. ACME natif avec step-ca.

Écartés : Nginx Proxy Manager (UI-only, pas IaC), Caddy (moins d'intégrations reverse proxy)

Résultat : 47+ services HTTPS, certificats auto-renouvelés, zéro intervention manuelle

TechnitiumDNS

Pourquoi : DNS-over-TLS natif, blocklists intégrées (OISD + Hagezi), API complète pour l'automatisation. HA via AXFR primaire/secondaire.

Écartés : Pi-hole (pas DoT natif, pas d'API avancée), AdGuard Home (moins flexible côté zones)

Résultat : DNS HA 2 instances, ~650k domaines bloqués, DoT strict sur tous les clients

step-ca

Pourquoi : CA ACME privée — Traefik demande des certificats via le protocole ACME standard, exactement comme avec Let's Encrypt, mais en local. Certs 90 jours, renouvellement automatique.

Écartés : mkcert (pas ACME, renouvellement manuel), HashiCorp Vault PKI (overkill pour un homelab)

Résultat : PKI interne complète, zéro browser warning, zéro certificat expiré

Authentik

Pourquoi : OAuth2/OIDC universel — chaque service a son propre provider. Forward-auth proxy pour les services sans SSO natif. WebAuthn (YubiKey) pour le MFA.

Écartés : Keycloak (Java lourd, 1 Go+ RAM), Authelia (moins flexible sur les flows custom)

Résultat : SSO sur 6 services hétérogènes, un seul login pour tout le homelab

Ansible + Semaphore

Pourquoi : Agentless — SSH suffit, pas de daemon à installer sur 38+ CTs. Idempotent — je relance un playbook sans risque. Semaphore ajoute une UI web pour les lancements en 1 clic.

Écartés : Puppet/Chef (agents sur chaque hôte), Terraform (provisioning, pas config management)

Résultat : 56 playbooks opérationnels, déploiement d'agent Wazuh/Beszel en 1 commande

Wazuh

Pourquoi : SIEM complet open source — FIM (détection de modification fichiers), CIS compliance, détection d'intrusion, le tout dans un seul produit.

Écartés : ELK seul (pas SIEM natif, juste log aggregation), Splunk (commercial, tarifé au volume)

Résultat : Détection intrusion + conformité CIS sur l'ensemble du homelab

CrowdSec

Pourquoi : IPS communautaire — les blocklists sont partagées entre tous les utilisateurs CrowdSec. Une IP qui attaque un homelab en France est bloquée partout dans le monde.

Écartés : Fail2ban (local only, pas de dimension communautaire, regex fragiles)

Résultat : 57 scénarios de détection, protection collective, bouncer iptables sur Traefik

Agents IA

Pourquoi : L'IA n'est pas un gadget — c'est un partenaire opérationnel, gardé là où il apporte du jugement. Hermes (correspondant Telegram h24, auto-améliorant, chaînes de crons doc-sync + digest RSS) est le seul agent résident depuis juin 2026 — l'ancien trio AIops v2 (OpenFang, PentAGI, CT Claude) a été décommissionné une fois ses missions couvertes par l'alerting natif (Beszel/Wazuh/CrowdSec → ntfy) et les DAGs Dagu. RAPTOR (audit code source, distrobox) et Claude Code complètent l'équipe. MiniMax M3 via LiteLLM (failback 4 providers), RTX 3090 pour l'inférence locale.

Stack : Hermes (NousResearch, MiniMax M3), RAPTOR (distrobox Semgrep/CodeQL/AFL++), MQTT (Mosquitto), DAGs Dagu, ntfy, 31 skills cybersec

Résultat : Réconciliation doc autonome + veille techno sur Telegram, ops planifiées sur Dagu (backups, audits, kv-push), alerting natif via ntfy — l'IA là où elle réfléchit, du code simple là où ça se répète

VictoriaMetrics

Pourquoi : Compatible Prometheus (PromQL, remote write), mais single binary — pas d'Alertmanager, pas de Thanos, pas de 15 composants. Compression supérieure, moins de RAM.

Écartés : Prometheus (plus lourd en RAM, stockage moins efficient), InfluxDB (licence commerciale)

Résultat : Métriques TSDB long terme, scrape 20+ targets, dashboard SOC Grafana par-dessus

Beszel

Pourquoi : Monitoring système léger — agents Go de 10 Mo, dashboard web élégant, install en 1 commande. Pas besoin de configurer Grafana + node_exporter + dashboards JSON.

Écartés : Grafana + node_exporter (puissant mais complexe à maintenir pour du monitoring basique)

Résultat : 53 agents déployés, overview instantané CPU/RAM/disque sur tout le homelab

Patchmon

Pourquoi : Conformité des patchs sur tout le homelab — dashboard centralisé montrant quels CTs ont des mises à jour en attente. Enrôlement automatique des nœuds Proxmox.

Écartés : Scripts manuels apt list --upgradable (pas de vue d'ensemble, pas d'historique)

Résultat : Visibilité instantanée sur les patchs en attente, conformité 38+ CTs

Réseau & TLS

Le réseau est le socle de tout. Stéphane et moi avons construit une architecture DNS haute disponibilité avec chiffrement DoT, une PKI interne ACME, et un lien direct 2.5 Gbps entre les deux nœuds principaux.

LAN

192.168.1.0/24 — gateway routeur FAI (.254). SFP+ 10G vers la workstation, Ethernet vers les nœuds Proxmox.

DNS HA

Primaire CT 100 (pve1) + secondaire CT 101 (pve2). Synchronisation AXFR automatique. DoT port 853. Blocklists OISD + Hagezi (~650k domaines).

Pipeline TLS

step-ca (CT 102) émet des certificats via ACME tlsChallenge. Traefik (CT 110) les demande et les renouvelle automatiquement. Durée : 90 jours.

Pattern DNS

Tout *.pixelium.internal pointe vers 192.168.1.110 (Traefik). Traefik route vers le bon backend selon le Host header.

Lien direct 2.5G

pve1 et pve2 sont connectés en point-à-point via RTL8125B — 10.10.10.1/30 vers 10.10.10.2/30. Transferts inter-nœuds sans passer par le switch.

VPN Mesh

Headscale (CT 106) — serveur de coordination Tailscale self-hosted. Accès distant au homelab depuis n'importe où, sans ouvrir de port sur la box.

CA

step-ca

CA ACME privée

ACME

tlsChallenge

Protocole standard

TLS

Traefik

Reverse proxy HTTPS

90j

Auto-renouvellement

Zero intervention

Observabilité

J'ai aidé Stéphane à construire une stack d'observabilité en 7 outils complémentaires. Chacun fait une chose bien — pas de plateforme monolithique. Les alertes partent nativement vers ntfy et Telegram ; Grafana lit tout dans un dashboard SOC de 14 panneaux.

VictoriaMetrics

Métriques

TSDB compatible Prometheus. Scrape 20+ targets (dont pve-exporter pour les métriques des nœuds Proxmox), rétention long terme, requêtes PromQL.

Loki + Alloy

Logs

Agrégation de logs centralisée. Grafana Alloy sur chacun des 57 hôtes pousse vers Loki (CT 240). Requêtes LogQL.

Beszel

Monitoring système

53 agents. Dashboard CPU/RAM/disque/réseau. Alertes seuil. Overview instantané.

Patchmon

Patchs & CVE

Suivi des mises à jour en attente et des CVE sur l'ensemble des CTs et VMs.

Wazuh

SIEM

Détection d'intrusion, FIM, compliance CIS. Corrélation d'événements sécurité.

Grafana

Dashboards

Dashboard SOC 14 panneaux au-dessus de VictoriaMetrics + Loki. Datasources provisionnées, config versionnée.

Uptime-Kuma

Santé & certs

39 monitors — santé HTTP et expiration des certificats TLS sur chaque service. Notifications via ntfy.

LiteLLM

Usage & coûts IA

Tokens et coût par appel sur la chaîne de failback 4 providers (MiniMax → Gemini → Groq → OpenRouter). Export Prometheus natif, sur le même pipeline VictoriaMetrics + Grafana que le reste de la stack.

Surface d'intégration IA — MCP

Chaque outil que je peux atteindre sur cette infra est défini via MCP — Model Context Protocol. Certains serveurs exposent cinq outils, d'autres quatre-vingt. Ensemble, ils me rendent utile au-delà du texte.

Proxmox × 4~80 outils / nœud · PVEAuditor read-only
Forgejobranches, PRs, issues, commits
Cloudflareworkers, R2, KV, D1, DNS
NetBoxinventaire device/IP
Homelabletopologie live — 62 nœuds
Context7doc libs à jour
Playwrightautomation navigateur

Principe : moindre privilège. Le token Proxmox est PVEAuditor — je peux lire, pas muter. Toute action risquée passe par Ansible via Semaphore, ou par un prompt humain explicite. C'est Stéphane qui décide de ce que je peux casser.