docs: update CONTEXT.md and README for v0.6.0
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
+33
-12
@@ -24,7 +24,7 @@ controller generates secrets, saves app.yaml, runs `docker compose up -d`, and t
|
||||
with Traefik routing and health checks. The dashboard correctly shows real-time container states
|
||||
including health substatus (starting → healthy → running).
|
||||
|
||||
Current version: **v0.4.0**
|
||||
Current version: **v0.6.0**
|
||||
|
||||
### What works
|
||||
- Dashboard with live container state (green/orange/yellow/red)
|
||||
@@ -55,6 +55,10 @@ Current version: **v0.4.0**
|
||||
- Restic backup with auto-password generation, snapshot, prune, stats
|
||||
- Backup status card on dashboard with manual "Mentés most" trigger button
|
||||
- Backup API endpoints: status query and manual trigger
|
||||
- SQLite metrics store (system + container metrics, 60s collection, 30-day retention)
|
||||
- Heartbeat ping (5-minute "I'm alive" signal to Healthchecks)
|
||||
- Weekly backup integrity check (restic check, Sunday 04:00)
|
||||
- Central hub reporting (periodic JSON push to felhom-hub service)
|
||||
|
||||
### Known issues / next priorities
|
||||
- Cloudflare Tunnel + Traefik TLS: paperless.demo-felhom.eu works locally but shows "Not secure" (certificate chain not fully validated through tunnel)
|
||||
@@ -87,10 +91,10 @@ Current version: **v0.4.0**
|
||||
│ │ └──────────┘ │ │
|
||||
│ └────────────────────────────────────────────┘ │
|
||||
└─────────────────────────────────────────────────────────────────┘
|
||||
│ pings │ git pull
|
||||
▼ ▼
|
||||
status.felhom.eu gitea.dooplex.hu
|
||||
(Healthchecks on k3s) (stack definitions)
|
||||
│ pings │ JSON push │ git pull
|
||||
▼ ▼ ▼
|
||||
status.felhom.eu hub.felhom.eu gitea.dooplex.hu
|
||||
(Healthchecks) (central dashboard) (stack definitions)
|
||||
```
|
||||
|
||||
## Repository Layout
|
||||
@@ -121,9 +125,18 @@ controller/
|
||||
│ │ ├── pinger.go # Healthchecks.io HTTP ping client
|
||||
│ │ └── healthcheck.go # System health checks (disk, mem, CPU, temp, Docker)
|
||||
│ ├── backup/
|
||||
│ │ ├── backup.go # Backup orchestrator (DB dumps + restic + prune)
|
||||
│ │ ├── backup.go # Backup orchestrator (DB dumps + restic + prune + integrity)
|
||||
│ │ ├── dbdump.go # Database auto-discovery + dump (pg_dump, mariadb-dump)
|
||||
│ │ └── restic.go # Restic operations (init, snapshot, prune, stats)
|
||||
│ │ └── restic.go # Restic operations (init, snapshot, prune, check, stats)
|
||||
│ ├── metrics/
|
||||
│ │ ├── store.go # SQLite metrics storage (system + container, downsampled queries)
|
||||
│ │ ├── collector.go # Background collector (60s interval, system + docker stats)
|
||||
│ │ ├── types.go # SystemSample, ContainerSample, StaticSystemInfo structs
|
||||
│ │ └── sysinfo.go # Host-level static info (/proc, /etc)
|
||||
│ ├── report/
|
||||
│ │ ├── types.go # Hub report JSON payload definitions
|
||||
│ │ ├── builder.go # Builds report from system/stacks/backup/metrics state
|
||||
│ │ └── pusher.go # HTTP POST to central hub (retry, Bearer auth)
|
||||
│ └── web/
|
||||
│ ├── server.go # HTTP server, routing, static file serving
|
||||
│ ├── auth.go # Session auth, login/logout handlers
|
||||
@@ -159,6 +172,8 @@ controller/
|
||||
| **Sync** | `internal/sync/` | ✅ Done | Git-based app catalog sync (clone/pull, content-hash copy) |
|
||||
| **Scheduler** | `internal/scheduler/` | ✅ Done | Central job scheduler (periodic + daily, skip-if-running) |
|
||||
| **Monitor** | `internal/monitor/` | ✅ Done | Healthchecks.io pings, system health checks |
|
||||
| **Metrics** | `internal/metrics/` | ✅ Done | SQLite time-series store, system + container collection |
|
||||
| **Report** | `internal/report/` | ✅ Done | Central hub push (JSON report builder + HTTP pusher) |
|
||||
| **Backup** | `internal/backup/` | ✅ Done | DB auto-discovery + dump, restic snapshots, prune, manual trigger |
|
||||
|
||||
## Stack Management
|
||||
@@ -371,7 +386,7 @@ docker compose up -d
|
||||
|
||||
| Node | Hardware | Domain | IP | Status |
|
||||
|------|----------|--------|----|--------|
|
||||
| demo-felhom | Acemagic GK3PLUS N100, 16G RAM, 512G SSD + 1TB HDD | demo-felhom.eu | 192.168.0.162 | ✅ Controller v0.4.0 + Paperless-ngx running |
|
||||
| demo-felhom | Acemagic GK3PLUS N100, 16G RAM, 512G SSD + 1TB HDD | demo-felhom.eu | 192.168.0.162 | ✅ Controller v0.6.0 + Paperless-ngx running |
|
||||
| pi-customer-1 | Raspberry Pi 3B+, 1G RAM, 32G SD | pi-customer-1.local | — | 📲 Not yet tested |
|
||||
|
||||
### First deployment log (Paperless-ngx on demo-felhom)
|
||||
@@ -445,6 +460,9 @@ docker compose up -d
|
||||
- [x] Central job scheduler (replaces ad-hoc goroutines)
|
||||
- [x] Healthchecks.io-compatible HTTP pinger with retry logic
|
||||
- [x] System health checks (disk, memory, CPU, temp, Docker, protected containers)
|
||||
- [x] Heartbeat ping (5-minute "I'm alive" signal)
|
||||
- [x] SQLite metrics store (system + container metrics, 60s collection, 30-day prune)
|
||||
- [x] Backup integrity check (weekly restic check with Healthchecks ping)
|
||||
- [ ] Customer notifications (email/Telegram)
|
||||
|
||||
### Phase 3 — Backups ✅ COMPLETE
|
||||
@@ -472,10 +490,13 @@ docker compose up -d
|
||||
- [ ] Health-based rollback mechanism
|
||||
- [ ] Config export/import
|
||||
|
||||
### Phase 6 — Central Management (future)
|
||||
- [ ] API authentication for remote management
|
||||
- [ ] Central dashboard on k3s querying all customer controllers
|
||||
### Phase 6 — Central Management (in progress)
|
||||
- [x] Central hub reporting (controller → hub JSON push with Bearer auth)
|
||||
- [x] Hub report builder (system, stacks, backup, health, containers, metrics)
|
||||
- [x] Hub service (felhom-hub: REST API + SQLite + dark-theme dashboard)
|
||||
- [x] K8s manifests for hub deployment on k3s
|
||||
- [ ] Fleet-wide update management
|
||||
- [ ] Customer notifications (email/Telegram)
|
||||
|
||||
## Related Repositories
|
||||
|
||||
@@ -483,5 +504,5 @@ docker compose up -d
|
||||
|------------|---------|
|
||||
| [deploy-felhom-compose](https://gitea.dooplex.hu/admin/deploy-felhom-compose) | This repo — controller + deploy scripts |
|
||||
| [app-catalog-felhom.eu](https://gitea.dooplex.hu/admin/app-catalog-felhom.eu) | Docker Compose templates + .felhom.yml metadata |
|
||||
| [felhom.eu](https://gitea.dooplex.hu/admin/felhom.eu) | Website + app assets + felhom infra manifests |
|
||||
| [felhom.eu](https://gitea.dooplex.hu/admin/felhom.eu) | Website + app assets + felhom infra manifests (incl. felhom-hub) |
|
||||
| [homelab-manifests](https://gitea.dooplex.hu/admin/homelab-manifests) | k3s cluster manifests (dooplex.hu) |
|
||||
Reference in New Issue
Block a user