- Go 49.9%
- HTML 29.4%
- CSS 20.7%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| web | ||
| .gitignore | ||
| config.json | ||
| go.mod | ||
| LICENSE | ||
| main.go | ||
| README.md | ||
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.