FrançaisEnglish

Homelab

L'ensemble des services conteneurisés derrière un proxy inverse unique, avec authentification centralisée, cache HTTP et supervision.

Mise en contexte

L'infrastructure est déclarée en Compose sur un serveur Debian provisionné par Ansible : l'entrée du réseau se reconstruit à partir des seuls fichiers de configuration. Une partie des services est ouverte à des utilisateurs externes, ce qui impose disponibilité, authentification et supervision.

Chemin d'une requête

Topologie de l'infrastructure.

  1. Le navigateur résout le domaine chez Cloudflare, puis atteint Traefik en HTTPS ou HTTP/3.
  2. Traefik termine le TLS avec un certificat wildcard renouvelé automatiquement.
  3. CrowdSec analyse chaque requête en direct et interroge son moteur de décision, qui répond par le passage, un CAPTCHA ou un blocage.
  4. Les requêtes acceptées traversent le filtrage applicatif, le rate limiting et les security headers.
  5. Le routage se fait par domaine, et l'authentification est déléguée à Authelia en SSO avec TOTP.
  6. Une partie du trafic passe par un cache HTTP avant les services.
  7. Les services conteneurisés sont répartis sur des réseaux Docker isolés.

Technologies et outils utilisés

Entrée & sécurité du réseau

Middlewares

Le routage se fait par domaine derrière un wildcard renouvelé en DNS-01, et chaque requête traverse une analyse de sécurité avant d'atteindre un service.

Cache & réseau

Le DNS est configuré avec Cloudflare, et un VCL personnalisé exclut le trafic authentifié du cache tout en gardant un TTL long sur les assets.

Authentification & identité

Traefik délègue l'authentification à Authelia par ForwardAuth, avec refus par défaut et TOTP sur les services sensibles.

Provisionnement

Un playbook rejouable décrit la configuration de l'hôte et les stacks Docker, vérifiable en dry run avant d'être appliqué.

Exploitation

Netdata collecte les métriques et Uptime Kuma sonde les services de l'extérieur, pendant que restic pousse des snapshots chiffrés hors site.

Expérimentations (hors production)

Un cluster Kubernetes en HA sur Proxmox VE et Ceph, et un mesh WARP avec politiques d'accès par application, montés par expérimentation.

Défis rencontrés

  • Isoler les services par réseaux Docker sans casser les dépendances entre conteneurs.
  • Ordonner les middlewares pour que l'authentification, le cache et l'analyse de sécurité se composent sans se contredire.
  • Passer à des certificats wildcard validés par DNS, pour ne plus exposer de chemin de validation HTTP à l'extérieur.

Aperçu du projet

Mon serveur principal Dell R710
Mon panneau de contrôle Grafana
Serveur rack R710
Dashboard Grafana