AperçuMatérielDéploiementServicesDonnées

Mon homelab - Présentation

Qu'est-ce qu'un homelab ?

Avoir un homelab, c'est tellement de choses à la fois pour un informaticien. C'est une passion, un lieu d'expérimentation, un moyen d'héberger des services et regagner le contrôle sur ses données personnelles... Et bien sûr, c'est un excellent moyen de formation.

Mettre en place une telle infrastructure nous confronte aux mêmes problématiques qu'une entreprise:

  • Gérer l'investissement matériel: Les ressources matérielles peuvent être couteuses, il s'agit de réfléchir à son investissement sur le long terme et construire un ensemble hardware cohérent.
  • Organiser de l'usage des ressources: Pour un homelab conséquent, cela demande d'utiliser un hyperviseur (ESXi ou Proxmox), et de réfléchir à son organisation.
  • Industrialiser le déploiement et des mises à jour du système et des logiciels: Un environnement logiciel a une durée de vie limité, il convient donc de le mettre à jour régulièrement.
  • Monitorer ses services: Comment surveiller le fonctionnement des applications, et notre usage hardware ?
  • Mettre en place un système robuste de back-up: Il s'agit d'une assurance critique face au risque de panne matérielle ou de cyberattaque. Mettre en place un système de back-up robuste à l'échelle demande une certaine organisation.
  • Cybersécurité: Les données personnelles et les ressources matérielles ont de la valeur, et il est nécessaire de se protéger son système face à des attaques externes.

Mon homelab

J'ai commencé à construire mon homelab en 2022, le jour où je me suis dit "j'en ai marre que mon PC de dev et mon laptop soient lourds et puissants, je préfère réunir la puissance de calcul à un même endroit et gagner en mobilité".

Quatre ans plus tard, voilà où j'en suis:

Matériel:

pc-dev-malrickpvepve-2
RôlePoste de développementNœud Proxmox principalNœud Proxmox secondaire
CPUAMD Ryzen 7 5700G (8c/16t, 3.8 GHz)AMD Ryzen 9 9950X3D (16c/32t, 5.8 GHz)Intel Core i7-10700K (8c/16t, 5.1 GHz)
RAM32 Go64 Go32 Go
GPURTX 3060 TiRTX 5090 + RTX 5060 TiRTX 3090
Disque 1Samsung 970 EVO Plus 2 TB (NVMe)Samsung 9100 PRO 4 TB (NVMe)Kioxia 1 TB (NVMe)
Disque 2Crucial E100 2 TB (NVMe)Seagate 8 TB (HDD SATA)
Disque 3Toshiba 4 TB (HDD SATA)
Disque 4WD 8 TB (HDD SATA)

Hyperviseur et organisation des ressources:

Après avoir essayé ESXi, je me suis finalement orienté vers Proxmox, j'ai actuellement un cluster de 2 noeuds.

Je provisionne un petit nombre de VMs, auxquelles je donne accès aux cartes graphiques avec du GPU-Passthrough.

Déploiement et organisation logicielle:

Pour mon architecture, j'ai dissocié les applications, leur configuration, et leur état. C'est à dire que pour déployer l'architecture, une unique commande lance séquentiellement:

  • La création des VMs avec Terraform (ce provider)
  • Le provisioning des VMs avec Ansible (installation de Docker, drivers Nvidia, attachement des disques persistants, installation des certificats...)
  • Le déploiement des stack docker-compose sur les VMs

Cela rend le système bien plus robuste. L'état de l'environnement n'est plus un joyau sacré dont il faut prendre soin, c'est une ressource disposable que l'on peut ajuster en modifiant une valeur dans un fichier de configuration.

Services hébergés:

Ce sont les services qui sont véritablement hébergés dans l'infra:

  • Des services IA / LLM: vLLM, Llama.cpp, UI LLM, Qdrant pour les embeddings, assistant vocal...
  • DealTracker: C'est ma production à moi. Il s'agit de collecter de l'information et de l'enrichir avec du Machine Learning.
  • Des services média: Jellyfin, Navidrome, Kavita, Paperless-ngx...
  • Des utilitaires de gestion d'infra: GitLab pour héberger le code, S3 pour héberger les datasets / modèles de ML.

Gestion du monitoring:

Pour monitorer mon infra, je me sers du combo Prometheus / Grafana.

Système de back-up:

Quitte à utiliser Proxmox, je me suis orienté vers PBS (Proxmox Backup Server), et j'applique la règle des 3-2-1 (3 copies des données, 2 différents endroits, un back-up hors site)