diff --git a/.github/workflows/cd-staging.yml b/.github/workflows/cd-staging.yml index 5169f55..39e22f7 100644 --- a/.github/workflows/cd-staging.yml +++ b/.github/workflows/cd-staging.yml @@ -106,8 +106,11 @@ jobs: { echo "DOMAIN=staging.trails.cool" echo "STAGING_DATABASE=trails_staging" - echo "JOURNAL_HOST_PORT=3100" - echo "PLANNER_HOST_PORT=3101" + # Loki binds 10.0.0.2:3100 on the vSwitch interface, so the + # staging stack can't share 3100 — see CLAUDE.md "Staging & + # Previews" port table. + echo "JOURNAL_HOST_PORT=3110" + echo "PLANNER_HOST_PORT=3111" echo "JOURNAL_IMAGE_TAG=staging" echo "PLANNER_IMAGE_TAG=staging" echo "SENTRY_RELEASE=${{ github.sha }}" diff --git a/CLAUDE.md b/CLAUDE.md index 5d99430..a1332cf 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -229,8 +229,8 @@ A persistent staging stack and ephemeral PR previews share the flagship server w PR previews are **journal-only** — their `PLANNER_URL` points at the persistent staging planner so we don't pay 256MB per preview for an extra planner. The persistent staging planner's CSP allows `connect-src wss://*.staging.trails.cool` so PR-preview journals can talk to it. -**Port scheme** (host's loopback, reverse-proxied by Caddy via `host.docker.internal`): -- Persistent staging: journal `3100`, planner `3101` +**Port scheme** (host-published, reverse-proxied by Caddy via `host.docker.internal`): +- Persistent staging: journal `3110`, planner `3111` (3100 collides with Loki on the vSwitch interface) - PR `` preview: journal `3200 + 2N`, planner `3201 + 2N` (planner unused for previews) **Compose project namespacing** keeps each preview isolated: