Mon tableau de bord personnel propulsé par Hermes

L’un des premiers éléments que j’ai voulu en configurant Hermes sur mon serveur, c’était un tableau de bord personnel. Pas un machin SaaS avec abonnement et publicité, mais un vrai tableau de bord qui me parle — hébergé chez moi, qui regroupe météo, agenda, veille et suivi de projet.

Voici ma solution.

Pourquoi un dashboard maison ?

J’avais essayé Glance, Heimdall, Homer — tous très bien. Mais à chaque fois il manquait quelque chose :

  • La météo locale (Sorède et Goutévernisse, pas Paris)
  • Mes rendez-vous Google Agenda directement visibles
  • Ma veille du jour extraite automatiquement de ma synthèse Obsidian
  • Mes tâches en cours parsées depuis mes notes de projet

Bref, un tableau de bord qui reflète mon activité réelle, pas juste une grille de liens.

C’est là que Hermes entre en jeu.

Architecture

Le dashboard est un fichier HTML statique généré par un script Python, actualisé toutes les 15 minutes, et servi par un serveur HTTP léger derrière Caddy.

┌─────────────┐     ┌──────────┐     ┌──────────────┐
│  Sources     │────▶│generate  │────▶│  index.html  │
│  (API/météo, │     │.py       │     │  (statique)   │
│  Agenda,     │     │(cron     │     │              │
│  Veille...)  │     │*/15)     │     │  port 8765   │
└─────────────┘     └──────────┘     └──────┬───────┘
                                            │
                                     ┌──────▼───────┐
                                     │   Caddy      │
                                     │  (HTTPS +    │
                                     │  auth jpr)   │
                                     │ dashboard.   │
                                     │ rouze.eu     │
                                     └──────────────┘

Le script generate.py (518 lignes, zéro dépendance externe) va chercher :

  1. La météo via wttr.in — température, vent, humidité, prévisions 3 jours
  2. L’agenda — mes événements Google Agenda du jour via gws CLI
  3. Les tâches — scan des fichiers todo dans mes projets Obsidian
  4. La veille — les liens de la synthèse quotidienne la plus récente
  5. Les actualités — un ticker avec les titres France 24 et Franceinfo

Ce qu’on voit à l’écran

Capture d'écran du tableau de bord

Le design est volontairement sobre et sombre — thème dark, grille deux colonnes, carte météo en pleine largeur. Chaque bloc a un titre en doré (#e8c547, ma couleur signature) et un fond légèrement plus clair au survol.

La barre d’infos

En haut : la date du jour, la température, le nombre de tâches en cours et d’articles de veille. Tout l’essentiel en un coup d’œil.

Le bandeau d’actualités

Un ticker CSS défilant — les titres du moment défilent en continu. Pas de clics, pas de distraction, juste une conscience ambiante de ce qui se passe dans le monde.

La météo locale

Deux localisations en direct : Sorède (28°C aujourd’hui) et Goutévernisse (30°C). Avec les prévisions 3 jours. Ça a l’air basique mais c’est LE truc que je regarde le plus souvent.

Rendez-vous et tâches

Mes événements Google Agenda du jour et les tâches extraites de mes projets en cours. Utile pour savoir où j’en suis sans ouvrir 15 apps.

Suggestions

Quatre conseils dynamiques selon le moment de la journée — l’après-midi par exemple il me dit de bosser sur les tâches en cours. Un petit plus qui rend le tableau vivant.

Veille du jour

La section que j’utilise le plus : les 15 articles sélectionnés automatiquement par ma veille quotidienne, avec la source en badge à gauche. Un clic et j’ouvre l’article.

L’effet domino

Ce dashboard est un bon exemple de ce que j’appelle l’effet domino Hermes :

  1. J’ai mis en place une veille RSS → Hermes génère des synthèses quotidiennes dans Obsidian
  2. Hermes peut lire Obsidian → le dashboard pioche dedans
  3. J’ai connecté Google Agenda → le dashboard l’affiche
  4. J’ai standardisé mes notes de projet (Dataview) → le dashboard les détecte automatiquement

Rien n’a été fait pour le dashboard. Chaque brique existait déjà. Le dashboard est juste l’agrégateur final.

Côté technique

  • Script : Python 3.12, stdlib uniquement
  • Fréquence : cron toutes les 15 minutes
  • Stockage : un seul fichier HTML (~13 Ko)
  • Authentification : Basic Auth Caddy (utilisateur jpr)
  • Domaine : dashboard.rouze.eu

Le code est volontairement simple — pas de framework, pas de ORM, pas de build step. Un seul fichier qui fait le tour des sources et crache du HTML. La simplicité est une force : si une source tombe, la carte correspondante est juste vide, le reste du dashboard continue de fonctionner.

Et Heimdall ?

J’utilise aussi Heimdall (heimdall.rouze.eu) comme page d’accueil de mes services — un annuaire visuel de tout ce qui tourne sur le homelab. Les deux sont complémentaires : Heimdall pour la navigation, le dashboard pour l’information en temps réel.

† 2 revisions

Laisser un commentaire

To respond on your own website, enter the URL of your response which should contain a link to this post's permalink URL. Your response will then appear (possibly after moderation) on this page. Want to update or remove your response? Update or delete your post and re-enter your post's URL again. (Find out more about Webmentions.)