DEPLOY

Deploy in under 5 minutes.

The NovaGate gateway is a single Docker container. Run it on any VPS, Kubernetes pod, or bare-metal server that can reach the internet.

1

Register and get your API key

Create an account at novagate.dev. After registration, your gateway API key is shown once and saved to your dashboard under Settings.

2

Pull the Docker image

docker pull ghcr.io/rawatshahab/novagate/api:latest
3

Run the container

docker run -d \
--name novagate \
--restart unless-stopped \
-p 3000:3000 \
-e REDIS_URL=redis://your-redis:6379 \
-e JWT_SECRET=your-32-char-secret-here \
-e CONTROL_PLANE_URL=wss://ws.novagate.dev/gateway-ws \
-e GATEWAY_API_KEY=gw_xxxxxxxxxxxxx \
ghcr.io/rawatshahab/novagate/api:latest
4

Verify the gateway is online

curl http://your-vps:3000/health
{"status":"ok","configSource":"live","configVersion":1}

configSource: live means the gateway is connected to the control plane. cache means it is using the local Redis fallback.

Environment Variables

VariableRequiredDefaultDescription
PORTOptional3000Port the gateway listens on.
REDIS_URLRequiredRedis connection URL. Used for rate limiting and config cache.
JWT_SECRETRequiredSecret for validating JWTs from your end users. Minimum 32 characters.
CONTROL_PLANE_URLRequiredWebSocket URL of the NovaGate control plane. Format: wss://ws.novagate.dev/gateway-ws
GATEWAY_API_KEYRequiredYour gateway API key from the NovaGate dashboard. Used to authenticate the WebSocket connection.
PROXY_TIMEOUT_MSOptional10000Default upstream request timeout in milliseconds.
RATE_LIMIT_WINDOW_MSOptional60000Rate limit sliding window duration in milliseconds.
RATE_LIMIT_UNAUTH_MAXOptional100Max requests per window for unauthenticated clients.
RATE_LIMIT_AUTH_MAXOptional500Max requests per window for authenticated clients.

Need help? Check the full getting-started guide.

Read the Documentation →