feat: PercoHub v1 — dashboard centralisé homelab
This commit is contained in:
@@ -0,0 +1,95 @@
|
||||
# PercoHub 🏠
|
||||
|
||||
Dashboard centralisé pour accéder à tous les services et projets du homelab de Perco.
|
||||
|
||||
## Stack
|
||||
|
||||
- **Backend** : PHP 8 (lecture `services.json`, check Docker + HTTP)
|
||||
- **Frontend** : Tailwind CSS CDN + Vanilla JS
|
||||
- **Données** : `services.json` — catalogue éditable manuellement
|
||||
|
||||
## Démarrage
|
||||
|
||||
```bash
|
||||
nohup php -S 0.0.0.0:9300 -t /home/perco/projects/percohub/ > /tmp/percohub-php.log 2>&1 &
|
||||
```
|
||||
|
||||
**URL locale** : http://192.168.1.29:9300
|
||||
|
||||
## Fonctionnalités
|
||||
|
||||
- ✅ Vue centralisée de tous les services (Docker + projets PHP)
|
||||
- ✅ Status live (Docker inspect + HTTP ping)
|
||||
- ✅ Catégories : Projets Luca / Infrastructure / Média / Domotique / Productivité / VPN Firefox
|
||||
- ✅ Filtre par catégorie (navbar)
|
||||
- ✅ Stats globales (online/offline)
|
||||
- ✅ Auto-refresh toutes les 30s
|
||||
- ✅ Clic sur une carte → ouvre l'URL dans un nouvel onglet
|
||||
- ✅ Dark theme cohérent avec les autres projets
|
||||
|
||||
## Structure
|
||||
|
||||
```
|
||||
percohub/
|
||||
├── index.php # Page principale (shell HTML)
|
||||
├── api.php # Backend : statuts Docker + HTTP
|
||||
├── services.json # Catalogue des services (à éditer)
|
||||
├── assets/
|
||||
│ ├── style.css # Dark theme custom
|
||||
│ └── app.js # Frontend : rendu, refresh, filtres
|
||||
└── README.md
|
||||
```
|
||||
|
||||
## Ajouter un service
|
||||
|
||||
Éditer `services.json` — ajouter un objet dans le tableau `services` de la bonne catégorie :
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "Mon Service",
|
||||
"desc": "Description courte",
|
||||
"url": "http://192.168.1.29:PORT",
|
||||
"docker": "nom-du-container",
|
||||
"tags": ["tag1", "tag2"]
|
||||
}
|
||||
```
|
||||
|
||||
- `url` : null si pas d'interface web
|
||||
- `docker` : null si ce n'est pas un container Docker (ex: serveur PHP)
|
||||
- Si `docker` est renseigné → status via `docker inspect`
|
||||
- Si seulement `url` → status via HTTP ping
|
||||
|
||||
## Ajouter une catégorie
|
||||
|
||||
Dans `services.json`, ajouter dans le tableau `categories` :
|
||||
|
||||
```json
|
||||
{
|
||||
"id": "ma-categorie",
|
||||
"name": "Ma Catégorie",
|
||||
"icon": "🔌",
|
||||
"color": "violet",
|
||||
"services": [...]
|
||||
}
|
||||
```
|
||||
|
||||
**Couleurs disponibles** : violet, slate, amber, emerald, sky, orange, rose
|
||||
|
||||
## API
|
||||
|
||||
| Endpoint | Description |
|
||||
|----------|-------------|
|
||||
| `/api.php?action=all` | Tous les services avec statuts |
|
||||
| `/api.php?action=config` | Catalogue brut (sans checks) |
|
||||
| `/api.php?action=docker` | Liste tous les containers Docker |
|
||||
|
||||
## Catégories actuelles
|
||||
|
||||
| Catégorie | Services |
|
||||
|-----------|----------|
|
||||
| 🛠️ Projets Luca | AgentStats, CronViz, MonStatut, AgentChat, HomeStatus |
|
||||
| 🔧 Infrastructure | Portainer, Traefik, Grafana, InfluxDB, Dashdot, Watchtower |
|
||||
| 🎬 Média | Plex, Jellyseerr, Sonarr, Radarr, Lidarr, Prowlarr, Jackett, qBittorrent, Pinchflat, Tautulli |
|
||||
| 🏠 Domotique | Home Assistant, ESPhome, Syncthing, Grott, Bresser Live, Mosquitto |
|
||||
| 💼 Productivité | Nextcloud, Gitea, VSCode, Planka, Actual Budget, CronMaster, Homarr |
|
||||
| 🦊 VPN Firefox | retak, coucouze, roxxor, xouz, nale |
|
||||
Reference in New Issue
Block a user