Skip to main content
Use this path when you want a classic Node process behind Nginx, Caddy, or your host’s load balancer. For the production edge path used at streamly.watch, see Deploy Cloudflare.

When to use this

Option A — Node.js server

Set process env (systemd, host UI) — do not bake service-role keys into client bundles:
Put a reverse proxy in front of port 3000 and preserve the original Host and forwarded-protocol headers (tenant resolution depends on Host).

Option B — Docker / OCI

The included Dockerfile builds Next.js standalone output and runs as a non-root user.
Only pass NEXT_PUBLIC_* (and other intentional public build inputs) as --build-arg. Keep SUPABASE_SERVICE_ROLE_KEY, TENANT_SECRETS_MASTER_KEY, cron, email, and plugin secrets in the runtime --env-file — never as build args.

Scheduled jobs (Node / Docker)

Cloudflare Cron is unavailable here. Point your scheduler at:
Payloads: maintenance, provider_health, domain_sync, metadata_sync.

After deploy