Dans un homelab, les services s’accumulent vite : interfaces de virtualisation, stockage, applications web, outils d’administration… Chaque équipement possède son adresse et parfois son port particulier. Les favoris du navigateur rendent service, mais ils ne donnent ni vue d’ensemble ni indication sur la disponibilité des applications.
J’ai donc mis en place une homepage auto-hébergée, accessible sur mon réseau local et à distance via VPN. Le point de départ était simple : retrouver tous mes accès sur une seule page. Le projet a ensuite évolué vers un petit tableau de bord, avec une bibliothèque de favoris web, des historiques de configuration et un suivi réseau.
Des accès organisés et modifiables depuis la page.
Une bibliothèque commune, hébergée sur la VM.
Disponibilité, trafic de la VM et tests à la demande.
Un point d’entrée commun à mes appareils
La page principale rassemble les services sous forme de tuiles, classées par catégories. Chaque accès possède son nom, une description, une adresse et un logo. Une recherche et des filtres évitent de parcourir toute la page pour retrouver un outil.
L’une des améliorations les plus utiles concerne l’administration des liens. Au départ, une page statique suffisait, mais ajouter une tuile en modifiant le code devenait peu pratique. Les accès se gèrent désormais depuis l’interface : ajout, modification, déplacement, changement de catégorie ou suppression.
Ces changements sont enregistrés sur la VM. Je retrouve donc la même liste depuis un autre ordinateur, sans recopier un fichier de configuration sur chaque poste. Une actualisation permet de récupérer les modifications réalisées ailleurs.
Une architecture adaptée à ce besoin
La homepage fonctionne sur une VM Debian avec Docker Compose. Les pages utilisent HTML, CSS et JavaScript ; un serveur Python fournit les API et enregistre les données dans des fichiers JSON.
Cette organisation sépare le programme de ses données persistantes. Les liens, les favoris et leurs historiques sont conservés dans un dossier dédié, monté dans le conteneur. Le remplacement d’une page ou l’évolution du serveur ne nécessite donc pas de reconstruire manuellement la configuration personnelle.
Pour ce projet, aucune base de données séparée n’est nécessaire. Cela facilite la lecture des données et leur sauvegarde. En contrepartie, il s’agit d’un outil personnel : cette architecture et ses possibilités d’accès ne sont pas celles d’un portail destiné à de nombreux utilisateurs indépendants.
Voir si un service est accessible
Chaque tuile peut afficher un voyant de disponibilité. Les contrôles partent de la VM : le résultat décrit donc ce qu’elle peut joindre depuis son réseau.
La connexion TCP au port de l’application réussit.
Le port ne répond pas ou le nom ne se résout pas.
Aucune mesure suffisamment récente n’est disponible.
Cette distinction évite une confusion fréquente : une machine peut ne pas répondre au ping tout en hébergeant un service accessible. À l’inverse, une réponse au ping ne garantit pas que l’application fonctionne.
Retrouver mes favoris sans synchronisation de navigateur
Une deuxième page regroupe mes favoris web, avec leurs dossiers et sous-dossiers. Ils ont été repris à partir d’un export HTML de Firefox.
L’objectif est de pouvoir consulter cette bibliothèque depuis différents ordinateurs sans utiliser de compte de synchronisation du navigateur. Les liens sont centralisés sur la VM ; les appareils y accèdent comme à une application web locale.
La page propose une recherche, un tri, des liens épinglés et des outils d’ajout ou de modification. Les exports JSON et HTML permettent de récupérer les données. L’historique offre aussi la possibilité de revenir à une version précédente.
Distinguer trafic réseau et test de débit
Le dernier ajout est un widget réseau. Il répond à deux questions différentes : quel trafic circule actuellement sur la VM, et quelle vitesse de transfert peut-on observer vers Internet ?
Le premier affichage repose sur les compteurs de l’interface réseau de la VM. La différence entre deux relevés donne les débits entrant et sortant, actualisés chaque seconde et accompagnés d’un graphique.
Le conteneur lit uniquement le dossier de statistiques nécessaire, monté en lecture seule. Il n’a pas besoin du socket Docker ni d’un fonctionnement en mode privilégié pour cette lecture.
Deux points de mesure pour les tests Internet
Deux boutons permettent de lancer un test à la demande :
Pour observer la connexion de la maison vers Cloudflare.
Pour observer la connexion de l’appareil utilisé, Wi-Fi et VPN compris.
Les transferts vont vers les endpoints de mesure de Cloudflare. Le widget affiche le téléchargement, l’envoi et une latence HTTP pendant les différentes phases, puis conserve le dernier résultat terminé.
Ces tests sont volontairement courts et limités en volume. Ils donnent un ordre de grandeur ; ils peuvent sous-estimer la capacité maximale d’une liaison rapide. La latence HTTP comprend aussi le traitement HTTPS et le serveur, et ne doit pas être assimilée à un ping ICMP.
Pour comparer les deux points de départ, mieux vaut effectuer les tests successivement : deux mesures simultanées se partageraient la bande passante et influenceraient leurs résultats.
Des modifications réversibles
À mesure que la homepage s’enrichit, la sauvegarde devient aussi utile que l’ajout de fonctionnalités.
Une version de la configuration est conservée avant les changements. La restauration sauvegarde à son tour l’état courant, ce qui permet de revenir sur une mauvaise manipulation. La bibliothèque de favoris dispose de son propre historique, indépendant des tuiles et de la météo.
Les mises à jour suivent le même principe : sauvegarder les fichiers existants, appliquer le changement, vérifier le démarrage et prévoir le rétablissement du programme précédent si nécessaire.
Une interface agréable, sans oublier son périmètre
Deux thèmes, clair et sombre, permettent d’adapter la page à l’usage et à l’écran. Le choix reste propre au navigateur, tandis que les liens sont partagés. La météo et une localisation choisie manuellement complètent le tableau de bord.
Ce projet m’a surtout permis de réunir des besoins jusque-là dispersés : retrouver un service, consulter mes favoris depuis un autre poste, vérifier une accessibilité ou comparer deux mesures réseau. Les évolutions suivantes pourront s’appuyer sur cette base, notamment pour étudier le réveil à distance d’un PC et son intégration à la page.
