|
|
|
@@ -2,7 +2,7 @@
|
|
|
|
|
|
|
|
|
|
> Read automatically at session start. Stable orientation only — **current state lives in
|
|
|
|
|
> `CONTEXT.md` and the top of `CHANGELOG.md`**, never here. Cross-repo orientation: workspace-root
|
|
|
|
|
> `e:\git\CLAUDE.md`.
|
|
|
|
|
> `/mnt/5_hdd/felhom.eu/git/CLAUDE.md`.
|
|
|
|
|
|
|
|
|
|
!!! IMPORTANT !!!
|
|
|
|
|
- Always update CHANGELOG.md whenever you modified the code, and pushed to git!!
|
|
|
|
@@ -106,23 +106,27 @@ Per-package helpers/seams/traps: **`REUSE.md`** (maintained same-commit as helpe
|
|
|
|
|
|
|
|
|
|
Exercise the SERVER-SIDE PIPELINE a real user triggers, end-to-end (connect → enroll → deploy). The
|
|
|
|
|
forbidden shortcut is BYPASSING that pipeline (the F9 episode: raw agent guest-attach + hand-set
|
|
|
|
|
state). Invoking the exact endpoint the UI invokes is an acceptable proxy when a browser tool isn't
|
|
|
|
|
available — no server logic is skipped, only rendering; say which method was used. For strict
|
|
|
|
|
end-to-end UI coverage use claude-in-chrome (attaches only to sessions started AFTER the bridge
|
|
|
|
|
connected) or a manual click-through.
|
|
|
|
|
state). **`claude-in-chrome` is NOT available in the DooPlex environment** — the standard method is
|
|
|
|
|
endpoint-level: invoke the exact endpoint the UI invokes (no server logic is skipped, only
|
|
|
|
|
rendering) and say which method was used. Strict end-to-end UI coverage is a manual click-through.
|
|
|
|
|
|
|
|
|
|
## Environment & access
|
|
|
|
|
|
|
|
|
|
Claude Code runs on Windows 11; repos in `E:\git\` (`/e/git/` in Git Bash). All repos hosted at
|
|
|
|
|
`gitea.dooplex.hu/admin/`. **SSH binary MUST be** `SSH=/c/Windows/System32/OpenSSH/ssh.exe`
|
|
|
|
|
(Git Bash's ssh lacks the Windows agent — fails silently).
|
|
|
|
|
Claude Code runs **on DooPlex (192.168.0.180, Debian 13, user `kisfenyo`)**; repos in
|
|
|
|
|
`/mnt/5_hdd/felhom.eu/git/`, build dirs in `/mnt/5_hdd/felhom.eu/build/`. All repos hosted at
|
|
|
|
|
`gitea.dooplex.hu/admin/`. Builds are local commands; felhom-pve is one SSH hop.
|
|
|
|
|
|
|
|
|
|
| Host | Access | Role |
|
|
|
|
|
|------|--------|------|
|
|
|
|
|
| Build server (k3s) | `$SSH kisfenyo@192.168.0.180` | build + push images (`/mnt/5_hdd/felhom.eu/build/felhom-controller` — all felhom dirs moved off the SSD to `/mnt/5_hdd/felhom.eu/` 2026-07-18) |
|
|
|
|
|
| Demo Proxmox host `demo-felhom` | `$SSH felhom-pve` (root@192.168.0.162) | `pct` into guests; live validation |
|
|
|
|
|
| Demo guest 9201 | `pct exec 9201 -- ...` on felhom-pve | the live demo controller (golden/bootstrap-managed) |
|
|
|
|
|
| felhotest (legacy) | `$SSH -p 33022 kisfenyo@router.abonet.hu` | OLD /opt/docker compose mechanism |
|
|
|
|
|
| **DooPlex (this host)** | local — `/mnt/5_hdd/felhom.eu/{git,build}/` | build + push images, `sudo kubectl` |
|
|
|
|
|
| Demo Proxmox host `demo-felhom` | `ssh felhom-pve` (root@192.168.0.162) | `pct` into guests; live validation |
|
|
|
|
|
| Demo guest 9201 | `ssh felhom-pve "pct exec 9201 -- ..."` | the live demo controller (golden/bootstrap-managed) |
|
|
|
|
|
| felhotest (legacy) | `ssh -p 33022 kisfenyo@router.abonet.hu` | OLD /opt/docker compose mechanism |
|
|
|
|
|
|
|
|
|
|
> **Legacy: Windows workstation.** Until 2026-07-19 CC ran on Windows 11 with repos in `E:\git\`,
|
|
|
|
|
> and every remote command needed `SSH=/c/Windows/System32/OpenSSH/ssh.exe` (Git Bash's ssh lacks
|
|
|
|
|
> the Windows agent and fails silently — see `docs/vscode-ssh-fix.md`), plus `MSYS_NO_PATHCONV=1`
|
|
|
|
|
> for `pct exec`. Retained in case that environment is revived.
|
|
|
|
|
|
|
|
|
|
External access via Cloudflare Tunnel → Traefik; Pi-hole forwards `*.demo-felhom.eu` → .162 locally.
|
|
|
|
|
|
|
|
|
@@ -131,12 +135,18 @@ External access via Cloudflare Tunnel → Traefik; Pi-hole forwards `*.demo-felh
|
|
|
|
|
**Full runbook: use the `felhom-build-deploy` skill.** Summary (guest 9201 is bootstrap-managed —
|
|
|
|
|
**no compose file**; `felhom-controller-bootstrap.service` runs the tag in `/etc/felhom-controller-image`):
|
|
|
|
|
|
|
|
|
|
> **Clean-tree gate before any build:** `git status --porcelain` must be empty and
|
|
|
|
|
> `git rev-parse HEAD` must equal `git rev-parse origin/main` in the repo being built. An unpushed
|
|
|
|
|
> change does not exist — never build a dirty or unpushed tree. The `git pull` in the build step
|
|
|
|
|
> stays (it is a no-op when you work in this tree, and load-bearing if anything was pushed from
|
|
|
|
|
> elsewhere).
|
|
|
|
|
|
|
|
|
|
| Step | Command |
|
|
|
|
|
|------|---------|
|
|
|
|
|
| 1. Commit + push | `git add -A && git commit -m "..." && git push` |
|
|
|
|
|
| 2. Build + push image | `$SSH kisfenyo@192.168.0.180 "cd /mnt/5_hdd/felhom.eu/build/felhom-controller && git -C /mnt/5_hdd/felhom.eu/git/felhom-controller pull && ./build.sh <VER> --push"` (build.sh does NOT pull — the explicit pull is load-bearing) |
|
|
|
|
|
| 3. Deploy (9201) | `$SSH felhom-pve "pct exec 9201 -- bash -c 'docker pull gitea.dooplex.hu/admin/felhom-controller:<VER> && echo gitea.dooplex.hu/admin/felhom-controller:<VER> > /etc/felhom-controller-image && systemctl restart felhom-controller-bootstrap.service'"` |
|
|
|
|
|
| 4. Verify | `$SSH felhom-pve "pct exec 9201 -- docker ps --filter name=felhom-controller --format '{{.Image}} {{.Status}}'"` + container logs |
|
|
|
|
|
| 1. Commit + push | `git add <explicit paths> && git commit -m "..." && git push` |
|
|
|
|
|
| 2. Build + push image | `cd /mnt/5_hdd/felhom.eu/build/felhom-controller && git -C /mnt/5_hdd/felhom.eu/git/felhom-controller pull && ./build.sh <VER> --push` (build.sh does NOT pull — the explicit pull is load-bearing) |
|
|
|
|
|
| 3. Deploy (9201) | `ssh felhom-pve "pct exec 9201 -- bash -c 'docker pull gitea.dooplex.hu/admin/felhom-controller:<VER> && echo gitea.dooplex.hu/admin/felhom-controller:<VER> > /etc/felhom-controller-image && systemctl restart felhom-controller-bootstrap.service'"` |
|
|
|
|
|
| 4. Verify | `ssh felhom-pve "pct exec 9201 -- docker ps --filter name=felhom-controller --format '{{.Image}} {{.Status}}'"` + container logs |
|
|
|
|
|
|
|
|
|
|
Hub build/deploy lives in `felhom.eu` (GitOps) — see that repo's CLAUDE.md / the skill. Catalog
|
|
|
|
|
changes (`app-catalog-felhom.eu`): commit+push; controller sync picks them up ≤15 min or via the
|
|
|
|
|