Skip to main content
All settings live in the .env file you copied from .env.docker.example.

Variables

VariableServiceRequiredDefaultPurpose
NEXT_PUBLIC_SOCKET_URLclient (build)Yeshttp://localhost:3001URL the browser uses to reach the signaling server. Inlined at build time. See the build-time URL caveat.
PORTserverNo3001Port the signaling server listens on inside the container. The host port is set separately in docker-compose.yml.
NODE_ENVserverNoproductionRuntime environment. Set to development to enable verbose logging.
CLIENT_URLserverYes (prod)(none)Frontend origin allowed by CORS. Set to your client’s public URL (e.g. https://app.your-domain.com).
TRUSTED_PROXY_COUNTserverNo0Number of trusted reverse-proxy hops in front of the server. Used for correct X-Forwarded-For parsing and per-IP rate limiting. Set to 1 if you are behind a single proxy.
TURN_SECRETserverNo(none)Shared HMAC secret for coturn credentials. If empty, the server returns STUN-only and no TURN is offered. Must match coturn’s static-auth-secret.
TURN_DOMAINserverNo(none)Public hostname of your TURN server (e.g. turn.your-domain.com). Must match coturn’s realm.

Minimal local configuration

For local testing, only one variable matters:
NEXT_PUBLIC_SOCKET_URL=http://localhost:3001
Everything else can stay at its default.

Production configuration

A typical production .env for a deployment with HTTPS and TURN:
NEXT_PUBLIC_SOCKET_URL=https://api.your-domain.com
CLIENT_URL=https://app.your-domain.com
TRUSTED_PROXY_COUNT=1
TURN_SECRET=your-strong-random-secret
TURN_DOMAIN=turn.your-domain.com
See Production Deployment for the full setup.