No description
  • Go 49.9%
  • HTML 29.4%
  • CSS 20.7%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-10-23 00:15:47 +02:00
web Add files 2026-10-23 00:15:47 +02:00
.gitignore Initial commit 2026-10-22 21:45:57 +00:00
config.json Add files 2026-10-23 00:15:47 +02:00
go.mod Add files 2026-10-23 00:15:47 +02:00
LICENSE Initial commit 2026-10-22 21:45:57 +00:00
main.go Add files 2026-10-23 00:15:47 +02:00
README.md Initiale commit 2026-10-22 23:53:32 +02:00

HTPC Dashboard

Tableau de bord web léger pour un HTPC sous Void Linux.

Développé en Go, il permet de surveiller les services multimédias et l'espace disque depuis une interface web simple, sans dépendance à un conteneur.

Fonctionnalités

  • État des services multimédias via HTTP.
  • Accès direct aux interfaces web des services.
  • Suivi de l'espace disque des systèmes de fichiers.
  • Calcul de la taille des répertoires de médias et de téléchargements.
  • Actualisation automatique du tableau de bord.
  • Informations système : processeur, mémoire vive et stockage.
  • Binaire autonome, avec interface HTML et CSS intégrée.
  • Exécution native sous Void Linux avec runit.

Services surveillés

La configuration par défaut prévoit les services suivants :

La liste est configurable.

Prérequis

  • Void Linux ou un système Linux compatible.
  • Go pour compiler le programme.
  • Des services multimédias accessibles depuis la machine.

Compilation et installation

Depuis la racine du dépôt :

go build -trimpath -o htpc-dashboard .
sudo install -Dm755 htpc-dashboard /usr/bin/htpc-dashboard

Installer la configuration :

sudo install -d -m 755 /etc/htpc-dashboard
sudo install -m 644 config.json /etc/htpc-dashboard/config.json

Le programme utilise par défaut /etc/htpc-dashboard/config.json. Le chemin peut être remplacé avec la variable d'environnement DASHBOARD_CONFIG.

Configuration

Exemple minimal de config.json :

{
  "listen": ":8080",
  "refresh_seconds": 30,
  "http_timeout_seconds": 2,
  "services": [
    {
      "id": "jellyfin",
      "name": "Jellyfin",
      "url": "http://localhost:8096/"
    }
  ],
  "disks": [
    {
      "name": "Système",
      "path": "/",
      "type": "filesystem"
    },
    {
      "name": "Médias",
      "path": "/srv/media",
      "type": "directory"
    },
    {
      "name": "Téléchargements",
      "path": "/srv/mirror",
      "type": "directory"
    }
  ]
}

Types de stockage :

  • filesystem : capacité, espace utilisé, espace disponible et pourcentage d'occupation.
  • directory : taille cumulée des fichiers contenus dans le répertoire.

Les chemins sont ceux du système hôte, puisque le programme s'exécute nativement.

Les services de type http sont contrôlés par requête HTTP. Un service de type task, comme Recyclarr, est signalé comme tâche ponctuelle : le tableau de bord ne vérifie pas son dernier résultat d'exécution.

Service runit

Créer /etc/sv/htpc-dashboard/run :

#!/bin/sh
exec 2>&1
exec /usr/bin/htpc-dashboard

Rendre le script exécutable et activer le service :

sudo chmod 755 /etc/sv/htpc-dashboard/run
sudo ln -s /etc/sv/htpc-dashboard /var/service/

Commandes utiles :

sv status htpc-dashboard
sv restart htpc-dashboard

Service systemd

Pour les distributions utilisant systemd, créer /etc/systemd/system/htpc-dashboard.service :

[Unit]
Description=HTPC Dashboard
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/htpc-dashboard
Restart=on-failure
RestartSec=5
Environment=DASHBOARD_CONFIG=/etc/htpc-dashboard/config.json

[Install]
WantedBy=multi-user.target

Recharger la configuration systemd et activer le service :

sudo systemctl daemon-reload
sudo systemctl enable --now htpc-dashboard.service

Commandes utiles :

systemctl status htpc-dashboard.service
sudo systemctl restart htpc-dashboard.service
sudo journalctl -u htpc-dashboard.service -f

Le service utilise le fichier /etc/htpc-dashboard/config.json. Vérifier que ce fichier existe avant de démarrer le service.

Accès

Par défaut, le tableau de bord écoute sur le port 8080.

  • Interface web : http://<hostname_or_ip>:8080/
  • API de statut : http://<hostname_or_ip>:8080/api/status
  • Vérification de santé : http://<hostname_or_ip>:8080/healthz

Pour un accès depuis le réseau local, adapter l'adresse d'écoute et filtrer l'accès avec le pare-feu si nécessaire.

Licence

BSD2-Clause.