Operator-directed (Vuong 2026-08-13): migrated stonehenge-park off the nh3-docker beta deployment to a permanent fixture on ana-docker (10.250.50.70) before the v1.0.0 final cut. SQLite (park-data) migrated consistently (stop -> tar-copy -> start; byte-identical). restic auto-covered by ana-docker's /var/lib/docker/volumes source. Stable name park.phasefinal.com -> 10.250.50.70 (Cloudflare DNS-only) so clients decouple from the host IP. Homepage tile 'The Henge' added. nh3-docker stack left stopped as rollback pending park-dev cutover verification.
48 lines
2.3 KiB
Markdown
48 lines
2.3 KiB
Markdown
# park (stonehenge-park — "the henge")
|
|
|
|
Self-contained needs-attention tracker: FastAPI + SQLite (FTS5) + an in-process
|
|
scheduler, one container. Source: `gitea.phasefinal.com/vh/stonehenge-park`,
|
|
deployed at tag **v1.0.0-beta.1**. Owned by `park-dev`.
|
|
|
|
- **Host:** ana-docker (`10.250.50.70`), compose home `/opt/docker/compose/park/`.
|
|
Permanent home since 2026-08-13 (migrated off nh3-docker before the v1.0.0 final cut).
|
|
- **Stable name:** `park.phasefinal.com` → `10.250.50.70` (Cloudflare, DNS-only/internal) — clients
|
|
and Homepage point at the name so future moves need no client edits.
|
|
- **Port:** `8420` (host + container). **LAN/WG-internal only — never internet-exposed.**
|
|
- **Data:** named volume `park-data` → `/data`; SQLite single file `/data/park.db`
|
|
(the sole source of truth). Covered by restic via the host's `/var/lib/docker/volumes`
|
|
backup source — no per-volume add needed. (⚠ nh3-docker's restic repo was broken as of
|
|
2026-08-12 — see fleet infra notes.)
|
|
- **Secret:** `PARK_API_KEY` from the vault (`secret get nh3-dev/park-api-key`), in the
|
|
host `.env` (chmod 600). `/healthz` is unauthenticated; `/park/*` needs the bearer key.
|
|
- **Health:** `GET /healthz` → `{"status":"ok"}` (image `HEALTHCHECK` built in).
|
|
|
|
## Image is built locally (no registry yet)
|
|
|
|
```bash
|
|
# on nh3-docker:
|
|
cd ~/deploy-src/stonehenge-park # rsync'd from the tag
|
|
sudo docker build -t park:v1.0.0-beta.1 .
|
|
cd /opt/docker/compose/park && sudo docker compose up -d
|
|
```
|
|
|
|
Swap `image:` for a registry ref once one exists (park-dev left the door open).
|
|
|
|
## althing wiring (TODO)
|
|
|
|
The scheduler posts needs-attention snapshots to althing handle `henge-crow` by
|
|
shelling out to `althing-cli post` inside the container. `althing-cli` is **not yet
|
|
wired into the container**, so `PARK_ALTHING_CHANNEL` is set **empty** in the host
|
|
`.env` (push disabled; REST endpoints fully functional — graceful by design). To
|
|
enable: get `althing-cli` reachable in-container (bind-mount + config / sidecar /
|
|
host-run), set `PARK_ALTHING_CHANNEL=henge-crow`, recreate.
|
|
|
|
## Verify
|
|
|
|
```bash
|
|
curl -s http://10.100.50.40:8420/healthz # {"status":"ok"}
|
|
curl -s http://10.100.50.40:8420/ # UI shell
|
|
curl -s -H "Authorization: Bearer $KEY" \
|
|
http://10.100.50.40:8420/park/due-count # {"count": N}
|
|
```
|