Nantes, France
Enzo Peigné — Portfolio · Ingénieur Cybersécurité —
Projet · Infrastructure

Infrastructure Sécurisée
VPS & Homelab

Architecture multi-services en production : reverse proxy durci, SSO Authentik, monitoring Wazuh + Zabbix.

Au démarrage du projet, l’objectif était simple : héberger un portfolio personnel afin d’avoir une vitrine professionnelle. Rapidement, l’envie de faire les choses “bien” a pris le dessus : pas de service exposé directement, monitoring proactif, documentation complète. Le projet a évolué en une infrastructure multi-services robuste, avec une approche zero-trust et une discipline de maintenance rigoureuse.

Le résultat aujourd’hui : deux VPS en production, un homelab Proxmox local, 22 conteneurs orchestrés, monitoring complet via Wazuh + Zabbix, SSO Authentik en frontal sur certains services, et une documentation BookStack qui suit chaque modification. Tout est versionné, reproductible.

Contexte

La situation initiale était minimaliste : un serveur Plesk pour le portfolio sans monitoring, sans documentation ni processus de maintenance formalisé. Avec le temps, la complexité a augmenté : besoin de services supplémentaires (serveur mail, monitoring, exposition de projets personnels), volonté d’apprendre les bonnes pratiques d’infrastructure sécurisée, et surtout besoin de fiabilité et de flexibilité.

De là est née la volonté de construire une infrastructure plus développée, tout en gardant à l’esprit les principes de sécurité, de maintenabilité, et de documentation. Chaque service ajouté devait suivre une checklist rigoureuse : architecture définie, configuration versionnée, monitoring intégré, et documentation mise à jour.

Objectifs

Cinq axes ont structuré le projet dès le départ :

  • Centralisation — tous les services personnels sur un ensemble cohérent de machines, avec une topologie réseau claire.
  • Reproductibilité — tout doit pouvoir être reconstruit à l’identique depuis zéro, à partir de la documentation et des scripts de déploiement.
  • Monitoring continu — SIEM, métriques, et alertes. Aucune panne silencieuse.
  • Authentification fédérée — un seul login pour tous les services internes, MFA obligatoire.
  • Documentation vivante — chaque service a sa fiche dans BookStack, mise à jour à chaque changement.

Architecture

L’infrastructure est répartie sur trois nœuds : un VPS principal hébergeant les services principaux, un VPS secondaire dédié au SSO, et un homelab Proxmox local servant de sandbox, serveur de domotique et monitoring des autres machines. Un principe de segmentation stricte est appliqué : les services exposés au public passent par les VPS, les services internes restent dans le homelab, et les accès sont gérés via Authentik.

Couche réseau

Aucun port n’est exposé directement sur Internet. Cloudflare est utilisé pour le périmètre : DNS autoritaire, WAF, et surtout tunnel sortant pour le homelab. Les services publics sont exposés via Nginx Proxy Manager, avec des règles de sécurité définies sur Cloudflare (WAF, rate limiting, etc.). Les services internes sont accessibles uniquement via le tunnel Cloudflare, avec Authentik en proxy SSO pour l’authentification.

Les services internes ne nécessitant pas d’exposition directe : accès via VPN uniquement via un réseau mesh Tailscale ou en local. Les VPS sont configurés pour refuser tout trafic entrant non sollicité, et les accès SSH sont limités à des IPs spécifiques avec MFA.

Couche application

Chaque service vit dans son propre conteneur Docker. Les évolutions des versions des différents services sont suivies via Diun, qui surveille les mises à jour des images et déclenche des notifications. Les mises à jour des VPS sont, quant à elles, gérées via un workflow n8n, avec intégration dans Slack pour lister les mises à jour disponibles, les valider, et déclencher le processus de mise à jour.

Couche observabilité

Wazuh agrège les logs de tous les conteneurs et détecte les patterns suspects : brute-force SSH, tentatives d’authentification Authentik anormales, modifications de fichiers critiques. Les alertes sont remontées directement dans Slack pour centraliser la surveillance.

Zabbix collecte les métriques système et applicatives (CPU, RAM, disque, réseau) avec des seuils d’alerte qui déclenchent des notifications push sur Slack. Un dashboard centralisé permet de visualiser l’état de l’infrastructure en temps réel.

Kener est utilisé pour monitorer l’état de santé des services exposés, avec des checks réguliers et des alertes en cas de détection d’anomalies. Une page de status est également exposée publiquement pour les visiteurs des services, indiquant l’état de santé global de l’infrastructure. Les incidents et les maintenances planifiées y sont également annoncés.

La discipline ici n’est pas de tout faire parfaitement, mais de tout faire de la même façon. Un nouveau service est ajouté en suivant la même checklist que le précédent.

Réalisations

  • SSO dès que possible : un seul login les différents services. MFA TOTP obligatoire. Gestion centralisée des utilisateurs et des permissions. Authentik a été un choix clé pour simplifier la gestion des accès tout en renforçant la sécurité.
  • Monitoring proactif : depuis le déploiement, aucune panne détectée d’abord par un utilisateur.
  • Documentation structurée : 60+ pages BookStack couvrant l’architecture globale, les procédures de maintenance, et les runbooks d’incident pour chaque service.
  • Inventaire réseau complet : cartographie de toutes les machines, services, ports, et flux réseau via Netbox. Mise à jour à chaque changement d’architecture.

Stack technique détaillée

Cloudflare : périmètre et ingress. DNS autoritaire, WAF, et tunnel sortant. Aucun port entrant ouvert sur les VPS.

Nginx Proxy Manager : reverse proxy. Gestion des certificats TLS, routage basé sur les hôtes, et règles de sécurité. Intégration avec Cloudflare pour le WAF.

Authentik : SSO et IAM. Authentification fédérée OIDC pour tous les services internes. Une seule paire identifiant/mot de passe, MFA TOTP obligatoire, et gestion centralisée des utilisateurs et des permissions.

Docker Compose : orchestration. Un fichier compose.yml par service, versionné. Diun surveille les mises à jour des images et déclenche des notifications pour les mises à jour disponibles.

Wazuh : SIEM. Collecte des logs des machines. Détection automatique des brute-force et des patterns d’attaque connus. Alertes remontées dans Slack pour une surveillance centralisée.

Zabbix : monitoring système. Métriques CPU/RAM/disque/réseau, état des conteneurs, alertes sur seuils, notifications Slack.

Kener : monitoring applicatif. Checks réguliers sur les endpoints exposés, alertes en cas d’anomalies, page de status publique.

Netbox : inventaire réseau. Cartographie de toutes les machines, services, ports, et flux réseau. Mise à jour à chaque changement d’architecture.

Stalwart : serveur mail auto-hébergé. Gestion SMTP/IMAP pour les domaines personnels.

BookStack : documentation interne. Wiki hiérarchisé : chaque service a sa page d’architecture, ses runbooks, et sa procédure de mise à jour.

Proxmox VE : hyperviseur homelab. VMs et CTs pour les services internes, les environnements de test, et la domotique. Intégration avec Cloudflare Tunnel avec une couche Cloudflare Access pour sécuriser les accès sensibles.

Résultats

L’infrastructure tient en production depuis plus d’un an sans interruption planifiée non maîtrisée. L’uptime mesuré est de 99,98 % sur 12 mois glissants. Les incidents détectés ont été gérés rapidement grâce au monitoring proactif, avec une résolution en moins de 30 minutes dans la majorité des cas. La documentation complète a permis de maintenir une discipline lors de l’ajout de nouveaux services ou lors de l’évolution de l’architecture, assurant une cohérence et une maintenabilité à long terme.

Ce que j’en retire

Le plus grand apprentissage n’a pas été technique : il a été méthodologique. Documenter chaque action et besoin avant, pendant et après le déploiement demande du temps et des efforts, mais paye à chaque incident, chaque mise à jour ou évolution, chaque nouveau service. La checklist d’ajout d’un service est devenue la colonne vertébrale du projet.

Sur le plan technique, le couple Cloudflare Tunnel + Authentik a dépassé les attentes en termes de simplicité opérationnelle. Plus de gestion de certificats Let’s Encrypt, plus de port forwarding, et une sécurité renforcée grâce aux règles de sécurité Cloudflare et à l’authentification fédérée. De plus, l’intégration de Cloudflare Access pour les services sensibles du homelab a permis de renforcer la sécurité sans complexifier l’accès.

Le monitoring proactif avec Wazuh et Zabbix a également été un élément clé pour maintenir la fiabilité de l’infrastructure. Avoir une visibilité complète sur les machines et les services, avec des alertes en temps réel, a permis de détecter et résoudre les incidents avant même qu’ils n’affectent les utilisateurs.