feat(deploy): harden production proxy and cron configuration
This commit is contained in:
@@ -57,6 +57,34 @@ Before deploying, set production-safe values in `.env` (using `.env.example` as
|
||||
|
||||
Keep secrets out of source control.
|
||||
|
||||
## Reverse proxy assumptions (Nginx Proxy Manager)
|
||||
|
||||
This app is expected to run behind a reverse proxy in production.
|
||||
|
||||
- TLS is terminated at the proxy.
|
||||
- Proxy forwards standard host/protocol headers (`Host`, `X-Forwarded-Proto`, `X-Forwarded-Host`).
|
||||
- Public origin is configured explicitly with `NEXT_PUBLIC_APP_URL`.
|
||||
|
||||
To keep callback behavior stable behind proxy layers, auth redirect responses use the configured application origin from environment configuration rather than relying only on request host detection.
|
||||
|
||||
## Callback URL expectations
|
||||
|
||||
- `NEXT_PUBLIC_APP_URL` must be set to the public HTTPS URL used by users.
|
||||
- Supabase auth redirect/callback configuration must allow:
|
||||
- `<NEXT_PUBLIC_APP_URL>/auth/callback`
|
||||
|
||||
The callback route also validates the `next` parameter as an internal path to prevent unsafe external redirects.
|
||||
|
||||
## Cron protection expectations
|
||||
|
||||
Operational cron endpoints are protected with a shared secret.
|
||||
|
||||
- Required header: `x-cron-secret`
|
||||
- Server secret source: `CRON_SHARED_SECRET`
|
||||
- Backward compatibility fallback: `CRON_SECRET`
|
||||
|
||||
For new production setups, set `CRON_SHARED_SECRET` and use that value for all cron callers.
|
||||
|
||||
## Jenkins pipeline flow
|
||||
|
||||
The repository includes a declarative `Jenkinsfile` with the following stages:
|
||||
|
||||
Reference in New Issue
Block a user