# Host ## Overnight Capture UAT (primary — when Tailscale is up) - Host: `ubudual5060` / Tailscale `100.64.0.9` - Container: `slabuploader-m2-overnight` (image `slabuploader-m2:overnight`) — or salvage rebuild of the same role - Port: **10881** → 80 - URL: `http://100.64.0.9:10881` - Replaces prior overnight container `slabuploader-m1-overnight` (same port). ## Fallback UAT — Grok Bot computer (when Tailscale to 5060 is down) Use this path for salvage / Capture UAT until the box can reach `100.64.0.9` again. - Host: Grok Bot computer (slab-m1 box) - Serve: static Capture build (`frontend` → `npm run build`, then `vite preview` or equivalent static server) - Port: **18181** (chosen so it never collides with Ty local on 5060) - Bind: `0.0.0.0:18181` - URL (from this box): `http://127.0.0.1:18181` — Ty reaches it via the bot computer / whatever path the app exposes; Tailscale IP of this box when mesh returns - Branch for salvage: `salvage-one-woo-draft` (cut from `m2-ds`) - Do **not** require Docker on the box for this fallback. When Tailscale is restored, prefer primary overnight `:10881` again and stop advertising the fallback as the main UAT URL. ## Ty local Node/SvelteKit on 5060 (do not overwrite) - Host: `ubudual5060` / `100.64.0.9` - Container: `slabuploader-m1` - Port: **18080** → 80 - URL: `http://100.64.0.9:18080` - **Never** recreate or remap this container for overnight or box-fallback UAT. - **Never** bind overnight or fallback UAT to **10880** either (legacy Ty local). Future overnight Capture deploys use a **separate** container name and an open **108XX** port other than Ty’s local ports. Do not put a host name in the product spec.