Overview
NovaGate has two components: the gateway node (a Docker container you run on your server) and the control plane (a cloud service we operate). The gateway handles all your live traffic. The control plane manages config and collects observability data.
Your Client → NovaGate Node (your VPS) → Your Microservices
↕ WSS (config + telemetry)
NovaGate Cloud (control plane)
Prerequisites
- A server or VPS with Docker installed (1 vCPU, 512 MB RAM minimum)
- A Redis instance reachable from your server (Redis Cloud free tier works)
- A NovaGate account (free)
Step 1: Register
Create a free account at novagate.dev/register. After registration, you will be redirected to the setup flow where your Gateway API Key is shown. Copy it — it is shown only once.
Your Gateway API Key looks like: gw_abc123...xyz. Store it in a secrets manager or environment variable immediately.
Step 2: Deploy the Gateway
Run the gateway container on your server:
docker run -d --name novagate --restart unless-stopped \
-p 3000:3000 \
-e REDIS_URL=redis://your-redis:6379 \
-e DATABASE_URL=postgres://user:pass@your-db:5432/novagate \
-e JWT_SECRET=your-32-char-secret \
-e CONTROL_PLANE_URL=wss://ws.novagate.dev/gateway-ws \
-e GATEWAY_API_KEY=gw_your_key_here \
ghcr.io/mayank-rawat98/novagate/api:latest
Verify it started correctly:
curl http://localhost:3000/health
# {"status":"ok","configSource":"live","configVersion":1}
Step 3: Add a Service
In the dashboard, go to Services → Add Service. A service represents one of your downstream applications.
Target URL
http://internal-ip:8080
Step 4: Add a Route
Go to Routes → Add Route. A route maps an incoming path pattern to a service.
Rate Limit Override
(empty — uses global default)
The gateway receives this config update over WebSocket within milliseconds. No restart required.
The route panel has three tabs: Basic (method, path, service), Advanced (retry, body limit, CORS, IP restriction), and Plugins — see below.
Step 5: Test It
curl http://your-vps:3000/api/users
# Proxied to http://internal-ip:8080/api/users
Check the Logs page in the dashboard. You should see the request appear within a few seconds.
Plugins
Routes support an ordered plugin pipeline. Open any route in the dashboard and click the Plugins tab to configure them. Each enabled plugin runs in order on every request matching that route.
CORS
Allowed origins, methods, headers, credentials, and preflight max-age.
IP Restriction
Allow or deny specific CIDR ranges. Deny takes precedence.
Rate Limit
Per-route request cap with a Redis sliding window. Independent of the global limit.
Request Size Limit
Reject requests larger than N bytes before reading the body.
Request Transform
Add, remove, or rename request headers and query parameters before forwarding.
Response Transform
Add or remove response headers, or override the response status code.
Basic Auth
Password-protect a route with HTTP Basic authentication (SHA-256 hashed credentials).