Date: 16/02/2026 Status : IMPLEMENTEE Priorite: HAUTE (suite directe Lot 1-2)
| Page | Script ancien | Donnees necessaires | Backend existant? |
|---|---|---|---|
| Architecture | 09-architecture.sh | VMs Proxmox, containers groupes par stack, ZFS, reseaux | Partiel (docker, zfs, system) |
| Montages | 06-montages.sh | NFS mounts, symlinks, Docker volumes par serveur | NON |
| Crons | 08-crons.sh | Status crons, historique rsync/gitlab, timeline 24h, schedulers containers | NON |
| 15-linkedin.sh | Profile LinkedIn, messages, campagne | NON (tres specifique) |
/architecture/)Contenu: Vue globale infra — 2 hyperviseurs avec VMs, containers groupes par stack avec couleurs, stockage ZFS, reseaux.
Backend:
docker/containers existe, il faut juste grouper cote frontendinfra/zfs existeinfra/system existeGET /api2/json/nodes/{node}/qemu)Nouveau backend necessaire:
GET /api/infra/vms — collecte VMs via Proxmox API sur les 2 hyperviseursComplexite: MOYENNE
/mounts/)Contenu: Par serveur — NFS mounts, symlinks, Docker volumes.
Backend:
mount -t nfs,nfs4 sur chaque serveurls -la /chemin — mais lesquels? L'ancien script lisait depuis config.json (hardcode)docker volume ls ou via Portainer APINouveau backend necessaire:
GET /api/infra/mounts — SSH sur chaque host pour NFS mounts + volumes DockerComplexite: MOYENNE (SSH deja en place pour les 5 hosts)
/crons/)Contenu: 4 crons systeme (monitoring, rsync 8to, rsync 1to, gitlab backup) avec:
Backend:
crontab -l + parsing logsgrep "Fin sync" /var/log/rsync-stock8-backup.log | tail -10grep "Fin sync" /var/log/rsync-stock1to-backup.log | tail -10ls /mnt/gitlab-nfs/backups/ | grep _gitlab_backup.tar | tail -10Nouveau backend necessaire:
GET /api/crons — Collecte status + historique des 4 crons via SSHGET /api/crons/logs/:name — Tail des logs d'un cron specifiqueGET /api/crons/schedulers — Container schedulersComplexite: HAUTE (parsing logs, timeline JS, plusieurs SSH)
/linkedin/)Contenu: Profil LinkedIn, messages recents, campagne rebranding.
Analyse: Page tres specifique a la campagne LinkedIn (temporaire). Les donnees viennent de browser-connector qui n'est pas connecte au backend dashboard. La majorite du contenu est du texte statique (posts, headlines, checklist).
Recommendation: DEPRIORITISER — pas de valeur ops pour le monitoring. Si voulu, faire une page simple avec le contenu statique de la campagne sans backend.
Complexite: BASSE (si statique) / HAUTE (si connecte a browser-connector)
| # | Page | Backend | Frontend | Justification |
|---|---|---|---|---|
| 1 | Architecture | 1 endpoint (VMs Proxmox) | Assemblage multi-endpoints | Vue la plus utile, donne le contexte global |
| 2 | Montages | 1 endpoint (SSH mounts) | Cartes par serveur | Utile, backend simple |
| 3 | Crons | 3 endpoints (status, logs, schedulers) | Timeline 24h + logs | Le plus complexe, timeline JS |
| 4 | Aucun (statique) | Page statique ou skip | Optionnel |
Nouveau fichier backend/src/collectors/proxmox.ts:
// Collecte VMs via Proxmox API (PVE + PVE155)
// GET /api2/json/nodes/{node}/qemu
// Retourne: [{name, vmid, status, maxmem, maxdisk, cpu}]
Nouveau endpoint GET /api/infra/vms dans routes/infra.ts (cache 120s)
Frontend: assemble /api/infra/vms + /api/docker/containers + /api/infra/zfs + data semi-statique (reseaux)
Ajout dans backend/src/collectors/ssh.ts:
export async function collectMounts(): Promise<MountInfo[]>
// SSH sur chaque host: mount -t nfs,nfs4 + docker volume ls
Nouveau endpoint GET /api/infra/mounts (cache 300s)
Nouveau fichier backend/src/collectors/crons.ts:
export async function collectCrons(): Promise<CronJob[]>
// SSH pour lire les logs rsync + gitlab backup
// Parse timestamps + status
export async function collectCronLogs(name: string): Promise<string>
// SSH pour tail -20 du log specifique
Endpoints:
GET /api/crons (cache 60s)GET /api/crons/logs/:name (pas de cache)Ajouts dans layout.tsx:
Infra ▼
Overview
RAIDZ
Architecture ← NEW
Montages ← NEW
Syncthing
Crons ← NEW
| Fichier | Repo | Action |
|---|---|---|
backend/src/collectors/proxmox.ts |
monitoring | CREER |
backend/src/collectors/crons.ts |
monitoring | CREER |
backend/src/collectors/ssh.ts |
monitoring | MODIFIER (ajout collectMounts) |
backend/src/routes/infra.ts |
monitoring | MODIFIER (ajout /vms, /mounts) |
backend/src/routes/crons.ts |
monitoring | CREER |
backend/src/index.ts |
monitoring | MODIFIER (ajout cronsRoutes) |
src/routes/architecture/index.tsx |
frontend | CREER |
src/routes/mounts/index.tsx |
frontend | CREER |
src/routes/crons/index.tsx |
frontend | CREER |
src/lib/api.ts |
frontend | MODIFIER |
src/lib/types.ts |
frontend | MODIFIER |
src/routes/layout.tsx |
frontend | MODIFIER |