3. L’Infrastructure Auto-hébergée & Cartographie des Conteneurs
Le site legleau.org n’est pas hébergé sur une instance cloud anonyme : il tourne chez moi, au cœur de mon propre réseau local, orchestré par un hyperviseur Proxmox VE réparti sur trois machines physiques dédiées.
Chaque fonction (routage, sécurité, reverse proxy, forge logicielle, bases de données, applications multimédias et télémétrie) est cloisonnée dans son propre conteneur LXC (Linux Containers) ou sa machine virtuelle QEMU, garantissant une isolation stricte des privilèges et une résilience optimale.
Topologie du Réseau & Inventaire des Conteneurs Proxmox
Voici la cartographie synoptique complète de tous les conteneurs et machines virtuelles concourant au fonctionnement du site et de ses services associés :
flowchart TB
%% STYLES PERSONNALISES
classDef wan fill:#0284c7,stroke:#0369a1,stroke-width:2px,color:#fff;
classDef routerNode fill:#0f172a,stroke:#38bdf8,stroke-width:2px,color:#f8fafc;
classDef oldNode fill:#1e293b,stroke:#34d399,stroke-width:2px,color:#f8fafc;
classDef dellNode fill:#1e1b4b,stroke:#a78bfa,stroke-width:2px,color:#f8fafc;
classDef lxc fill:#334155,stroke:#64748b,stroke-width:1px,color:#fff;
classDef vm fill:#475569,stroke:#94a3b8,stroke-width:2px,color:#fff;
%% PERIMETRE EXTERIEUR CLOUDFLARE
subgraph WAN["☁️ PÉRIMÈTRE EXTERNE (EDGE & WAN)"]
User["🌐 Visiteurs & Proches"]
CF["🛡️ Cloudflare Edge<br/>(DNS Anycast, SSL, DDoS, Worker 500 Failover)"]
User -->|"HTTPS (Port 443)"| CF
end
%% NOEUD PROXMOX ROUTER
subgraph NodeRouter["🖥️ NŒUD PROXMOX 1 : 'router' (Réseau, Sécurité, Proxy)"]
OPN["🛡️ VM 254 : OPNsense-Core<br/>(Pare-feu, Passerelle NAT, IDS/IPS)"]:::vm
NPM["🔀 LXC 104 : npmplus (Nginx Proxy Manager)<br/>• Terminaison SSL & Reverse Proxy<br/>• API Status /api/badge/:id<br/>• Hébergement Statique legleau.org"]:::lxc
CFDDNS["🔄 LXC 111 : cloudflare-ddns<br/>(Mise à jour IP WAN Dynamique)"]:::lxc
KUMA["📊 LXC 124 : uptimekuma<br/>(Sondes Santé Services & Génération Badges)"]:::lxc
ADG["🚫 LXC 103 : adguard<br/>(DNS Local & Filtrage)"]:::lxc
CF -->|"Trafic WAN chiffré"| OPN
OPN -->|"Routage LAN"| NPM
CFDDNS -.->|"API Sync IP"| CF
KUMA -->|"Surveillance HTTP/TCP"| NPM
end
%% NOEUD PROXMOX OLD
subgraph NodeOld["🖥️ NŒUD PROXMOX 2 : 'old' (Développement, Données, Multimédia)"]
GITEA["🐙 LXC 119 : gitea<br/>(Dépôt Git & CI/CD Actions Runner)"]:::lxc
PG["🗄️ LXC 114 : postgresql<br/>(Base de Données Relationnelle)"]:::lxc
DOCK["🐳 LXC 117 : dockage<br/>(Gestionnaire Conteneurs Docker)"]:::lxc
%% Services connectés au Switch 2U
JELLY["🎬 LXC 105 : jellyfin<br/>(Serveur Streaming Multimédia)"]:::lxc
IMMI["📸 LXC 118 : immich<br/>(Sauvegarde & Galerie Photos IA)"]:::lxc
NEXT["📁 LXC 126 : alpine-nextcloud<br/>(Stockage Fichiers Cloud)"]:::lxc
GITEA -->|"Build Astro & Sync Rsync"| NPM
JELLY -.->|"Sondé par"| KUMA
IMMI -.->|"Sondé par"| KUMA
NEXT -.->|"Sondé par"| KUMA
NPM -->|"Proxy Pass"| JELLY
NPM -->|"Proxy Pass"| IMMI
NPM -->|"Proxy Pass"| NEXT
end
%% NOEUD PROXMOX DELL990
subgraph NodeDell["🖥️ NŒUD PROXMOX 3 : 'dell990' (IoT, Utilitaires & Télémétrie)"]
HAOS["⚡ VM 150 : haos-16.3 (Home Assistant)<br/>(Télémétrie Onduleur UPS Watts/Volts)"]:::vm
OCTO["🖨️ LXC 133 : octoprint<br/>(Contrôleur Impression 3D)"]:::lxc
EXCALI["📐 LXC 102 : excalidraw<br/>(Tableau Blanc Numérique)"]:::lxc
HAOS -.->|"Métriques Watts"| NPM
OCTO -.->|"Sondé par"| KUMA
NPM -->|"Proxy Pass"| EXCALI
end
class WAN wan;
class NodeRouter routerNode;
class NodeOld oldNode;
class NodeDell dellNode;