DOCUMENTATION

Getting Started with NovaGate

From zero to a live, rate-limited, JWT-authenticated API gateway in under 10 minutes.

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.

Field
Example
Name
users-api
Target URL
http://internal-ip:8080
Health Check Path
/health
Timeout (ms)
5000

Step 4: Add a Route

Go to Routes → Add Route. A route maps an incoming path pattern to a service.

Method
GET
Path Pattern
/api/users
Service
users-api
Auth Required
false
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).

Next Steps