Article

Qu'est-ce que je roule dans mon Homelab ? Le tour de mes outils auto-hébergés

Un tour complet des outils et services que j'exécute dans mon Homelab, organisés par couche : infrastructure, réseau & sécurité, dev & AI, monitoring et multimédia, le tout piloté depuis mon dashboard Homepage et déployé en GitOps avec Flux.

Contexte

Je suis convaincu que le meilleur moyen d’apprendre l’infrastructure, c’est d’en construire une. C’est exactement la philosophie de mon Homelab : appliquer à la maison ce que je fais en entreprise, avec des outils open-source, pour tester, casser et réparer.

Au fil du temps, la liste des services s’est structurée en couches bien distinctes : infrastructure, réseau & sécurité, développement, monitoring et multimédia. Et un jour, j’ai réalisé qu’il me fallait un point d’entrée unique pour tout piloter. Alors j’ai testé plusieurs solutions avant de choisir Homepage comme mon dashboard central.

Watch the video

Mon Homelab n’est pas un serveur “qui tourne dans un coin”. Tout est versionné dans mon monorepo que je vais opensource bientôt, provisionné avec Terraform/OpenTofu et Ansible, et déployé en GitOps avec Flux CD.

Objectif

Dans cet article, je vous propose une visite guidée de mon Homelab. Après lecture, vous saurez :

  • Comment l’infrastructure est organisée (virtualisation, Kubernetes, GitOps)
  • Quels outils réseau, sécurité et développement je self-héberge, et dans quel but
  • Quelle stack d’observabilité j’utilise pour tout surveiller
  • Comment tous ces services sont exposés et sécurisés

C’est un tour d’horizon, pas un tutoriel pas-à-pas : une photo de ce que je roule concrètement, avec les liens utiles pour approfondir chaque outil.

Une vue d’ensemble

Avant d’entrer dans le détail, voici comment s’organise mon Homelab :

mindmap
  root((Homelab))
    Dashboard
      Homepage
    Infrastructure
      Proxmox VE (5 nœuds + PBS)
      Kubernetes / Talos Linux
      Flux CD + Argo CD
      Longhorn
      TrueNAS
    Réseau & Sécurité
      OPNsense
      Traefik
      Pi-hole
      Authentik
      OpenBao + Infisical
    Dev & AI
      Forgejo
      Backstage
      n8n + Kagent + OpenCode
    Monitoring
      Prometheus + Grafana
      Alertmanager
      Uptime Kuma
    Multimédia
      Navidrome
      Immich
      Audiobookshelf

Le point d’entrée : Homepage

Homepage est un dashboard self-hosté, léger et entièrement configurable en YAML. C’est la porte d’entrée de tout mon Homelab.

Il me permet de :

  • Regrouper tous mes services par onglets : Infrastructure, Network & Security, Dev & AI, Monitoring, Multimédia, External Services
  • Afficher des widgets en temps réel : ressources CPU/mémoire/disque, date, recherche
  • Accéder à chaque service en un clic, avec le statut de disponibilité

Infrastructure

La virtualisation : Proxmox VE

Proxmox VE est la base de mon Homelab. Un cluster de cinq nœuds dont trois sont actifs en permanence (PVE1, PVE2, PVE3), avec un Proxmox Backup Server dédié aux sauvegardes.

Les deux nœuds restants sont démarrés à la demande : une CronJob Kubernetes envoie un Wake-on-LAN (WoL) pour les réveiller quand j’en ai besoin, et une autre les éteint automatiquement via un schedule. Objectif : économiser la consommation électrique quand la charge ne les justifie pas.

Tout le provisioning est fait en Infrastructure-as-Code avec Terraform/OpenTofu, et la configuration avec Ansible.

Le système du cluster : Talos Linux

Au-dessus de Proxmox, mon cluster Kubernetes tourne sur Talos Linux, une distribution immutable conçue exclusivement pour Kubernetes.

Le GitOps : Flux CD et Argo CD

Pour appliquer les changements, j’utilise le GitOps : Flux CD réconcilie l’état du cluster avec ce qui est déclaré dans mes dépôts git. Un git push suffit pour déployer, sans commande kubectl apply à la main. J’utilise aussi Argo CD, mais plutôt pour garder la main sur le cluster et faire quelques petites expériences.

Autour de ça, j’ai aussi :

  • Headlamp : une UI moderne pour inspecter le cluster
  • Flux Web : l’interface web de Flux CD pour visualiser les réconciliations
  • AKHQ : l’interface de pilotage de mon cluster Kafka, déployé avec l’opérateur Strimzi

Le stockage : TrueNAS, Longhorn, RustFS

Le stockage est organisé en plusieurs niveaux :

  • TrueNAS pour le stockage réseau classique
  • Longhorn comme stockage distribué natif Kubernetes
  • RustFS, un stockage objet compatible S3, décliné en deux pools (un rapide et un lent), selon l’usage des applications

Et PgAdmin pour administrer les bases PostgreSQL.

Réseau & Sécurité

Le réseau : OPNsense, routeurs, Traefik

En basse couche, le réseau est protégé par un pare-feu OPNsense, complété par deux routeurs. Pour exposer les services, Traefik fait office de reverse proxy et de load balancer.

Le DNS est géré par Pi-hole, que j’utilise aussi comme bloqueur de publicités au niveau du réseau.

L’identité et le SSO : Authentik

Authentik est mon Identity Provider. Il centralise le SSO de tous les services self-hébergés et gère les accès via un proxy OAuth. Un seul compte, une seule session, des politiques d’accès granulaires.

Les mots de passe : Vaultwarden

Vaultwarden, l’implémentation légère et open-source de Bitwarden, héberge mon gestionnaire de mots de passe. Synchronisation multi-appareils sans dépendre d’un service cloud.

Les secrets : OpenBao et Infisical

Côté secrets, j’utilise deux outils complémentaires :

  • OpenBao, le fork communautaire de Vault, pour le PKI, les secrets dynamiques et l’intégration avec Kubernetes via External Secrets
  • Infisical pour la gestion des variables d’environnement de mes outils IaC (Terraform, Ansible) et de mes pipelines CI/CD

Je détaille la migration de direnv vers Infisical dans mon article : Plus de .envrc, infisical mon seul gestionnaire de secrets.

Dev & AI

Hébergement de code source et CI : Forgejo

Forgejo héberge mes dépôts git et mes pipelines CI/CD. C’est le cœur de mon workflow GitOps : toute la configuration du Homelab, y compris celle de Homepage, vit dans Forgejo.

Le portail développeur : Backstage

Backstage est mon developer portal. Il sert de catalogue de services : aujourd’hui, avec l’IA qui est capable de générer des composants, honnêtement je ne m’en sers pas.

Les flux RSS

J’ai vibecodé une application qui me permet de centraliser mes flux RSS, sans tracker ni algorithme. Un petit plaisir de liberté numérique que je lis quotidiennement pour suivre les dernières actualités.

La documentation : Mombedocs

Mombedocs est généré avec Zensical.

L’IA : n8n, Kagent, OpenCode

Et bien sûr, la partie la plus récente et la plus amusante :

  • n8n pour automatiser mes workflows
  • Kagent, un agent IA intégré à Kubernetes pour l’exploitation du cluster
  • OpenCode, mon assistant de codage que j’utilise quotidiennement via l’option web que je self-host.

L’IA auto-hébergée est devenue un vrai sujet de mon Homelab : j’utilise au quotidien OpenCode/Pi pour coder et Kagent pour interagir avec mon cluster.

Monitoring

La stack observabilité : Prometheus, Grafana, Alertmanager

Sans observabilité, on opère à l’aveugle. Ma stack est classique mais complète :

La supervision : Uptime Kuma

Uptime Kuma surveille la disponibilité de tous mes services, avec des notifications immédiates en cas de panne. C’est la couche “à l’extérieur du cluster” qui me dit si le reste fonctionne.

Multimédia

La musique : Navidrome

Navidrome me permet de streamer ma bibliothèque musicale en self-hosting, avec une interface moderne.

Les photos : Immich

Immich est mon alternative à Google Photos : sauvegarde, recherche et reconnaissance automatique des photos, le tout chez moi.

Les audiolivres : Audiobookshelf

Audiobookshelf centralise ma bibliothèque d’audiolivres et de podcasts, synchronisée entre tous mes appareils.

Ressources utiles

Conclusion

Mon Homelab est une architecture en couches, pas une pile de services : chaque outil répond à un besoin et chaque couche est déployée en GitOps. Le dashboard Homepage n’est que la partie visible d’un ensemble pensé comme un environnement professionnel.

J’ai commencé petit avec un simple serveur Docker, puis j’ai tout migré vers Kubernetes au fil du temps. Chaque service ajouté a enrichi l’ensemble sans jamais le rendre ingérable.

Cet article est sous licence CC BY 4.0 par l'auteur.