{"id":3010,"date":"2026-10-28T16:43:44","date_gmt":"2026-10-28T15:43:44","guid":{"rendered":"https:\/\/procyb.fr\/?p=3010"},"modified":"2026-10-28T16:43:44","modified_gmt":"2026-10-28T15:43:44","slug":"une-homepage-auto-hebergee-pour-centraliser-mon-homelab","status":"publish","type":"post","link":"https:\/\/procyb.fr\/index.php\/2026\/10\/28\/une-homepage-auto-hebergee-pour-centraliser-mon-homelab\/","title":{"rendered":"Une homepage auto-h\u00e9berg\u00e9e pour centraliser mon homelab"},"content":{"rendered":"\n<!-- Article PROCYB : titre fourni par le CMS, aucun h1 dans ce contenu. Cat\u00e9gories : Syst\u00e8mes et Linux. Mise en forme int\u00e9gr\u00e9e, sans script ni chargement externe automatique. -->\n<article lang=\"fr\" style=\"box-sizing:border-box;max-width:980px;width:100%;margin:0 auto;padding:clamp(14px,3vw,32px);background:#ffffff;color:#344c5d;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:16px;line-height:1.85;overflow-wrap:anywhere;\">\n<div style=\"padding:0 0 26px;margin-bottom:26px;border-bottom:1px solid #dce7ec;\"><span style=\"display:inline-block;color:#087e91;background:#eaf7f8;border:1px solid #cee9ec;padding:6px 11px;border-radius:6px;font-size:10px;letter-spacing:.12em;font-weight:750;\">RETOUR D\u2019EXP\u00c9RIENCE \u00b7 AUTO-H\u00c9BERGEMENT<\/span><\/div><div style=\"padding-left:23px;border-left:3px solid #0794a4;margin-bottom:24px;\"><p style=\"margin:0 0 18px;line-height:1.85;font-size:16px;color:#344c5d;font-size:20px;line-height:1.7;color:#12384d;\">Dans un homelab, les services s\u2019accumulent vite : interfaces de virtualisation, stockage, applications web, outils d\u2019administration\u2026 Chaque \u00e9quipement poss\u00e8de son adresse et parfois son port particulier. Les favoris du navigateur rendent service, mais ils ne donnent ni vue d\u2019ensemble ni indication sur la disponibilit\u00e9 des applications.<\/p><\/div><p style=\"margin:0 0 18px;line-height:1.85;font-size:16px;color:#344c5d;\">J\u2019ai donc mis en place une homepage auto-h\u00e9berg\u00e9e, accessible sur mon r\u00e9seau local et \u00e0 distance via VPN. Le point de d\u00e9part \u00e9tait simple : retrouver tous mes acc\u00e8s sur une seule page. Le projet a ensuite \u00e9volu\u00e9 vers un petit tableau de bord, avec une biblioth\u00e8que de favoris web, des historiques de configuration et un suivi r\u00e9seau.<\/p><div style=\"display:flex;flex-wrap:wrap;gap:14px;margin:22px 0 28px;\"><div style=\"flex:1 1 180px;min-width:0;padding:22px;border:1px solid #dce8ed;border-radius:12px;background:#f0f7f9;\"><span style=\"display:block;margin-bottom:14px;font-size:11px;letter-spacing:.08em;font-weight:750;color:#06869a;\">01 \u00b7 CENTRALISER<\/span><strong style=\"display:block;font-size:17px;color:#17384b;line-height:1.4;margin-bottom:8px;\">Mes services, au m\u00eame endroit<\/strong><p style=\"margin:0;font-size:13px;color:#526b7a;line-height:1.7;\">Des acc\u00e8s organis\u00e9s et modifiables depuis la page.<\/p><\/div><div style=\"flex:1 1 180px;min-width:0;padding:22px;border:1px solid #dce8ed;border-radius:12px;background:#f0f7f9;\"><span style=\"display:block;margin-bottom:14px;font-size:11px;letter-spacing:.08em;font-weight:750;color:#06869a;\">02 \u00b7 RETROUVER<\/span><strong style=\"display:block;font-size:17px;color:#17384b;line-height:1.4;margin-bottom:8px;\">Mes favoris, sur mes appareils<\/strong><p style=\"margin:0;font-size:13px;color:#526b7a;line-height:1.7;\">Une biblioth\u00e8que commune, h\u00e9berg\u00e9e sur la VM.<\/p><\/div><div style=\"flex:1 1 180px;min-width:0;padding:22px;border:1px solid #dce8ed;border-radius:12px;background:#f0f7f9;\"><span style=\"display:block;margin-bottom:14px;font-size:11px;letter-spacing:.08em;font-weight:750;color:#06869a;\">03 \u00b7 OBSERVER<\/span><strong style=\"display:block;font-size:17px;color:#17384b;line-height:1.4;margin-bottom:8px;\">Un aper\u00e7u du r\u00e9seau<\/strong><p style=\"margin:0;font-size:13px;color:#526b7a;line-height:1.7;\">Disponibilit\u00e9, trafic de la VM et tests \u00e0 la demande.<\/p><\/div><\/div>\n<section style=\"margin-top:42px;\"><div style=\"display:flex;align-items:center;gap:12px;margin:0 0 12px;\"><span style=\"font-size:11px;font-weight:750;letter-spacing:.08em;color:#07879a;\">01 \/ LES ACC\u00c8S<\/span><span style=\"height:1px;flex:1;background:#dce7ec;\"><\/span><\/div><h2 id=\"un-point-dentr\u00e9e-commun-\u00e0-mes-appareils\" style=\"margin:0 0 21px;font-size:27px;line-height:1.3;letter-spacing:-.025em;color:#12364b;\">Un point d\u2019entr\u00e9e commun \u00e0 mes appareils<\/h2>\n<p style=\"margin:0 0 18px;line-height:1.85;font-size:16px;color:#344c5d;\">La page principale rassemble les services sous forme de tuiles, class\u00e9es par cat\u00e9gories. Chaque acc\u00e8s poss\u00e8de son nom, une description, une adresse et un logo. Une recherche et des filtres \u00e9vitent de parcourir toute la page pour retrouver un outil.<\/p>\n<p style=\"margin:0 0 18px;line-height:1.85;font-size:16px;color:#344c5d;\">L\u2019une des am\u00e9liorations les plus utiles concerne l\u2019administration des liens. Au d\u00e9part, une page statique suffisait, mais ajouter une tuile en modifiant le code devenait peu pratique. Les acc\u00e8s se g\u00e8rent d\u00e9sormais depuis l\u2019interface : ajout, modification, d\u00e9placement, changement de cat\u00e9gorie ou suppression.<\/p>\n<p style=\"margin:0 0 18px;line-height:1.85;font-size:16px;color:#344c5d;\">Ces changements sont enregistr\u00e9s sur la VM. Je retrouve donc la m\u00eame liste depuis un autre ordinateur, sans recopier un fichier de configuration sur chaque poste. Une actualisation permet de r\u00e9cup\u00e9rer les modifications r\u00e9alis\u00e9es ailleurs.<\/p>\n<\/section><section style=\"margin-top:42px;\"><div style=\"display:flex;align-items:center;gap:12px;margin:0 0 12px;\"><span style=\"font-size:11px;font-weight:750;letter-spacing:.08em;color:#07879a;\">02 \/ LE D\u00c9PLOIEMENT<\/span><span style=\"height:1px;flex:1;background:#dce7ec;\"><\/span><\/div><h2 id=\"une-architecture-adapt\u00e9e-\u00e0-ce-besoin\" style=\"margin:0 0 21px;font-size:27px;line-height:1.3;letter-spacing:-.025em;color:#12364b;\">Une architecture adapt\u00e9e \u00e0 ce besoin<\/h2><div style=\"display:flex;flex-wrap:wrap;gap:8px;margin:0 0 22px;\"><span style=\"border:1px solid #dbe6ec;background:#f5f8fa;padding:7px 12px;border-radius:6px;font-size:12px;font-weight:650;color:#244859;\">Debian<\/span><span style=\"border:1px solid #dbe6ec;background:#f5f8fa;padding:7px 12px;border-radius:6px;font-size:12px;font-weight:650;color:#244859;\">Docker Compose<\/span><span style=\"border:1px solid #dbe6ec;background:#f5f8fa;padding:7px 12px;border-radius:6px;font-size:12px;font-weight:650;color:#244859;\">Python<\/span><span style=\"border:1px solid #dbe6ec;background:#f5f8fa;padding:7px 12px;border-radius:6px;font-size:12px;font-weight:650;color:#244859;\">HTML \/ CSS \/ JavaScript<\/span><span style=\"border:1px solid #dbe6ec;background:#f5f8fa;padding:7px 12px;border-radius:6px;font-size:12px;font-weight:650;color:#244859;\">JSON<\/span><\/div>\n<p style=\"margin:0 0 18px;line-height:1.85;font-size:16px;color:#344c5d;\">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\u00e9es dans des fichiers JSON.<\/p>\n<p style=\"margin:0 0 18px;line-height:1.85;font-size:16px;color:#344c5d;\">Cette organisation s\u00e9pare le programme de ses donn\u00e9es persistantes. Les liens, les favoris et leurs historiques sont conserv\u00e9s dans un dossier d\u00e9di\u00e9, mont\u00e9 dans le conteneur. Le remplacement d\u2019une page ou l\u2019\u00e9volution du serveur ne n\u00e9cessite donc pas de reconstruire manuellement la configuration personnelle.<\/p>\n<p style=\"margin:0 0 18px;line-height:1.85;font-size:16px;color:#344c5d;\">Pour ce projet, aucune base de donn\u00e9es s\u00e9par\u00e9e n\u2019est n\u00e9cessaire. Cela facilite la lecture des donn\u00e9es et leur sauvegarde. En contrepartie, il s\u2019agit d\u2019un outil personnel : cette architecture et ses possibilit\u00e9s d\u2019acc\u00e8s ne sont pas celles d\u2019un portail destin\u00e9 \u00e0 de nombreux utilisateurs ind\u00e9pendants.<\/p>\n<\/section><section style=\"margin-top:42px;\"><div style=\"display:flex;align-items:center;gap:12px;margin:0 0 12px;\"><span style=\"font-size:11px;font-weight:750;letter-spacing:.08em;color:#07879a;\">03 \/ LA DISPONIBILIT\u00c9<\/span><span style=\"height:1px;flex:1;background:#dce7ec;\"><\/span><\/div><h2 id=\"voir-si-un-service-est-accessible\" style=\"margin:0 0 21px;font-size:27px;line-height:1.3;letter-spacing:-.025em;color:#12364b;\">Voir si un service est accessible<\/h2>\n<p style=\"margin:0 0 18px;line-height:1.85;font-size:16px;color:#344c5d;\">Chaque tuile peut afficher un voyant de disponibilit\u00e9. Les contr\u00f4les partent de la VM : le r\u00e9sultat d\u00e9crit donc ce qu\u2019elle peut joindre depuis son r\u00e9seau.<\/p>\n<div style=\"display:flex;flex-wrap:wrap;gap:14px;margin:22px 0 28px;\"><div style=\"flex:1 1 180px;min-width:0;padding:22px;border:1px solid #dce8ed;border-radius:12px;background:#f1f9f4;\"><span style=\"display:block;margin-bottom:14px;font-size:11px;letter-spacing:.08em;font-weight:750;color:#168250;\">\u25cf VERT<\/span><strong style=\"display:block;font-size:17px;color:#17384b;line-height:1.4;margin-bottom:8px;\">Port accessible<\/strong><p style=\"margin:0;font-size:13px;color:#526b7a;line-height:1.7;\">La connexion TCP au port de l\u2019application r\u00e9ussit.<\/p><\/div><div style=\"flex:1 1 180px;min-width:0;padding:22px;border:1px solid #dce8ed;border-radius:12px;background:#fff4f5;\"><span style=\"display:block;margin-bottom:14px;font-size:11px;letter-spacing:.08em;font-weight:750;color:#b84150;\">\u25cf ROUGE<\/span><strong style=\"display:block;font-size:17px;color:#17384b;line-height:1.4;margin-bottom:8px;\">Connexion impossible<\/strong><p style=\"margin:0;font-size:13px;color:#526b7a;line-height:1.7;\">Le port ne r\u00e9pond pas ou le nom ne se r\u00e9sout pas.<\/p><\/div><div style=\"flex:1 1 180px;min-width:0;padding:22px;border:1px solid #dce8ed;border-radius:12px;background:#f3f6f8;\"><span style=\"display:block;margin-bottom:14px;font-size:11px;letter-spacing:.08em;font-weight:750;color:#667985;\">\u25cf GRIS<\/span><strong style=\"display:block;font-size:17px;color:#17384b;line-height:1.4;margin-bottom:8px;\">\u00c9tat non v\u00e9rifi\u00e9<\/strong><p style=\"margin:0;font-size:13px;color:#526b7a;line-height:1.7;\">Aucune mesure suffisamment r\u00e9cente n\u2019est disponible.<\/p><\/div><\/div>\n<p style=\"margin:0 0 18px;line-height:1.85;font-size:16px;color:#344c5d;\">Cette distinction \u00e9vite une confusion fr\u00e9quente : une machine peut ne pas r\u00e9pondre au ping tout en h\u00e9bergeant un service accessible. \u00c0 l\u2019inverse, une r\u00e9ponse au ping ne garantit pas que l\u2019application fonctionne.<\/p>\n<aside style=\"margin:24px 0;padding:22px 24px;border-left:4px solid #087f94;border-radius:0 12px 12px 0;background:#eff8fa;color:#183f51;\"><p style=\"margin:0 0 8px;font-size:11px;font-weight:750;letter-spacing:.1em;text-transform:uppercase;color:#087f94;\">Ce que le voyant permet de conclure<\/p><p style=\"margin:0;font-size:15px;line-height:1.8;color:#183f51;\">M\u00eame le voyant vert a une port\u00e9e limit\u00e9e. Un port ouvert ne prouve pas que l\u2019utilisateur peut se connecter, que la base de donn\u00e9es r\u00e9pond ou que le certificat est valide. Ce contr\u00f4le donne un premier rep\u00e8re utile, sans remplacer une supervision applicative compl\u00e8te.<\/p><\/aside>\n<\/section><section style=\"margin-top:42px;\"><div style=\"display:flex;align-items:center;gap:12px;margin:0 0 12px;\"><span style=\"font-size:11px;font-weight:750;letter-spacing:.08em;color:#07879a;\">04 \/ LES FAVORIS<\/span><span style=\"height:1px;flex:1;background:#dce7ec;\"><\/span><\/div><h2 id=\"retrouver-mes-favoris-sans-synchronisation-de-navigateur\" style=\"margin:0 0 21px;font-size:27px;line-height:1.3;letter-spacing:-.025em;color:#12364b;\">Retrouver mes favoris sans synchronisation de navigateur<\/h2>\n<p style=\"margin:0 0 18px;line-height:1.85;font-size:16px;color:#344c5d;\">Une deuxi\u00e8me page regroupe mes favoris web, avec leurs dossiers et sous-dossiers. Ils ont \u00e9t\u00e9 repris \u00e0 partir d\u2019un export HTML de Firefox.<\/p>\n<p style=\"margin:0 0 18px;line-height:1.85;font-size:16px;color:#344c5d;\">L\u2019objectif est de pouvoir consulter cette biblioth\u00e8que depuis diff\u00e9rents ordinateurs sans utiliser de compte de synchronisation du navigateur. Les liens sont centralis\u00e9s sur la VM ; les appareils y acc\u00e8dent comme \u00e0 une application web locale.<\/p>\n<p style=\"margin:0 0 18px;line-height:1.85;font-size:16px;color:#344c5d;\">La page propose une recherche, un tri, des liens \u00e9pingl\u00e9s et des outils d\u2019ajout ou de modification. Les exports JSON et HTML permettent de r\u00e9cup\u00e9rer les donn\u00e9es. L\u2019historique offre aussi la possibilit\u00e9 de revenir \u00e0 une version pr\u00e9c\u00e9dente.<\/p>\n<aside style=\"margin:24px 0;padding:22px 24px;border-left:4px solid #087f94;border-radius:0 12px 12px 0;background:#eff8fa;color:#183f51;\"><p style=\"margin:0 0 8px;font-size:11px;font-weight:750;letter-spacing:.1em;text-transform:uppercase;color:#087f94;\">Une biblioth\u00e8que commune sur la VM<\/p><p style=\"margin:0;font-size:15px;line-height:1.8;color:#183f51;\">Il ne s\u2019agit pas d\u2019une synchronisation permanente avec Firefox : un favori ajout\u00e9 dans le navigateur n\u2019appara\u00eet pas automatiquement sur la homepage. La biblioth\u00e8que web devient le r\u00e9f\u00e9rentiel commun, avec la possibilit\u00e9 de fusionner un nouvel export du navigateur si n\u00e9cessaire.<\/p><\/aside>\n<\/section><section style=\"margin-top:42px;\"><div style=\"display:flex;align-items:center;gap:12px;margin:0 0 12px;\"><span style=\"font-size:11px;font-weight:750;letter-spacing:.08em;color:#07879a;\">05 \/ LE R\u00c9SEAU<\/span><span style=\"height:1px;flex:1;background:#dce7ec;\"><\/span><\/div><h2 id=\"distinguer-trafic-r\u00e9seau-et-test-de-d\u00e9bit\" style=\"margin:0 0 21px;font-size:27px;line-height:1.3;letter-spacing:-.025em;color:#12364b;\">Distinguer trafic r\u00e9seau et test de d\u00e9bit<\/h2>\n<p style=\"margin:0 0 18px;line-height:1.85;font-size:16px;color:#344c5d;\">Le dernier ajout est un widget r\u00e9seau. Il r\u00e9pond \u00e0 deux questions diff\u00e9rentes : quel trafic circule actuellement sur la VM, et quelle vitesse de transfert peut-on observer vers Internet ?<\/p>\n<p style=\"margin:0 0 18px;line-height:1.85;font-size:16px;color:#344c5d;\">Le premier affichage repose sur les compteurs de l\u2019interface r\u00e9seau de la VM. La diff\u00e9rence entre deux relev\u00e9s donne les d\u00e9bits entrant et sortant, actualis\u00e9s chaque seconde et accompagn\u00e9s d\u2019un graphique.<\/p>\n<p style=\"margin:0 0 18px;line-height:1.85;font-size:16px;color:#344c5d;\">Le conteneur lit uniquement le dossier de statistiques n\u00e9cessaire, mont\u00e9 en lecture seule. Il n\u2019a pas besoin du socket Docker ni d\u2019un fonctionnement en mode privil\u00e9gi\u00e9 pour cette lecture.<\/p>\n<aside style=\"margin:24px 0;padding:22px 24px;border-left:4px solid #087f94;border-radius:0 12px 12px 0;background:#eff8fa;color:#183f51;\"><p style=\"margin:0 0 8px;font-size:11px;font-weight:750;letter-spacing:.1em;text-transform:uppercase;color:#087f94;\">Le p\u00e9rim\u00e8tre de la mesure<\/p><p style=\"margin:0;font-size:15px;line-height:1.8;color:#183f51;\">La port\u00e9e de la mesure reste pr\u00e9cise : le widget montre le trafic de cette VM, r\u00e9seau local et Internet confondus. Il ne repr\u00e9sente pas tous les \u00e9changes des autres machines du homelab. Pour observer le trafic Internet de toute la maison, il faudrait interroger un \u00e9quipement travers\u00e9 par ces \u00e9changes, comme le routeur.<\/p><\/aside>\n<h3 id=\"deux-points-de-mesure-pour-les-tests-internet\" style=\"font-size:19px;color:#174354;margin:30px 0 16px;line-height:1.45;\">Deux points de mesure pour les tests Internet<\/h3>\n<p style=\"margin:0 0 18px;line-height:1.85;font-size:16px;color:#344c5d;\">Deux boutons permettent de lancer un test \u00e0 la demande :<\/p>\n<div style=\"display:flex;flex-wrap:wrap;gap:14px;margin:22px 0 28px;\"><div style=\"flex:1 1 180px;min-width:0;padding:22px;border:1px solid #dce8ed;border-radius:12px;background:#f0f7f9;\"><span style=\"display:block;margin-bottom:14px;font-size:11px;letter-spacing:.08em;font-weight:750;color:#06869a;\">POINT DE MESURE 01<\/span><strong style=\"display:block;font-size:17px;color:#17384b;line-height:1.4;margin-bottom:8px;\">Depuis la VM<\/strong><p style=\"margin:0;font-size:13px;color:#526b7a;line-height:1.7;\">Pour observer la connexion de la maison vers Cloudflare.<\/p><\/div><div style=\"flex:1 1 180px;min-width:0;padding:22px;border:1px solid #dce8ed;border-radius:12px;background:#f0f7f9;\"><span style=\"display:block;margin-bottom:14px;font-size:11px;letter-spacing:.08em;font-weight:750;color:#06869a;\">POINT DE MESURE 02<\/span><strong style=\"display:block;font-size:17px;color:#17384b;line-height:1.4;margin-bottom:8px;\">Depuis ce navigateur<\/strong><p style=\"margin:0;font-size:13px;color:#526b7a;line-height:1.7;\">Pour observer la connexion de l\u2019appareil utilis\u00e9, Wi-Fi et VPN compris.<\/p><\/div><\/div>\n<p style=\"margin:0 0 18px;line-height:1.85;font-size:16px;color:#344c5d;\">Les transferts vont vers les endpoints de mesure de Cloudflare. Le widget affiche le t\u00e9l\u00e9chargement, l\u2019envoi et une latence HTTP pendant les diff\u00e9rentes phases, puis conserve le dernier r\u00e9sultat termin\u00e9.<\/p>\n<p style=\"margin:0 0 18px;line-height:1.85;font-size:16px;color:#344c5d;\">Ces tests sont volontairement courts et limit\u00e9s en volume. Ils donnent un ordre de grandeur ; ils peuvent sous-estimer la capacit\u00e9 maximale d\u2019une liaison rapide. La latence HTTP comprend aussi le traitement HTTPS et le serveur, et ne doit pas \u00eatre assimil\u00e9e \u00e0 un ping ICMP.<\/p>\n<p style=\"margin:0 0 18px;line-height:1.85;font-size:16px;color:#344c5d;\">Pour comparer les deux points de d\u00e9part, mieux vaut effectuer les tests successivement : deux mesures simultan\u00e9es se partageraient la bande passante et influenceraient leurs r\u00e9sultats.<\/p>\n<\/section><section style=\"margin-top:42px;\"><div style=\"display:flex;align-items:center;gap:12px;margin:0 0 12px;\"><span style=\"font-size:11px;font-weight:750;letter-spacing:.08em;color:#07879a;\">06 \/ LES SAUVEGARDES<\/span><span style=\"height:1px;flex:1;background:#dce7ec;\"><\/span><\/div><h2 id=\"des-modifications-r\u00e9versibles\" style=\"margin:0 0 21px;font-size:27px;line-height:1.3;letter-spacing:-.025em;color:#12364b;\">Des modifications r\u00e9versibles<\/h2>\n<p style=\"margin:0 0 18px;line-height:1.85;font-size:16px;color:#344c5d;\">\u00c0 mesure que la homepage s\u2019enrichit, la sauvegarde devient aussi utile que l\u2019ajout de fonctionnalit\u00e9s.<\/p>\n<p style=\"margin:0 0 18px;line-height:1.85;font-size:16px;color:#344c5d;\">Une version de la configuration est conserv\u00e9e avant les changements. La restauration sauvegarde \u00e0 son tour l\u2019\u00e9tat courant, ce qui permet de revenir sur une mauvaise manipulation. La biblioth\u00e8que de favoris dispose de son propre historique, ind\u00e9pendant des tuiles et de la m\u00e9t\u00e9o.<\/p>\n<aside style=\"margin:24px 0;padding:22px 24px;border-left:4px solid #c88922;border-radius:0 12px 12px 0;background:#fff8e9;color:#634819;\"><p style=\"margin:0 0 8px;font-size:11px;font-weight:750;letter-spacing:.1em;text-transform:uppercase;color:#c88922;\">Historique local et copie externe<\/p><p style=\"margin:0;font-size:15px;line-height:1.8;color:#634819;\">Ces historiques restent sur la m\u00eame VM. Ils r\u00e9pondent \u00e0 un besoin de retour en arri\u00e8re, mais ne prot\u00e8gent pas contre la perte de son disque. Une sauvegarde compl\u00e8te doit donc inclure le programme, sa configuration et les donn\u00e9es, avec une copie sur un autre support.<\/p><\/aside>\n<p style=\"margin:0 0 18px;line-height:1.85;font-size:16px;color:#344c5d;\">Les mises \u00e0 jour suivent le m\u00eame principe : sauvegarder les fichiers existants, appliquer le changement, v\u00e9rifier le d\u00e9marrage et pr\u00e9voir le r\u00e9tablissement du programme pr\u00e9c\u00e9dent si n\u00e9cessaire.<\/p>\n<\/section><section style=\"margin-top:42px;\"><div style=\"display:flex;align-items:center;gap:12px;margin:0 0 12px;\"><span style=\"font-size:11px;font-weight:750;letter-spacing:.08em;color:#07879a;\">07 \/ L\u2019USAGE AU QUOTIDIEN<\/span><span style=\"height:1px;flex:1;background:#dce7ec;\"><\/span><\/div><h2 id=\"une-interface-agr\u00e9able-sans-oublier-son-p\u00e9rim\u00e8tre\" style=\"margin:0 0 21px;font-size:27px;line-height:1.3;letter-spacing:-.025em;color:#12364b;\">Une interface agr\u00e9able, sans oublier son p\u00e9rim\u00e8tre<\/h2>\n<p style=\"margin:0 0 18px;line-height:1.85;font-size:16px;color:#344c5d;\">Deux th\u00e8mes, clair et sombre, permettent d\u2019adapter la page \u00e0 l\u2019usage et \u00e0 l\u2019\u00e9cran. Le choix reste propre au navigateur, tandis que les liens sont partag\u00e9s. La m\u00e9t\u00e9o et une localisation choisie manuellement compl\u00e8tent le tableau de bord.<\/p>\n<aside style=\"margin:24px 0;padding:22px 24px;border-left:4px solid #54d7d4;border-radius:0 12px 12px 0;background:#102e40;color:#edf7fa;\"><p style=\"margin:0 0 8px;font-size:11px;font-weight:750;letter-spacing:.1em;text-transform:uppercase;color:#54d7d4;\">Un usage personnel, sur un r\u00e9seau ma\u00eetris\u00e9<\/p><p style=\"margin:0;font-size:15px;line-height:1.8;color:#edf7fa;\">La homepage reste r\u00e9serv\u00e9e \u00e0 mon r\u00e9seau local et \u00e0 l\u2019acc\u00e8s via VPN. Elle ne poss\u00e8de pas de comptes utilisateurs ni de s\u00e9paration des droits : les personnes qui peuvent y acc\u00e9der peuvent aussi modifier les liens. Les v\u00e9rifications d\u2019origine des requ\u00eates et la gestion des conflits de configuration ne remplacent pas une authentification.<\/p><\/aside>\n<p style=\"margin:0 0 18px;line-height:1.85;font-size:16px;color:#344c5d;\">Ce projet m\u2019a surtout permis de r\u00e9unir des besoins jusque-l\u00e0 dispers\u00e9s : retrouver un service, consulter mes favoris depuis un autre poste, v\u00e9rifier une accessibilit\u00e9 ou comparer deux mesures r\u00e9seau. Les \u00e9volutions suivantes pourront s\u2019appuyer sur cette base, notamment pour \u00e9tudier le r\u00e9veil \u00e0 distance d\u2019un PC et son int\u00e9gration \u00e0 la page.<\/p>\n<\/section><footer style=\"padding:24px;margin-top:36px;background:#f4f7f9;border:1px solid #e0e9ee;border-radius:12px;\"><h2 id=\"ressources\" style=\"font-size:17px;color:#244859;margin:0 0 14px;\">Ressources<\/h2>\n<ul style=\"margin:12px 0 22px;padding-left:23px;\">\n<li style=\"padding:4px 0;line-height:1.8;color:#344c5d;\"><a href=\"https:\/\/www.kernel.org\/doc\/html\/latest\/networking\/statistics.html\" style=\"color:#087f94;text-decoration:underline;text-underline-offset:3px;\">Statistiques d\u2019interfaces r\u00e9seau dans Linux<\/a>.<\/li>\n<li style=\"padding:4px 0;line-height:1.8;color:#344c5d;\"><a href=\"https:\/\/github.com\/cloudflare\/speedtest\" style=\"color:#087f94;text-decoration:underline;text-underline-offset:3px;\">Projet officiel Cloudflare Speedtest<\/a>, dont les endpoints sont utilis\u00e9s pour les transferts. Le widget n\u2019utilise pas son moteur officiel de calcul.<\/li>\n<li style=\"padding:4px 0;line-height:1.8;color:#344c5d;\"><a href=\"https:\/\/speed.cloudflare.com\/about\" style=\"color:#087f94;text-decoration:underline;text-underline-offset:3px;\">Informations sur Cloudflare Speed Test et ses donn\u00e9es<\/a>.<\/li>\n<li style=\"padding:4px 0;line-height:1.8;color:#344c5d;\"><a href=\"https:\/\/open-meteo.com\/\" style=\"color:#087f94;text-decoration:underline;text-underline-offset:3px;\">Open-Meteo<\/a>, pour la m\u00e9t\u00e9o.<\/li>\n<li style=\"padding:4px 0;line-height:1.8;color:#344c5d;\"><a href=\"https:\/\/github.com\/homarr-labs\/dashboard-icons\" style=\"color:#087f94;text-decoration:underline;text-underline-offset:3px;\">Dashboard Icons<\/a>, pour les logos de services.<\/li>\n<\/ul>\n<\/footer>\n<\/article>\n","protected":false},"excerpt":{"rendered":"<p>RETOUR D\u2019EXP\u00c9RIENCE \u00b7 AUTO-H\u00c9BERGEMENT Dans un homelab, les services s\u2019accumulent vite : interfaces de virtualisation, stockage, applications web, outils d\u2019administration\u2026<span class=\"more-dots\">&#8230;<\/span> <span class=\"more-tag mt-15 is-style-arrow\"><a class=\"more-link wp-block-button__link\" href=\"https:\/\/procyb.fr\/index.php\/2026\/10\/28\/une-homepage-auto-hebergee-pour-centraliser-mon-homelab\/\">...<span class=\"screen-reader-text\"> \"Une homepage auto-h\u00e9berg\u00e9e pour centraliser mon homelab\"<\/span><\/a><\/span><!-- .more-tag --><\/p>\n","protected":false},"author":2,"featured_media":3012,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"jetpack_seo_schema_type":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[46,37],"tags":[106,85,24,73],"class_list":["post-3010","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-linux","category-systemes","tag-auto-hebergement","tag-debian","tag-docker","tag-homelab"],"jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"jetpack_featured_media_url":"https:\/\/i0.wp.com\/procyb.fr\/wp-content\/uploads\/2026\/10\/Homelab-serveur-et-tableau-de-bord.png?fit=1672%2C941&ssl=1","_links":{"self":[{"href":"https:\/\/procyb.fr\/index.php\/wp-json\/wp\/v2\/posts\/3010","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/procyb.fr\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/procyb.fr\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/procyb.fr\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/procyb.fr\/index.php\/wp-json\/wp\/v2\/comments?post=3010"}],"version-history":[{"count":1,"href":"https:\/\/procyb.fr\/index.php\/wp-json\/wp\/v2\/posts\/3010\/revisions"}],"predecessor-version":[{"id":3011,"href":"https:\/\/procyb.fr\/index.php\/wp-json\/wp\/v2\/posts\/3010\/revisions\/3011"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/procyb.fr\/index.php\/wp-json\/wp\/v2\/media\/3012"}],"wp:attachment":[{"href":"https:\/\/procyb.fr\/index.php\/wp-json\/wp\/v2\/media?parent=3010"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/procyb.fr\/index.php\/wp-json\/wp\/v2\/categories?post=3010"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/procyb.fr\/index.php\/wp-json\/wp\/v2\/tags?post=3010"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}