Self-hosted
The Enterprise edition runs entirely on your own infrastructure. No outbound connectivity, no licence heartbeat, no tier limits — a single self-contained binary or a Docker deployment you operate yourself.
- Read
- 7 min
- Edition
- Enterprise
What changes versus cloud
The application is the same; the operating model is not. Cloud is a subscription with plan limits and a hosted control plane. Enterprise is a contract, a licence token, and an install that never talks to us.
| Cloud | Enterprise (self-hosted) | |
|---|---|---|
| Hosting | Managed by DataRunner | Your infrastructure |
| Licensing | Stripe subscription | Signed licence token, direct contract |
| Outbound connectivity | Required | None — runs air-gapped |
| Tier limits | By plan | None |
| Custom roles | Fixed role set | Definable |
| Key management | Managed | BYOK via your KMS |
| Upgrades | Continuous | You choose when |
Components
A full install is four moving parts. The worker is the one that matters operationally — it is what actually executes schedules, watches, and monitor probes, so an install with no worker will look healthy and quietly do nothing.
Deploying with Docker
The compose file brings up the whole stack on one host. Point it at your own Postgres in production; the bundled one exists so an evaluation works out of the box.
# 1. Configure
cp .env.example .env
# set DR_LICENSE_TOKEN, POSTGRES_*, and App__FrontendUrl
# 2. Bring up API, worker, console, and dependencies
docker compose -f docker-compose.prod.yml up -d
# 3. Migrations apply automatically on API boot.
docker compose logs -f apiApp__FrontendUrl is what invite links, password resets, and public status pages are built from. A wrong value produces links that 404 for your users while everything looks fine internally.Licensing
Enterprise activates from a signed token you install as configuration. Validation is local and offline — the token is verified against an embedded public key. There is no call home, so an install in a disconnected network keeps working indefinitely.
Keys and data control
Connection credentials are encrypted at rest. On Enterprise you can hold the key material yourself: envelope encryption wraps each data key with a key from your own KMS, so revoking access in your KMS revokes it here.
Operating it
Migrations run automatically when the API boots, so an upgrade is: pull the new image, restart, watch the logs. Back up PostgreSQL — it holds everything, including encrypted credentials. A health endpoint reports database, cache, and broker reachability for your own monitoring to scrape.