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:
+47
-17
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user