Lot 4 — Combler les 10 gaps du Dashboard
Date : 16/02/2026
Status : TERMINE
Resume
Implementation des 10 gaps identifies entre l'ancien dashboard bash et le nouveau dashboard Qwik SSR.
Backend (monitoring repo #95)
5 commits
acdf66d — 8 nouveaux endpoints (collectors + routes)
000e6e9 — Fix sudo pour lecture certs SSL
a40c2b3 — Fix crons: tac | grep -m 10 pour fichiers log volumineux
034d720 — Fix GitLab deploys: extraction environment.name au lieu de l'objet entier
- Pipelines #1118, #1121 : success
Nouveaux endpoints testes OK
| Endpoint |
Cache |
Resultat |
GET /api/docker/dev/containers |
30s |
27 containers dev-portainer |
GET /api/docker/dev/images |
120s |
29 images |
GET /api/services/registry |
120s |
22 services Smart-Deploy |
GET /api/services/syncthing |
120s |
running, Up 7 days |
GET /api/infra/ssl |
3600s |
1 cert wildcard (47j) |
GET /api/infra/nginx/detail |
300s |
56 sites (53 public, 3 local) |
GET /api/infra/zfs/extra |
300s |
ARC 22.9/32 GB, 11 disks |
GET /api/ai/models |
60s |
19 modeles Ollama |
Fichiers modifies
collectors/ssh.ts : +3 UUIDs, +5 fonctions, mounts enrichis
collectors/docker.ts : +collectDevContainers, +collectDevImages
collectors/ai.ts : +collectOllamaModels
collectors/crons.ts : +monitoring-collect entry, fix tac | grep -m 10
collectors/alerts.ts : +SSL cert rules, +dev containers rules
collectors/gitlab.ts : fix environment object → string
routes/docker.ts, routes/infra.ts, routes/services.ts, routes/ai.ts
Frontend (frontend repo #120)
1 commit
6b3a4fe — 11 fichiers, 896 insertions
- Pipeline #1117 : success
Pages modifiees/creees
| Gap |
Page |
Changement |
| 1 |
/docker/ |
Sections PROD + DEV |
| 2 |
/ |
Grille serveurs (RAM/disk/load/uptime) |
| 3 |
/services/ |
Table Smart-Deploy Registry |
| 4 |
/nginx/ + alerts |
Certs SSL + alertes |
| 5 |
/mounts/ |
NFS + symlinks + docker volumes |
| 6 |
/nginx/ |
NOUVELLE PAGE - stats, filtres, table sites |
| 7 |
/raidz/ |
ARC cache, serials disques, dossiers par pool |
| 8 |
/models/ |
Section Ollama live (19 modeles) |
| 9 |
/syncthing/ |
Card status live |
| 10 |
/crons/ |
Entry monitoring-collect |
Fichiers
lib/types.ts : 7 nouvelles interfaces + HostMounts enrichi
lib/api.ts : 8 nouvelles methodes
routes/layout.tsx : Nginx dans dropdown Infra
- 8 pages modifiees, 1 page creee (nginx)
Fixes post-deploiement
Fix SSL certs (commit 000e6e9)
collectSslCerts() retournait 0 certs car /etc/letsencrypt/ necessite root
- Fix :
sudo find + sudo openssl dans la commande SSH
- Verifie : 1 cert wildcard, 47 jours restants
Fix crons rsync-1to (commit a40c2b3)
- Le fichier log faisait 196 Mo (1.9M lignes)
grep 'pattern' file | tail -10 timeout via SSH
- Fix :
tac file | grep -m 10 'pattern' (lecture inversee, 10 premiers matchs)
- Verifie : rsync-1to status=ok, lastRun=2026-02-16T14:02:56
Fix crons rsync-8to (infra PVE, pas de commit)
- Le cron
/etc/cron.d/rsync-stock8-to-stock36 existait et rsync tournait
- Mais la sortie allait dans syslog (
logger -t rsync-stock8) et PAS dans /var/log/rsync-stock8-backup.log
- Le dashboard monitore le fichier log pour les marqueurs "Fin sync" — aucun depuis le 11 janvier
- Fix : modifie le cron.d pour ajouter
; echo "$(date): Fin sync" >> /var/log/rsync-stock8-backup.log sur les 3 entrees
- Le logger syslog est conserve (double ecriture)
- Verifie : rsync-8to status=ok, lastRun=2026-02-16T15:09:55
Fix GitLab page 404 (commit 034d720)
- L'API GitLab
/projects/:id/deployments retourne environment comme un objet {id, name, slug, ...}
- Le backend
collectDeploys() passait l'objet entier au frontend
- Qwik crashait en essayant de rendre un objet dans le JSX → page blanche (percue comme 404)
- Fix :
typeof d.environment === 'object' ? d.environment.name : String(d.environment)
- Verifie : API retourne
"environment": "production" (string), page /gitlab/ HTTP 200
- Pipeline #1121 : success (219s)
Verification finale — 4 crons tous OK
| Cron |
Status |
Last Run |
| rsync-8to |
ok |
2026-02-16T15:09:55 |
| rsync-1to |
ok |
2026-02-16T15:02:49 |
| gitlab-backup |
ok |
2026-02-16T05:00:50 |
| monitoring-collect |
ok |
2026-02-16T15:03:19 |