Ce projet est avant tout un projet personnel, motivé par ma volonté d’approfondir mes compétences et de découvrir de nouvelles technologies en lien avec les systèmes et réseaux. Il s’agit d’un environnement en constante évolution, dont les changements dépendent de mes expérimentations. Ce home lab me permet de disposer d’un terrain d’entraînement et de découverte totalement libre, offrant la possibilité de tester, configurer et optimiser diverses infrastructures sans contrainte particulière.
Contexte
Au cours de mon alternance, j’ai récupéré un ancien serveur qui était destiné à être jeté. Même si mon entreprise n’en avait plus l’utilité, la plupart des composants matériels étaient encore parfaitement fonctionnels. Après l’installation du serveur et le remplacement des pièces défectueuses, j’ai pu commencer à l’utiliser.
Le but principal de ce projet était d’utiliser ce serveur comme un environnement d’apprentissage et d’expérimentation, dans le but de tester et découvrir de nouvelles technologies, d’améliorer mes compétences et de m’amuser en mettant en place divers outils et fonctionnalités. En parallèle, ce serveur m’a également permis de migrer l’ancienne infrastructure dédiée à la domotique de ma maison, améliorant ainsi sa fiabilité et ses performances.
Besoins, objectifs et attentes
Afin de bénéficier d’un environnement totalement adaptable, l’un des premiers objectifs a été de mettre en place mon propre serveur physique. Pour cela, plusieurs étapes ont été nécessaires :
Remise en état du serveur : changement des disques durs défectueux.
Installation et configuration du système : choix et installation d’un système d’exploitation adapté, paramétrage de l’OS et configuration réseau.
Création des machines virtuelles : mise en place de plusieurs VMs en fonction de mes besoins.
Accès distant sécurisé : mise en place d’un système d’accès à distance sécurisé, permettant l’administration depuis n’importe où.
Ce projet m’a donné une grande liberté dans la mise en place et l’amélioration de mon infrastructure, tout en servant d’excellent terrain de test pour perfectionner mes aptitudes en administration de serveurs et de réseaux.
De plus, pour la réalisation de ce projet, il était nécessaire d’être vigilant face aux risques que comporte la mise en place d’un home lab, notamment en matière de sécurité, car un serveur accessible à distance peut être une cible pour les attaques. Il fallait également prendre en compte les pannes matérielles, car certains composants peuvent tomber en panne. Il est donc nécessaire de surveiller l’état matériel et d’anticiper les défaillances (alimentation, disques durs, RAM).
Rôle et équipe
Pour la réalisation de ce projet, j’y ai travaillé seul. J’ai utilisé mes propres connaissances et compétences dans ce domaine pour le mener à bien.
En ce qui concerne la méthodologie de travail, la mise en place d’un kanban via Trello a été effectuée. J’y ai inscrit les différentes tâches à réaliser et les ai organisées selon leur état : à faire, en cours et terminé.
Projet
Hardware & Réseau
Comme évoqué précédemment, un ancien serveur a été utilisé. Pour assurer son bon fonctionnement et améliorer ses performances, j’ai d’abord procédé au remplacement des disques durs défectueux.
Après cette modification, j’ai ajouté le serveur à mon infrastructure réseau en le connectant à un switch, permettant ainsi la communication avec les différents équipements du réseau. Ce switch est lui-même relié à un routeur, qui assure la gestion de la connexion globale de mon réseau.
Le serveur permet de fournir plusieurs services et héberge différentes machines virtuelles en fonction de mes besoins. Il peut interagir avec d’autres systèmes comme :
Un ordinateur personnel, utilisé pour l’administration des machines du home lab.
Un Raspberry Pi, permettant la récupération des données de différents équipements dans la maison.
Afin de sécuriser l’accès à distance à mon infrastructure, j’ai également mis en place un VPN reliant mon ordinateur personnel au réseau de chez moi. Cela me permet d’accéder à mon serveur, à mes machines virtuelles et aux autres machines physiques en toute sécurité, quel que soit l’endroit où je me trouve.
Configuration du serveur et des machines virtuelles
Après l’installation de Proxmox, la première étape a été de configurer une IP fixe pour garantir que le serveur ne change pas d’adressage, ce qui pourrait provoquer des soucis avec mes outils à l’avenir. Une fois cela fait, j’ai pu me connecter à son interface web, permettant de créer, gérer et surveiller mes machines virtuelles.
Serveur LAMP
La première machine virtuelle que j’ai créée est un serveur LAMP (Linux, Apache, MariaDB, PHP) sous Debian. Ce serveur est destiné à être un serveur d’hébergement pour un site web permettant l’affichage des statistiques de ma domotique.
Pour cela, j’ai installé et configuré les services suivants :
Apache2 : serveur web pour l’hébergement du site
MariaDB (alternative à MySQL) : base de données
PHP : langage de programmation utilisé par le site web
PHPMyAdmin : interface web facilitant la gestion des bases de données
Une fois les services installés et fonctionnels, j’ai déployé mon site web en plaçant les fichiers dans le répertoire /var/www/html. J’ai ensuite importé mes bases de données via PhpMyAdmin, contenant les informations récupérées depuis le système domotique.
Les statistiques visibles sont notamment :
l’énergie électrique générée par des panneaux solaires,
la consommation électrique (générale ou de certains équipements en particulier),
la température,
la consommation d’eau, etc.
RUNTIPI
Après la mise en place de mon serveur LAMP, j’ai voulu tester d’autres outils pour centraliser la gestion de mes applications. J’ai donc choisi RunTipi, un projet open-source qui permet de déployer facilement des applications web auto-hébergées, notamment des outils comme Nextcloud, Home Assistant ou Gitea. Tous ces outils disponibles depuis la bibliothèque de RunTipi sont créés sous forme de conteneurs Docker.
L’objectif de cette machine virtuelle est d’avoir une interface simplifiée centralisant divers services auto-hébergés, le tout avec un déploiement rapide et automatisé.
Comme pour mon serveur LAMP, j’ai commencé par créer une machine virtuelle sous Debian sur mon hyperviseur Proxmox. Une fois la machine virtuelle prête, j’ai procédé à l’installation de RunTipi avec la commande suivante : curl -L https://setup.runtipi.io | bash
Ce script installe automatiquement l’outil et permet ensuite de le configurer via son interface web. Après l’installation, j’ai pu accéder à l’interface RunTipi via un navigateur et commencer à ajouter des applications.
Pour le moment, seuls Filestash (pour la récupération et l’ajout de fichiers sur mes machines virtuelles), ainsi que Portainer, sont présents sur cette machine.
Supervision
Afin de superviser et m’assurer du bon fonctionnement de mes machines virtuelles et de mes conteneurs, j’ai mis en place une solution de supervision me permettant de surveiller les performances de mes machines et de détecter d’éventuels problèmes de dysfonctionnement. Pour cela, j’ai choisi d’utiliser Grafana comme système de visualisation, avec Prometheus pour la gestion des métriques.
Une fois ces conteneurs mis en place, j’ai configuré l’interface de Grafana pour récupérer et afficher les métriques. Dans Grafana, j’ai donc ajouté Prometheus comme source de données, puis importé un dashboard Node Exporter et un dashboard cAdvisor préexistants.
Sécurité
Afin de garantir la sécurité de mon home lab, j’ai pris la décision de ne pas exposer directement mes machines et services sur Internet. Toute tentative d’accès à distance doit obligatoirement passer par un VPN client sécurisé.
Cette approche permet de :
Réduire la surface d’attaque en empêchant toute connexion non autorisée depuis l’extérieur,
Contrôler les accès en filtrant les utilisateurs,
Sécuriser la transmission des données grâce au chiffrement du VPN, évitant ainsi les interceptions et attaques.
Résultat du projet
Ce projet de home lab est un projet toujours en cours, qui continuera à évoluer avec le temps. Il me permet d’acquérir de nouvelles compétences techniques, notamment en administration système et réseau, en virtualisation, et en gestion de services auto-hébergés.
Depuis le début, j’ai pris en charge toutes les étapes du projet, que ce soit la récupération et la remise en état du serveur, jusqu’à la configuration avancée des machines virtuelles et des applications. Aujourd’hui, mon infrastructure est fonctionnelle et évolutive, avec Proxmox pour la virtualisation, RunTipi pour l’orchestration des applications, Grafana pour la supervision des machines, et un VPN sécurisé pour garantir un accès distant protégé.
Bien que de nombreuses choses aient déjà été mises en place, ce projet est loin d’être terminé. Il existe encore de nombreuses optimisations possibles, notamment en matière de sécurité, où j’envisage la mise en place de VLAN pour mieux isoler les machines virtuelles et affiner les règles de filtrage réseau
Mon retour d'expérience
Je suis très fier du travail accompli sur ce projet, qui a été une véritable opportunité d’apprentissage et d’expérimentation. Il m’a permis de travailler de manière autonome, ainsi que d’analyser et résoudre des problèmes techniques en fonction des défis rencontrés.
Cette expérience m’a permis de constater l’importance de ce genre de projet : c’est un excellent moyen d’apprendre et de consolider ses compétences en informatique. Ce projet m’a permis de mettre en pratique mes compétences en gestion d’infrastructure, tout en découvrant différentes technologies et méthodes d’administration.
Cette expérience me sera précieuse pour mon avenir professionnel, notamment en entreprise, où la mise en place et la gestion d’infrastructures réseau nécessitent de nombreuses connaissances et une forte capacité d’adaptation. Comme mentionné, je compte bien poursuivre ce projet afin d’explorer de nouvelles technologies pour m’améliorer encore davantage.
Home Lab




Afin d’être le plus flexible possible dans la création de mes machines virtuelles, j’ai décidé d’installer Proxmox comme système d’exploitation. Ce choix de système d’exploitation a été motivé par le fait que je n’avais pas l’habitude de l’utiliser, et donc par mon envie de découvrir plus en profondeur son fonctionnement.




















Pour garantir un bon fonctionnement et éviter une surcharge de la base de données, j’ai mis en place des tâches CRON permettant de supprimer automatiquement les données trop anciennes. Cela assure que la base reste optimisée et que seules les informations récentes sont disponibles.


Étant donné que mon serveur RunTipi utilise déjà la technologie Docker, j’ai choisi d’y intégrer ma solution de supervision via un fichier Docker Compose, comprenant les services suivants :
Prometheus : outil de collecte et de stockage des métriques.
Grafana : interface graphique permettant d’afficher les métriques sous forme de tableaux de bord interactifs.
cAdvisor : collecte des statistiques sur les conteneurs Docker.
Node Exporter : récupère les données système des machines (CPU, RAM, stockage, etc.).
Une fois le fichier docker-compose.yml créé, les conteneurs sont exécutés grâce à la commande suivante : docker-compose up -d
Prometheus doit être configuré afin de récupérer les métriques des différentes machines à superviser. Pour cela, j’ai créé un fichier prometheus.yml comprenant les noms des services et les machines à cibler pour la récupération des données.