Skip to content
Étude de cas · Homelab Platform (projet interne) 2026

Une plateforme IA privée, conçue pour être ennuyeuse.

Une plateforme IA privée à 15 conteneurs sur deux nœuds Proxmox, provisionnée par Ansible aujourd'hui, avec une migration Terraform en cours.

15

Conteneurs LXC

Oui

GPU passthrough

Ansible (Terraform en cours)

Provisionnement

Contexte

La plateforme qui héberge tout le reste de ce portfolio. Deux mini PC dans un rack 4U tirent environ 50 W au repos, font tourner 15 conteneurs LXC entre eux, et servent chaque projet interne que je livre, la pipeline d’actualités FB-Media, la stack vidéo ContentForge, le tableau de bord de monitoring live, le service de notifications homelab.

Elle existe parce que les factures cloud s’accumulent vite pour des projets pas encore finis, et parce qu’un studio d’une personne est son propre client le plus exigeant. La plateforme doit être ennuyeuse : prévisible, reproductible, récupérable depuis une seule commande.

Brief

  • Cluster à deux nœuds sur du matériel grand public (pas d’équipement enterprise).
  • Tous les services en conteneurs LXC, pas de surcharge kernel par VM.
  • GPU passthrough vers le conteneur d’inférence, service LLM local sans host GPU séparé.
  • Reconstruction depuis une seule commande : on perd un nœud, on lance un playbook, on récupère le nœud.
  • Services publics derrière Cloudflare ; services privés sur un LAN flat.
  • Budget de puissance au repos sous 60 W combiné.

Architecture

Deux nœuds Proxmox :

  • Nœud services (pve-desktop), 15 conteneurs sur le sous-réseau services. Héberge le tableau de bord (CT 208), le fan-out de notifications (CT 209), le toolchain interne de type Git, et l’infrastructure partagée (Pi-hole DNS, WireGuard, Traefik, Prometheus, Grafana).
  • Nœud labo (pve-asus), moins de conteneurs, mais plus puissants, pour l’inférence et l’expérimentation. Héberge le conteneur Ollama avec GPU passthrough avec une carte NVIDIA pour le service LLM local.

Les deux nœuds sont provisionnés end-to-end avec Ansible. L’arbre de playbooks couvre : configuration kernel + Proxmox, provisionnement de conteneurs par host, fichiers de rôle spécifiques au service (un par CT), règles firewall au niveau host (nftables), gestion de certificats TLS, et synchronisation DNS Cloudflare.

Une migration Terraform est en cours, l’objectif est de remplacer les playbooks de provisionnement Ansible par des modules Terraform pour les primitives de cloud-shape (conteneurs, réseaux, certificats) tout en gardant Ansible pour la configuration des services dans les conteneurs. Le pattern est honnête : infrastructure déclarative là où Terraform convient, configuration impérative là où Ansible gagne déjà.

Résultats

  • 15 conteneurs LXC tournant sur deux nœuds Proxmox.
  • GPU passthrough vers le conteneur d’inférence, même station de travail qui fait tourner le sidecar du tableau de bord.
  • Puissance au repos : ~50 W combiné, mesuré à la prise.
  • Provisionnement depuis une seule commande, ansible-playbook site.yml reconstruit n’importe quel nœud depuis le bare metal en moins de 20 minutes.
  • Cinq services publics derrière Cloudflare avec des certificats *.bytecraftmedia.eu auto-renouvelés.
  • Zéro panne non planifiée depuis que les playbooks Ansible ont atteint la parité.

Captures

[FILL: remplacer par des captures anonymisées de l’UI web Proxmox montrant les deux nœuds, l’arbre d’inventaire Ansible, et un panneau Grafana montrant les métriques au niveau host. Éviter les captures de tout service orienté client tournant sur la plateforme.]

La suite

Trois éléments sur la liste de la prochaine itération :

  1. Verrouiller la structure des modules Terraform avant de démarrer un troisième nœud. Adapter l’inventaire Ansible en pleine migration a été une semaine de rework évitable, le second nœud aurait été plus rapide si la séparation Terraform/Ansible avait été décidée d’emblée.
  2. Promouvoir les règles firewall des nftables au niveau host vers une source-of-truth gérée centralement. Actuellement chaque nœud a son propre ruleset ; un petit rôle Ansible + une variable Terraform réduiraient le drift.
  3. Réplication off-rack des snapshots, actuellement les snapshots de conteneurs de la plateforme vivent sur les mêmes nœuds qui les produisent. Un petit job mensuel qui envoie des snapshots compressés vers un bucket Cloudflare R2 fermerait le gap de disaster-recovery sans ajouter de matériel.

The tech

Technologies utilisées

  • Proxmox
  • Ansible
  • Terraform
  • Docker
  • LXC
  • NVIDIA GPU passthrough
  • Ollama
  • Cloudflare

Ce que je ferais autrement

Verrouiller la structure des modules Terraform avant de démarrer le second nœud, adapter l'inventaire Ansible en pleine migration a été une semaine de rework évitable.

Vous voulez quelque chose de similaire pour votre équipe ?

Appel de découverte de 30 minutes. Aucun pitch deck. On parle de ce que vous voulez livrer, de ce qui bloque, et si je peux aider. Si oui, vous obtenez un devis fixe sous une semaine.