Skip to main content
Nango offers two deployment options: Nango Cloud (fully managed) and self-hosted (you manage the infrastructure).

Nango Cloud

Hosted and managed by Nango. No infrastructure to maintain. Includes automatic updates, backups, and scaling.

Self-hosted

Run on your own infrastructure. Full control over data residency, network policies, and configuration.

Free self-hosted vs. Enterprise

Nango offers two self-hosting tiers:
FeatureFree self-hostedEnterprise self-hosted
Auth (OAuth, API keys)YesYes
ProxyYesYes
Functions (syncs, actions, webhooks)NoYes
Observability (full logs)Auth + proxy onlyYes
OpenTelemetry exportNoYes
WebhooksNoYes
MCP serverNoYes
Custom auth brandingNoYes
Role-based permissionsNoYes
SAML SSONoYes
Support SLANoYes
The free self-hosted option is suitable for hobby projects and proof-of-concept work. For production use with sync functions, actions, and full observability, you need the Enterprise plan.
Enterprise self-hosted pricing includes a fixed annual license fee plus usage-based fees at a lower rate than Cloud (since infrastructure runs on your side). Book a demo to discuss pricing.

Requirements

The free self-hosted version uses Docker Compose and requires:
  • Docker and Docker Compose
  • A machine with outbound internet access (for proxy requests and OAuth flows)
The Docker Compose setup bundles PostgreSQL and Redis, so no separate database installation is needed for getting started.

Quick setup with Docker Compose

1

Download the docker-compose file

mkdir nango && cd nango
wget https://raw.githubusercontent.com/NangoHQ/nango/master/docker-compose.yaml
2

Create your environment file

Copy the example environment file and configure it:
wget https://raw.githubusercontent.com/NangoHQ/nango/master/.env.example -O .env
At minimum, set your server URL:
.env
NANGO_SERVER_URL=https://your-instance.example.com
SERVER_PORT=3003
3

Start Nango

docker-compose up -d
Nango is now running. The dashboard is available at http://localhost:3003.

Updating Nango

To update to the latest version:
docker-compose stop
docker-compose rm -f
docker-compose pull
docker-compose up -d

Key environment variables

Configure Nango by setting environment variables in your .env file.

Server and URL

NANGO_SERVER_URL=https://your-instance.example.com   # Public URL of your Nango instance
SERVER_PORT=3003                                       # Port the server listens on
LOG_LEVEL=info                                         # debug | info | error

Database

By default, Docker Compose uses a bundled PostgreSQL container. For production, connect to an external database:
NANGO_DATABASE_URL=postgresql://user:password@host:5432/nango

# Or configure individually:
NANGO_DB_USER=nango
NANGO_DB_PASSWORD=your-password
NANGO_DB_HOST=your-db-host
NANGO_DB_PORT=5432
NANGO_DB_NAME=nango
NANGO_DB_SSL=true
The bundled PostgreSQL container uses local Docker volume storage. This is not suitable for production — data will be lost if the container is removed. Use an external PostgreSQL instance for any persistent deployment.

Encryption

NANGO_ENCRYPTION_KEY=<base64-encoded-256-bit-key>
Generate a key with:
openssl rand -base64 32
The encryption key cannot be changed after it is set. If you change this key after storing credentials, all existing credentials will fail to decrypt. Set this before creating any connections.

Dashboard access

By default, the dashboard is open to anyone who can reach your instance URL. Secure it with basic auth:
FLAG_AUTH_ENABLED=false           # Disables regular login/signup
NANGO_DASHBOARD_USERNAME=admin
NANGO_DASHBOARD_PASSWORD=your-secure-password

Logs (optional)

The full logs UI requires Elasticsearch. To enable it:
NANGO_LOGS_ENABLED=true
NANGO_LOGS_ES_URL=http://your-elasticsearch:9200
NANGO_LOGS_ES_USER=your-es-user      # if authentication is enabled
NANGO_LOGS_ES_PWD=your-es-password
If NANGO_LOGS_ENABLED is false, all logs are written to stdout and are available in your host’s log management system. To run Elasticsearch locally, uncomment the nango-elasticsearch service in docker-compose.yaml.

Nango Connect UI (optional)

Nango Connect is a hosted UI for your customers to authorize integrations:
FLAG_SERVE_CONNECT_UI=true
NANGO_CONNECT_UI_PORT=3009
NANGO_PUBLIC_CONNECT_URL=https://your-instance.example.com
Connect UI is available at http://localhost:3009 by default.

Redis (optional)

Redis is included in the Docker Compose setup. To use an external Redis instance:
NANGO_REDIS_URL=redis://your-redis-host:6379

Enterprise self-hosting

The Enterprise self-hosted version includes all Nango Cloud features and is deployed using Helm charts on Kubernetes. It supports AWS, GCP, and Azure.

Architecture

Enterprise self-hosting runs the full Nango service stack:
ServicePurpose
ServerDashboard, API, proxy requests, webhooks
OrchestratorTask scheduling and state tracking
JobsTask processing and dispatch
RunnerExecutes integration functions
PersistStores synced records and logs
PostgreSQLControl plane, credentials, scheduled tasks, synced records
RedisCaching, token refresh locks, rate limits
ElasticsearchExecution logs
Object storage (e.g. S3)Compiled integration code
ComponentRecommended spec
Server, Persist, Runner, Jobs, Orchestrator (×5)1 CPU, 2 GB RAM each
PostgreSQL2 CPU, 8 GB RAM, 128 GB storage
Redis128 MB
Elasticsearch2 vCPU, 1 GB RAM, 30 GB storage
Object storage< 500 MB
This configuration supports 1M+ sync/action executions per day (assuming ~2 seconds per execution).

Updates

Enterprise images are published on a two-month release cadence with hotfixes as needed. Image tags follow the format:
nangohq/nango:managed-{managed-release-version}-{application-version}-{commit-sha}
Pin your Nango CLI version to the application-version in the image tag. Check managed-manifest.json for the latest version.
Interested in Enterprise self-hosting? Book a demo or reach out in the Slack community.

Build docs developers (and LLMs) love