francois@fhoo.dev — zsh
 
NAME      STATUS  ROLES                  ARCH    VERSION
rpi4-1    Ready   control-plane,master   arm64   v1.35+k3s1
rpi4-2    Ready   worker                 arm64   v1.35+k3s1
rpi4-3    Ready   worker                 arm64   v1.35+k3s1
nipogi    Ready   worker                 amd64   v1.35+k3s1
ovh-vps   Ready   worker,edge            amd64   v1.35+k3s1

Architecture Homelab

5-node k3s cluster · WireGuard mesh · 40+ self-hosted services · plain YAML

0
k3s nodes
0
services
0
NAS (OMV)
0
self-hosted

##Network Map

topologie physique & overlay — survolez les nœuds

INTERNET *.fhoo.dev HTTPS :443 → Traefik EDGE · OVH CLOUD ☁️ ovh-vps edge · Traefik ingress Netmaker · WireGuard mesh 10.10.10.0/24 (IPs d'illustration) LAN · HOME 📡 router LAN gateway 🍓 rpi5-1 control-plane arm64 🍓 rpi4-2 worker arm64 🍓 rpi4-3 worker arm64 🖥️ nipogi worker · Intel N100 NVMe · PostgreSQL VA-API · OpenVINO ▣ k3s — 5 nodes · Flannel CNI routé via l'interface WireGuard STORAGE · NFS nfs-nas1 restic 🗄️ NAS 1 · OMV nfs-nas1 · apps data 💾 NAS 2 · OMV nfs-nas2 · backups

━━ WireGuard mesh (Netmaker)  ·  ━━ ingress HTTPS  ·  ━━ NFS / backups  —  IPs affichées fictives (illustration du VPN)

##Couche Réseau

overlay WireGuard, CNI, ingress & DNS

🔗Netmaker / WireGuard

Mesh overlay chiffré entre tous les nœuds — y compris le VPS OVH distant. Chaque machine rejoint le réseau via une interface netmaker dédiée, sur un subnet privé unique.

🕸️Flannel (CNI)

CNI du cluster k3s, configuré pour router le trafic pod-à-pod via l'interface WireGuard : le réseau cluster traverse le mesh de façon transparente, même entre LAN et cloud.

⚖️MetalLB (L2)

Fournit les IPs LoadBalancer sur le LAN local en mode Layer 2 — pas de cloud provider, pas de magie : de l'ARP.

🚦Traefik

Ingress controller déployé en DaemonSet. Le nœud OVH (IP publique) est le point d'entrée externe : Internet → Traefik → mesh → services.

🔐cert-manager

Certificats wildcard *.fhoo.dev émis via challenge DNS-01 sur l'API OVH. TLS partout, renouvellement automatique.

🛡️AdGuard Home (HA)

DNS interne en haute disponibilité — 2 instances répliquées. Résolution locale des domaines internes + filtrage réseau.

##Cluster k3s

k3s v1.35 · plain YAML, no Helm

NodeHardwareArchRôleSpécificités
rpi5-1Raspberry Pi 5arm64 control-plane + workerworkloads légers
rpi4-2Raspberry Pi 4arm64 workerworkloads légers
rpi4-3Raspberry Pi 4arm64 workerworkloads légers
nipogiNiPoGi E3B · Intel N100amd64 worker principalPostgreSQL (NVMe), VA-API, OpenVINO
ovh-vpsVPS OVH · Debianamd64 worker + edgeIP publique, expose Traefik

🏷️Affinités workload

workload=postgres → tous les pods PostgreSQL s'exécutent exclusivement sur le NiPoGi (SSD NVMe local, hostPath PVs).

kubernetes.io/arch=arm64 → workloads légers épinglés sur les Raspberry Pi.

📜Plain YAML

Tous les manifests sont en YAML brut — pas de Helm, pas de templating. Lisible, diffable, versionné dans Forgejo. Ce que tu vois est ce qui tourne.

🌐Hybride LAN / cloud

Le cluster s'étend du salon au datacenter : 4 nœuds à la maison + 1 VPS OVH, unifiés par le mesh WireGuard. Flannel ne voit qu'un seul réseau plat.

##Stockage

StorageClasses, NAS & stratégie de backup

StorageClassDriverBackendUsage
nfs-nas1csi-driver-nfs v4.13.1NAS 1 (OMV, principal)Données applicatives générales
nfs-nas2csi-driver-nfs v4.13.1NAS 2 (OMV, backup)Destination Backrest / restic
local-ssdhostPathNiPoGi (SSD NVMe interne)PostgreSQL (CNPG), performance
⚡ NiPoGi NVMe hostPath PVs 🗄️ NAS 1 · OMV NFS exports 🐘 CNPG / PostgreSQL Keycloak · Vaultwarden · Immich · HA 📦 PVCs applicatifs media, fichiers, configs… 💾 NAS 2 · OMV dépôts restic local-ssd nfs-nas1 Backrest · restic

##Services

40+ pods, classés par domaine — tout passe par Traefik + Keycloak

01 · Infrastructure & Sécurité
🚦Traefik
Ingress DaemonSet, TLS termination
ACTIVE
🔐cert-manager
Wildcard *.fhoo.dev via DNS-01 OVH
ACTIVE
⚖️MetalLB
LoadBalancer L2 sur le LAN
ACTIVE
🕸️Flannel
CNI overlay routé via WireGuard
ACTIVE
🗝️Keycloak
SSO / OIDC — realm fhoo.dev
ACTIVE
🛡️AdGuard Home
DNS interne (2 instances)
ACTIVE
👮CrowdSec
IDS / IPS collaboratif
IN PROGRESS
📈Prometheus + Grafana
Métriques & dashboards — node-exporter 8/8 UP
ACTIVE
02 · Données & Fichiers
🐳Harbor
Registry Docker privé + proxy cache, OIDC
ACTIVE
🐘CNPG
Opérateur PostgreSQL — backend des apps
ACTIVE
🔑Vaultwarden
Mots de passe (compatible Bitwarden)
ACTIVE
🦊Forgejo
Git self-hosted
ACTIVE
📚Outline
Wiki / knowledge base (S3 MinIO)
ACTIVE
📁FileBrowser Quantum
Explorateur de fichiers web
ACTIVE
🪣MinIO
Object storage S3-compatible
ACTIVE
03 · Domotique & Énergie
🏠Home Assistant
Domotique centrale — Matter / OTBR, backend PostgreSQL
ACTIVE
📨Mosquitto
Broker MQTT
ACTIVE
🐝Zigbee2MQTT
Bridge Zigbee → MQTT (coordinateur SLZB)
ACTIVE
🎥Frigate
NVR + détection d'objets (caméras Reolink)
ACTIVE
☀️EMHASS
Optimisation solaire — Batterie domestique
ACTIVE
🔋Zendure local MQTT
Intégration batterie solaire 100% locale
ACTIVE
🔁n8n
Automatisation / workflows
ACTIVE
04 · Media & Réseau
🎬Jellyfin
Serveur media — transcoding VA-API (NiPoGi)
ACTIVE
📷Immich
Photos — ML OpenVINO (NiPoGi)
ACTIVE
🧲qBittorrent
Client torrent
ACTIVE
📶NetAlertX
Scan réseau / détection de présence
ACTIVE
💾Backrest
UI restic — sauvegardes vers NAS 2
ACTIVE
🎧Audiobookshelf
Serveur de livres audio & podcasts
ACTIVE
05 · Mail
✉️Stalwart Mail
Serveur mail self-hosted, multi-domaine (4 domaines)
ACTIVE

##Authentification SSO

Keycloak OIDC — un seul login pour tout le homelab

🌐 Browser https://app.fhoo.dev 🚦 Traefik TLS · routing 📦 Service Harbor, Grafana… 🗝️ Keycloak realm fhoo.dev HTTPS route OIDC redirect 302 → login → token
⚠ Un seul point d'identité. Harbor, Grafana et la majorité des services délèguent l'authentification à Keycloak (realm fhoo.dev). Pas de comptes locaux éparpillés.