diff --git a/.env.example b/.env.example index 63e5537..2841ca1 100644 --- a/.env.example +++ b/.env.example @@ -68,7 +68,18 @@ ENCRYPTION_KEY= # --------------------------------------------------------------------------- # React Router server (production build / Docker). `pnpm dev:web` uses 5173. +# Manual mode: `pnpm --filter web start` binds this port exactly - export it +# first (set -a; . ./.env; set +a) or pass it inline (PORT=8080 pnpm ...). +# Without it the server would pick the first free port from 3000 upwards, +# which a reverse proxy cannot be pointed at. WEB_PORT=3000 + +# Manual mode only - interface the React Router server binds to. Unset means +# every interface. Set it to 127.0.0.1 when a reverse proxy on the same host +# is the only thing that should reach it. Leave it unset under Docker, where +# the container's own network namespace already isolates it. +# HOST=127.0.0.1 + # Strapi API + admin panel. CMS_PORT=1337 diff --git a/README.md b/README.md index c8a45c2..c9b9365 100644 --- a/README.md +++ b/README.md @@ -469,7 +469,7 @@ docker run --rm -v sharper_cms-uploads:/data -v "$PWD":/backup alpine \ | --- | --- | | `dev` | `react-router dev` — SSR dev server with HMR | | `build` | `react-router build` → `build/client` (static assets) + `build/server` (SSR bundle) | -| `start` | `react-router-serve ./build/server/index.js` — the production server, port 3000 | +| `start` | the production server — `react-router-serve ./build/server/index.js` on `PORT`, falling back to `WEB_PORT`, then 3000 | | `typecheck` | regenerates `+types/*` route types, then `tsc` | **`apps/cms`** — run with `pnpm --filter cms