Summary
New /storage page showing Docker volume disk usage, per-container storage, filesystem mount points, and backup status.
Problem
No visibility into what's consuming disk space across Docker volumes and containers. No way to check if backups are running.
Implementation
Backend
- New
internal/collectors/storage.go:
- Query Docker API for volume list + sizes (
/system/df)
- Parse container mounts to show per-container storage paths
- Read filesystem mount points via
/proc/mounts with statfs for each
- Scan for common backup tools (check cron jobs, systemd timers, look for backup scripts in common locations)
- API endpoints:
GET /api/v1/storage/volumes — Docker volumes with sizes
GET /api/v1/storage/mounts — filesystem mount points with usage
GET /api/v1/storage/backups — detected backup schedules and last run times
Frontend
- Horizontal bar charts for volume sizes (sorted largest first)
- Mount point cards with usage progress bars and color coding (green < 70%, yellow < 85%, red >= 85%)
- Backup status cards: last run time, next scheduled, success/failure indicator
Files to create/modify
- New
internal/collectors/storage.go
internal/collectors/docker.go — extend with system df query
internal/server/server.go — new routes
- New
frontend/src/routes/storage/+page.svelte
frontend/src/routes/+layout.svelte — add nav item
Summary
New
/storagepage showing Docker volume disk usage, per-container storage, filesystem mount points, and backup status.Problem
No visibility into what's consuming disk space across Docker volumes and containers. No way to check if backups are running.
Implementation
Backend
internal/collectors/storage.go:/system/df)/proc/mountswithstatfsfor eachGET /api/v1/storage/volumes— Docker volumes with sizesGET /api/v1/storage/mounts— filesystem mount points with usageGET /api/v1/storage/backups— detected backup schedules and last run timesFrontend
Files to create/modify
internal/collectors/storage.gointernal/collectors/docker.go— extend with system df queryinternal/server/server.go— new routesfrontend/src/routes/storage/+page.sveltefrontend/src/routes/+layout.svelte— add nav item