docs: update CONTEXT.md and README.md for v0.4.0

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-15 11:20:30 +01:00
parent d32d9fb44b
commit 1596e86e69
2 changed files with 118 additions and 29 deletions
+47 -17
View File
@@ -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.3.0**
Current version: **v0.4.0**
### What works
- Dashboard with live container state (green/orange/yellow/red)
@@ -47,6 +47,14 @@ Current version: **v0.3.0**
- Clickable app cards on dashboard and applications pages (navigate to info page)
- Memory bar with two-segment visualization on deploy page (committed vs new app allocation)
- Deployment progress UI: 3-step progress panel with real-time health polling (config → containers → health check)
- CPU usage bar with load average display (1/5/15 min)
- Temperature display with colored indicator dot (thermal zone reading)
- Central job scheduler replacing ad-hoc goroutines (periodic + daily jobs)
- Healthchecks.io-compatible system health pings with retry logic
- Database auto-discovery and dump (PostgreSQL/MariaDB via docker exec)
- 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
### 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)
@@ -101,10 +109,21 @@ controller/
│ ├── sync/
│ │ └── sync.go # Git sync: clone/pull app catalog, content-hash copy
│ ├── api/router.go # REST API endpoints
│ ├── scheduler/
│ │ └── scheduler.go # Central job scheduler (Every, Daily, skip-if-running)
│ ├── system/
│ │ ├── info.go # SystemInfo struct
│ │ ├── info_linux.go # Linux: /proc/meminfo + statfs
│ │ ── info_other.go # Non-Linux stub
│ │ ├── info_linux.go # Linux: /proc/meminfo + statfs + loadavg + temperature
│ │ ── info_other.go # Non-Linux stub
│ │ ├── cpu_linux.go # CPU collector (background /proc/stat sampling)
│ │ └── cpu_other.go # CPU collector stub (non-Linux)
│ ├── monitor/
│ │ ├── 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)
│ │ ├── dbdump.go # Database auto-discovery + dump (pg_dump, mariadb-dump)
│ │ └── restic.go # Restic operations (init, snapshot, prune, stats)
│ └── web/
│ ├── server.go # HTTP server, routing, static file serving
│ ├── auth.go # Session auth, login/logout handlers
@@ -135,12 +154,12 @@ controller/
| **Config** | `internal/config/` | ✅ Done | Load & validate controller.yaml, env overrides |
| **Stacks** | `internal/stacks/` | ✅ Done | Compose operations, scanning, metadata, deploy flow |
| **API** | `internal/api/` | ✅ Done | REST endpoints (stacks, deploy, rescan, system info, health) |
| **System** | `internal/system/` | ✅ Done | System resource info (RAM, disk usage) for dashboard & API |
| **System** | `internal/system/` | ✅ Done | System resource info (RAM, disk, CPU, temperature, load) |
| **Web** | `internal/web/` | ✅ Done | Hungarian dashboard, auth, deploy pages, asset serving |
| **Sync** | `internal/sync/` | ✅ Done | Git-based app catalog sync (clone/pull, content-hash copy) |
| **Backup** | `internal/backup/` | 📲 Phase 3 | DB dumps, restic snapshots, restore |
| **Monitor** | `internal/monitor/` | 📲 Phase 2 | Health checks, Healthchecks pings, system metrics |
| **Scheduler** | `internal/scheduler/` | 📲 Phase 2 | Cron-like job runner for all periodic tasks |
| **Scheduler** | `internal/scheduler/` | ✅ Done | Central job scheduler (periodic + daily, skip-if-running) |
| **Monitor** | `internal/monitor/` | ✅ Done | Healthchecks.io pings, system health checks |
| **Backup** | `internal/backup/` | ✅ Done | DB auto-discovery + dump, restic snapshots, prune, manual trigger |
## Stack Management
@@ -352,7 +371,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.2.11 + Paperless-ngx running |
| 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 |
| 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)
@@ -385,7 +404,9 @@ docker compose up -d
| POST | `/api/stacks/{name}/optional-config` | Yes | Update optional config env vars |
| GET | `/api/stacks/{name}/logs` | Yes | Container logs (add `?raw=1` for plain text) |
| POST | `/api/stacks/rescan` | Yes | Trigger manual stack discovery |
| GET | `/api/system/info` | Yes | System resource usage (RAM, disk, HDD) |
| GET | `/api/system/info` | Yes | System resource usage (RAM, disk, CPU, temp, load) |
| GET | `/api/backup/status` | Yes | Backup status (last run, DB dump count, repo stats) |
| POST | `/api/backup/run` | Yes | Trigger manual backup (DB dumps + restic snapshot) |
## Status & Roadmap
@@ -412,20 +433,29 @@ docker compose up -d
- [x] Alphabetically sorted stack display
- [x] Deploy page doubles as read-only config viewer for deployed apps
### Phase 2 — Monitoring & Health
### Phase 2 — Monitoring & Health ✅ COMPLETE
- [x] System metrics on dashboard (RAM, SSD, HDD usage bars)
- [x] `/api/system/info` endpoint with live resource data
- [x] Pre-deploy memory validation (mem_request hard block, mem_limit soft warning)
- [x] Memory summary bar on deploy page
- [ ] CPU and temperature metrics
- [ ] Healthchecks.io ping integration
- [x] CPU usage collector (background /proc/stat sampling, 5s interval)
- [x] CPU usage bar on dashboard with load average display
- [x] Temperature reading from /sys/class/thermal (with /host/sys Docker mount)
- [x] Temperature display with colored indicator dot (green/yellow/red)
- [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)
- [ ] Customer notifications (email/Telegram)
### Phase 3 — Backups
- [ ] DB dump engine (PostgreSQL, MariaDB/MySQL, SQLite)
- [ ] Restic integration (snapshot, prune, check)
- [ ] Backup status on dashboard
- [ ] Manual backup trigger from UI
### Phase 3 — Backups ✅ COMPLETE
- [x] DB auto-discovery (PostgreSQL/MariaDB containers via docker inspect)
- [x] DB dump engine (pg_dump/mariadb-dump via docker exec, atomic writes)
- [x] Restic integration (auto-init, snapshot, prune, check, stats)
- [x] Restic password auto-generation (no manual setup needed)
- [x] Backup orchestrator (DB dumps + restic + weekly prune)
- [x] Backup status on dashboard (last run, DB count, repo stats)
- [x] Manual backup trigger from UI ("Mentés most" button)
- [x] `GET /api/backup/status` and `POST /api/backup/run` endpoints
- [ ] Restore workflow
### Phase 4 — Git Sync & Updates