Après avoir exploré un premier VPS puis un cluster K3s, j’ai fait évoluer mon infrastructure vers un homelab physique plus complet et plus adapté à mes besoins quotidiens.
Aujourd’hui, ce serveur héberge une trentaine de services conteneurisés : multimédia, cloud personnel, outils d’automatisation et supervision. Mon but était d’avoir un environnement simple à maintenir, sécurisé de l’extérieur et monitoré en continu.
Vue d’ensemble des flux
flowchart TD
accTitle: Flux réseau et supervision du homelab
accDescr: Les requêtes HTTPS traversent Cloudflare, Traefik et les contrôles de sécurité avant d'atteindre les services Docker. La supervision centralise métriques et journaux puis envoie les alertes sur Discord.
Internet["Utilisateurs Internet"] -->|HTTPS| Gateway["Cloudflare DNS + Traefik v3
TLS et routage"] CrowdSec["CrowdSec
blocage des IP hostiles"] -.->|filtrage| Gateway Gateway -->|accès public| Public Gateway -->|streaming| Media Gateway -->|forward auth| Authelia["Authelia
SSO et 2FA"] --> Admin Public["Web et cloud
OnlyHub, Portfolio, Nextcloud"] Media["Multimédia
Plex, Komga, téléchargements via Gluetun"] Admin["Interfaces sensibles
Grafana, Dockge, Servarr"] Public & Media & Admin -.->|métriques et journaux| Observability["Prometheus + Loki
Grafana et alertes Discord"]
TLS et routage"] CrowdSec["CrowdSec
blocage des IP hostiles"] -.->|filtrage| Gateway Gateway -->|accès public| Public Gateway -->|streaming| Media Gateway -->|forward auth| Authelia["Authelia
SSO et 2FA"] --> Admin Public["Web et cloud
OnlyHub, Portfolio, Nextcloud"] Media["Multimédia
Plex, Komga, téléchargements via Gluetun"] Admin["Interfaces sensibles
Grafana, Dockge, Servarr"] Public & Media & Admin -.->|métriques et journaux| Observability["Prometheus + Loki
Grafana et alertes Discord"]
Choix techniques et organisation
1. Pourquoi Docker et Dockge ?
Même si K3s était très formateur, gérer un cluster Kubernetes complet pour un serveur unique demandait trop de maintenance.
- J’utilise Dockge pour gérer mes stacks Docker Compose : c’est léger, chaque stack est isolée dans son dossier avec son propre
docker-compose.yml, et les mises à jour se font en un clic. - Chaque stack a son propre réseau virtuel Docker étanche, et seuls les services web sont raccordés au réseau commun
traefik-net.
2. Sécurisation des accès (Traefik, CrowdSec, Authelia)
Tous les services sont accessibles avec des sous-domaines en HTTPS propre, sans ouvrir de ports inutiles :
- Traefik v3 : Sert de reverse-proxy unique et génère automatiquement les certificats SSL wildcard Let’s Encrypt via l’API Cloudflare.
- CrowdSec : Analyse en continu les requêtes qui arrivent sur Traefik. Si une adresse IP tente des attaques par force brute ou scanne le serveur, elle est immédiatement bannie au niveau du proxy.
- Authelia : Ajoute une couche d’authentification centralisée (SSO) avec validation double facteur (2FA) sur toutes les applications sensibles (dashboards d’admin, monitoring).
- Gluetun VPN : Pour les conteneurs qui ont besoin de masquer leur trafic, tout passe à travers Gluetun avec un kill-switch strict (si la connexion VPN coupe, le trafic s’arrête net).
3. Supervision proactive et alertes
Pour surveiller la santé de l’infrastructure en temps réel :
- Prometheus + Node Exporter + cAdvisor : Récupèrent l’utilisation du processeur, de la mémoire vive et l’état de l’ensemble des conteneurs.
- Loki & Promtail : Centralisent les journaux de logs.
- Grafana : Regroupe toutes les métriques sur des tableaux de bord clairs et synthétiques.
- Alertes Discord : Si un conteneur plante ou qu’un disque dur dépasse 85% d’utilisation, une notification détaillée est immédiatement envoyée sur mon serveur Discord.
