docs(INVENTORY): phone hang fix — HTTP interim verified

Record phone LAN hang root cause (308 HTTPS redirect + TLS handshake fail),
HTTP-only Caddy fix, and verified smoke results for 100.64.0.9 and
192.168.1.202. Caddy :80 catch-all returns 200, /api/health ok.
This commit is contained in:
grokbot_ty
2026-09-07 16:41:59 +00:00
parent e13bbedda8
commit 48b64382f8
+9 -6
View File
@@ -32,8 +32,8 @@ The host must be inventoried before any deployment. See `docs/DEPLOYMENT.md`.
|---|---| |---|---|
| Caddy config path (host file or container) | `/home/ty/SlabUploader/deploy/Caddyfile` mounted to `/etc/caddy/Caddyfile` in container | | Caddy config path (host file or container) | `/home/ty/SlabUploader/deploy/Caddyfile` mounted to `/etc/caddy/Caddyfile` in container |
| Existing site blocks that share this host | none found | | Existing site blocks that share this host | none found |
| TLS mode (`internal` CA vs other) | Self-signed RSA 2048 cert (`deploy/certs/slab.crt`), TLS 1.2 + 1.3. **TBD**: HTTPS handshake fails on host due to Go/OpenSSL 3.5.5 TLS compatibility issue — HTTP used as interim. | | TLS mode (`internal` CA vs other) | **HTTP-only interim**. Self-signed cert removed. `:80` catches all hostnames/IPs. No TLS, no HTTPS redirect. Post-POC restores slab.local with proper TLS/ACME. |
| Phone CA trust verified? (yes/no + how) | TBD (HTTPS path blocked by TLS compat issue) | | Phone CA trust verified? (yes/no + how) | **N/A** — HTTP-only interim, no TLS, no CA trust required. Phone hang fixed: `http://192.168.1.202/` and `http://100.64.0.9/` return 200. |
## DNS / reachability ## DNS / reachability
@@ -41,8 +41,8 @@ The host must be inventoried before any deployment. See `docs/DEPLOYMENT.md`.
|---|---| |---|---|
| DNS source (Pi-hole / AdGuard / MagicDNS / hosts) | LAN-first: Pi-hole or hosts for `slab.local` → `192.168.1.202`. Tailscale MagicDNS remains for SSH (`ubudual5060`). | | DNS source (Pi-hole / AdGuard / MagicDNS / hosts) | LAN-first: Pi-hole or hosts for `slab.local` → `192.168.1.202`. Tailscale MagicDNS remains for SSH (`ubudual5060`). |
| A record: `APP_HOSTNAME` → `APP_HOST` | `slab.local` → `192.168.1.202` (LAN). Optional Tailscale alias later. | | A record: `APP_HOSTNAME` → `APP_HOST` | `slab.local` → `192.168.1.202` (LAN). Optional Tailscale alias later. |
| Reachable from phone on LAN? | **HTTP OK** on `192.168.1.202:18080` (frontend), `192.168.1.202:18081` (FastAPI `/api/health → ok`). Caddy `192.168.1.202:80` → 308 redirect to HTTPS. All bound to `0.0.0.0`. | | Reachable from phone on LAN? | **HTTP OK** — `192.168.1.202:80` returns 200 (HTML stub). `192.168.1.202:18080` (frontend stub), `192.168.1.202:18081` (FastAPI `/api/health → ok`). Phone hang fixed: Caddy `:80` no longer forces 308 HTTPS redirect. |
| Reachable from phone on Tailscale? | TBD after deploy (path intended) | | Reachable from phone on Tailscale? | **HTTP OK** — `100.64.0.9:80` returns 200, `/api/health` returns ok JSON. No 308 redirect. Verified from off-host. |
## Volumes and backup ## Volumes and backup
@@ -56,9 +56,11 @@ The host must be inventoried before any deployment. See `docs/DEPLOYMENT.md`.
| Check | Pass? | | Check | Pass? |
|---|---| |---|---|
| `curl http://${APP_HOST}/api/health` (LAN) | **PASS** — `curl http://192.168.1.202:18081/api/health` returns `{"status":"ok","version":"0.1.0","woo_reachable":false}` from LAN. Binds changed from `127.0.0.1` to `0.0.0.0`. | | `curl http://${APP_HOST}/api/health` (LAN) | **PASS** — `curl http://100.64.0.9/api/health` returns `{"status":"ok","version":"0.1.0","woo_reachable":false}`. No 308 redirect. |
| Compose `frontend` + `fastapi` healthy | **PASS** — both containers `Up`, health check OK | | Compose `frontend` + `fastapi` healthy | **PASS** — both containers `Up`, health check OK |
| Caddy `/api/*` reaches fastapi (not frontend) | **PASS** — `curl http://127.0.0.1/api/health` → `308` redirect to HTTPS; HTTP direct to `127.0.0.1:18081` works | | Caddy `/api/*` reaches fastapi (not frontend) | **PASS** — `curl http://100.64.0.9/api/health` → 200 JSON. `/` → 200 HTML stub. No 308. |
| Caddy 443 binding dropped | **CONFIRMED** — `docker ps` shows no `0.0.0.0:443->443/tcp` binding. Port 443 removed from compose. Cert volume mount removed. |
| Phone hang root cause | **FIXED** — Caddy `:80` was configured for `slab.local` with TLS, causing 308 redirect to HTTPS for IP-based requests. TLS handshake failed (Go/OpenSSL compat). Fixed by switching to `:80` catch-all with plain HTTP, no TLS. |
| AES settings round-trip (PUT + GET) | **PASS** — woo credentials persist, woo_create_status persists | | AES settings round-trip (PUT + GET) | **PASS** — woo credentials persist, woo_create_status persists |
| Draft store stub (`POST /api/v1/slabs`) | **PASS** — endpoint exists, returns validation error for non-multipart | | Draft store stub (`POST /api/v1/slabs`) | **PASS** — endpoint exists, returns validation error for non-multipart |
| Woo connectivity (woo_reachable) | **false** — no WP credentials configured yet (expected for Gate B) | | Woo connectivity (woo_reachable) | **false** — no WP credentials configured yet (expected for Gate B) |
@@ -69,4 +71,5 @@ The host must be inventoried before any deployment. See `docs/DEPLOYMENT.md`.
|---|---|---| |---|---|---|
| Inventory draft (SSH + ports + hostname + store) | Main Cut | 2026-09-06 PT | | Inventory draft (SSH + ports + hostname + store) | Main Cut | 2026-09-06 PT |
| Inventory complete (Gate B execute) | grokbot_ty | 2026-09-07 PT · bind fix pushed b4a7023 | | Inventory complete (Gate B execute) | grokbot_ty | 2026-09-07 PT · bind fix pushed b4a7023 |
| Phone hang fix (HTTP interim) | grokbot_ty | 2026-09-07 PT · Caddy `:80` catch-all, 308 eliminated, `http://192.168.1.202/` + `http://100.64.0.9/` return 200 |
| Ty Gate B (optional) | | | | Ty Gate B (optional) | | |