Architecture d’un home lab

Les choix de l’architecte

Pour réaliser ce home lab à peu de frais, je me suis imposé des contrainte pour sa constructions. Tous les systèmes ou logiciel sont open sources ou sous licence ouverte et répondent aux exigences d’une entreprise (sécurité, scalabilité, charge, …) mais tiennent dans un environnement limité en ressources.

Les contraintes matériels

Le matériel est un PC de type Barebone Industriel Fanless avec processeur N100 12th Gen (4 VCPU 3.40 GHz, 4 Threads, VT-x, VT-d) avec 16Go de RAM, 1 GPU Intel® UHD Graphics 750 Mhz 24 Threads) 2 ports réseau ,2 ports COM, 2 HDMI, 4 ports USB, Wifi 5 (AC) 2 Antennes ,BT 4.2. Le matériel aura coûté 175€ en 2023.

Les contraintes réseaux

Les deux ports réseaux 1Gb sont utilisé pour un pour la connexion à la box et l’autre vers des équipements internes.

Les contraintes logiciels

Pour pouvoir simulés plusieurs machines, je me suis tourné vers la solution Proxmox. Cette solution d’entreprise propose une version communautaire pour une utilisation personnel. La solution est basé sur un linux débian. Elle propose des conteneurs LXC (KVM) ou des machines virtuel (qému).

Les contraintes d’environnements

En raison du peu de CPU, un seul environnement de développement et de productions cohabitent.

Consommation / impact environnementale

Évidemment tout ceci a un coût, la consommation du barbone est de 26w ce qui est peu car peu puissant mais suffisant pour quelque tests.

Schéma d’architecture du home lab

Pour la démonstration, on crée deux conteneurs LXC (KVM). Un pour le firewall (pfsense) et un conteneur pour portainer.io (solution basé sur docker). Avec docker un conteneur pour le reverse proxy (ici Ngnix Proxy Manager) pour permettre d’accéder au autre conteneur docker.

Cette solution est la plus minimalistes et s’adaptera facilement au toute petite configuration matériel.

Avec un configuration plus importante, on peut remplacer pfsense par une solution Fortinet (licence de démonstration 4 connexion simultanés) et docker par kubernetes/docker.