implemented git sync for app templates
This commit is contained in:
+40
-9
@@ -7,7 +7,7 @@
|
||||
>
|
||||
> Ask Claude Code: "Please update CONTEXT.md with what we did today"
|
||||
|
||||
Last updated: 2026-02-15
|
||||
Last updated: 2026-02-15 (session 2)
|
||||
|
||||
---
|
||||
|
||||
@@ -28,7 +28,34 @@ Last updated: 2026-02-15
|
||||
- **Running on:** demo-felhom (N100 mini PC) at 192.168.0.162:8080
|
||||
- **All Phase 1 features working:** deploy, start/stop/restart/update, logs, health-aware states, auth
|
||||
|
||||
### What was just completed (2026-02-15)
|
||||
### What was just completed (2026-02-15 session 2)
|
||||
- **Phase 4: Git Sync + App Catalog Audit** — major milestone
|
||||
- **Git sync module** (`internal/sync/sync.go`):
|
||||
- Clones/pulls app-catalog-felhom.eu repo to local cache on startup
|
||||
- Periodic sync based on `git.sync_interval` (default 15m)
|
||||
- Copies `docker-compose.yml` + `.felhom.yml` to stacks dir (never overwrites `app.yaml`/`.env`)
|
||||
- SHA-256 content comparison — only writes changed files
|
||||
- Triggers `ScanStacks()` after sync so dashboard updates immediately
|
||||
- Uses `os/exec` git CLI — no Go git library dependency
|
||||
- **Manual sync button** ("Sablonok frissítése") on Alkalmazások page:
|
||||
- `POST /api/sync` endpoint with 30s debounce
|
||||
- Toast notification shows result (success/failure/what changed)
|
||||
- Auto-reloads page if new apps or updates detected
|
||||
- **Sync status** added to `/api/system/info` (last_sync, last_status, syncing flag)
|
||||
- **.felhom.yml files created for all 10 apps** (paperless-ngx already had one):
|
||||
- actualbudget, docmost, filebrowser, homebox, immich, mealie, romm, stirling-pdf, vaultwarden
|
||||
- All follow the same format: display_name, description, category, subdomain, resources, deploy_fields
|
||||
- **Docker Compose templates audited and fixed** for all 10 apps:
|
||||
- Fixed `{{DOMAIN}}` → `${DOMAIN}` syntax in homebox, mealie, romm, stirling-pdf
|
||||
- Fixed `{{HDD_PATH}}` → `${HDD_PATH}` in romm
|
||||
- Added `deploy.resources.limits.memory` to all services across all templates
|
||||
- Added `TZ=Europe/Budapest` to all sidecar services (postgres, redis, mariadb)
|
||||
- Added healthcheck to romm main service
|
||||
- Added `romm-redis` `condition: service_healthy` (was `service_started`)
|
||||
- Standardized header comment blocks across all templates
|
||||
- **Documentation updated**: app-catalog README, CLAUDE.md, CONTEXT.md
|
||||
|
||||
### Previously completed (2026-02-15 session 1)
|
||||
- **Memory validation during deployment**:
|
||||
- Pre-deploy memory check: compares `mem_request` sum against usable system RAM
|
||||
- Hard block if requests exceed usable memory (total - 384MB reserved)
|
||||
@@ -66,12 +93,13 @@ Last updated: 2026-02-15
|
||||
7. Documentation: restart vs up -d for image updates
|
||||
|
||||
### What's next (priorities)
|
||||
1. Deploy a second app (e.g., Immich, Jellyfin) to validate the template system
|
||||
2. Test on Raspberry Pi (pi-customer-1)
|
||||
3. Add `paths.hdd_path` to demo-felhom controller.yaml to enable HDD bar
|
||||
4. Add memory limits + `mem_request`/`mem_limit` to other app catalog templates (Immich, Jellyfin, etc.)
|
||||
5. Phase 2 continued: CPU/temperature metrics, Healthchecks.io pings
|
||||
6. Phase 3: Backup system (DB dumps + restic)
|
||||
1. Build + deploy the updated controller with git sync module
|
||||
2. Deploy a second app (e.g., ActualBudget — simplest, or Immich — tests HDD + secrets) to validate all .felhom.yml files
|
||||
3. Test git sync end-to-end: push a template change to app-catalog, verify controller picks it up
|
||||
4. Test on Raspberry Pi (pi-customer-1)
|
||||
5. Add `paths.hdd_path` to demo-felhom controller.yaml to enable HDD bar
|
||||
6. Phase 2 continued: CPU/temperature metrics, Healthchecks.io pings
|
||||
7. Phase 3: Backup system (DB dumps + restic)
|
||||
|
||||
## Architecture decisions
|
||||
|
||||
@@ -90,6 +118,9 @@ Last updated: 2026-02-15
|
||||
| mem_request vs mem_limit (K8s-inspired) | Requests = expected usage (hard block), limits = peak (overcommit OK) |
|
||||
| 384MB reserved for system | Prevents deploying apps that would starve the OS/controller |
|
||||
| Logo SVG embedded as Go constant | Same approach as CSS/HTML — zero external file deps |
|
||||
| Git sync via os/exec git CLI | No Go git library needed, git is in the container image |
|
||||
| SHA-256 for content comparison | Only copy changed files, avoid unnecessary disk writes |
|
||||
| 30s debounce on manual sync | Prevents spamming the git server |
|
||||
|
||||
## Key file locations on demo-felhom
|
||||
|
||||
@@ -120,7 +151,7 @@ Last updated: 2026-02-15
|
||||
| Repository | Status | Notes |
|
||||
|------------|--------|-------|
|
||||
| deploy-felhom-compose | Active | This repo. Controller code + deploy scripts |
|
||||
| app-catalog-felhom.eu | Active | 49 app templates, paperless-ngx has memory limits |
|
||||
| app-catalog-felhom.eu | Active | 10 app templates, all with .felhom.yml metadata + memory limits |
|
||||
| felhom.eu | Stable | Website live, SEO indexed, email working |
|
||||
| homelab-manifests | Stable | k3s cluster running (dooplex.hu services) |
|
||||
| misc-scripts | Utility | collect-repo.sh, backup helpers |
|
||||
|
||||
Reference in New Issue
Block a user