Pourquoi ?
Et oui, pourquoi ?
Pourquoi j’ai monté un homelab ?
Il faut savoir que dans mon parcours informatique, j’ai connu plusieurs époques :
- MO5, dans le club informatique de mon village (à 9 ans…)
- PCW9512, l’ordinateur de mes parents (pour le travail)
- 486DX2, toujous à mes parents pour la même raison
Et ensuite des machines à moi - majoritairement des Intel - comme des Pentium, I7…
J’ai aussi eut le plaisir de m’amuser avec des Raspberry PI (2, 3+, 4).
Sur toutes ces machines, j’ai toujours eut une forte apétance pour l’aspect système.
Tout ce qui touche à “ya quoi dedans et comment ça tourne”.
Avec toujours une recherche de l’optimisation. En passant de QEMM386 à du sysctl.conf tuné.
Un jour, à force de jouer avec mes RPi, je suis arrivé à les pousser à bout et malgré les kernel perso’ et l’overclocking poussé il n’y avait plus moyen d’avancer. C’est ainsi que j’ai décidé de remonter une vraie machine dédiée à mes activités curiositiques.
Oui, donc ?
Et bien ce homelab me sert, comme son nom l’indique, de laboratoire à la maison.
J’ai, dès le départ, décidé de partir sur un hyperviseur Proxmox que j’ai installé en passant par l’iso officielle.
Il a fallut découvrir ce soft, le comprendre, le prendre en main pour enfin arriver à en faire quelque chose.
La courbe d’apprentissage pour un usage standard est clairement facilité par l’interface web qui est d’une rare efficacité. (sincèrement c’est possible de ne pas lancer un ssh pour l’administrer)
J’ai commis l’erreur de l’installer avec un système de fichier BTRFS sur l’hôte et sur les machines virtuelles.
Autant dire que sur des disques grand publique ce fut une erreur. Crash disque, remplacement avec réinstallation totale en EXT4 fut la meilleur décisions prise sur ce point.
Et du coup, j’en fais quoi ?
Et bien c’est relativement simple, la liste des outils déployés sur les différentes vm sont les suivants :
vm | service | description |
izanagi | ansible | vm dédiée à mes explorations d’Ansible, le tout sous Gitea |
omoikane | bases de données | MariaDB, MySQL, PostgresQL ainsi que Redis, Loki et Mimir |
raijin | all-in-one | Adguard Home, APT-Cacher NG, Calibre, Flame, Gitea, Harbor, Hastebin, Homepage, HyperPiped, Jekyll (ce blog), Matomo, monitoring, Ntfy, Shlink, Traefik, Uptime Kuma, Vaultwarden |
tenjin | emails | tout ça avec mailcow-dockerized et son docker-compose-override |
uzume | Minecraft | Grâce à Pterodactyl |
sarutahiko | La VM GPU passthrought | Jellyfin, Photoprism, Stable Diffusion, Text Generation WebUI |
suijin | PBS | Proxmox Backup Server |
ryujin | PXE | Grâce à iVentoy |
Voila en gros les services qui tournent en permanence…
Il y a aussi ceux qui ne demandent qu’à être lancés au besoin:
- Home Assistant
- Draw.io
- Invidious (au cas ou HyperPiped fasse défaut)
- SearXNG
- SSHifty
- Teamspeak
- Webnut
- YoutubeDL
Le tout constitue un champ d’expérimentation de différentes fonctionnalités distinctes ou associées ; mais le tout avec une standardisation des docker-compose utilisant à la fois :
- extends
- override
- plusieurs sources de variables d’environnements (mutualisées & spécifiques)
Et la sécurité dans tout ça ?
Et bien chaque VM a son propre Fail2Ban, tout comme l’hôte d’ailleurs. (et ça fonctionne, par mégarde j’ai pu le vérifier :p)
Tous les services qui sont exposés, le sont à travers :
- Traefik
- Mod Security
- Crowdsec
Quelques services sont cachés derrière un Varnish optimisé.
L’ensemble étant derrière Cloudflare, une Box, un routeur et un switch managé.
Pour en venir à ?
C’est cool !
La compréhension de certains outils et/ou mécanismes s’acquiert beaucoup mieux en expérimentant par soi-même.
C’est toute la différence entre la théorie et la pratique. Il y a tout le temps un écart ; et parfois un gouffre.
J’en profite donc pour apprendre, surveiller les technologies et les expérimenter pour mieux les appréhender.
C’est un peu comme les legos lorsqu’on est enfant ; il y a le modèle prévu sur la notice et tout ce que l’imagination permet de fabriquer avec les mêmes pièces.
Bref, je fais ce qu’on devrait nous apprendre à l’école :
j’apprend en m’amusant (et c’est comme ça que ça rentre le mieux) !