Unbind
Templates

Self-host Convex with Unbind

Deploy a self-hosted Convex backend on your own servers with Unbind. Database, server functions and realtime sync in one place.

Convex is a reactive backend: a database, server functions and realtime sync that your frontend subscribes to. This template runs the open-source self-hosted version.

Deploy it from the template list. It takes a minute or two.

What gets deployed

ServiceRuns
PostgreSQLpostgres
Convex Backendghcr.io/get-convex/convex-backend@sha256:1f2044e3eac463ac78973b136c0baf72d4ada602611d853d6f99f280e29e0a98
Convex Dashboardghcr.io/get-convex/convex-dashboard@sha256:284a2638e0c1a4ec0c2327d8219776f3a426ca5824b81686ae4d9454dc0ce8ed

Plan for at least 1 CPU core and 1 GB of memory.

Convex keeps its files on a volume mounted at /convex/data. The data itself lives in the PostgreSQL service.

What you fill in

InputDescriptionDefault
Dashboard DomainDomain for the Convex dashboard.
Cloud DomainDomain for the Convex cloud API and sync.
HTTP Actions DomainDomain for Convex HTTP actions.
Database SizePostgreSQL storage size.1 GB
Storage SizeDisk for file storage, exports, and indexes.1 GB

After it deploys

Open the Convex Backend service and copy the value of CONVEX_SELF_HOSTED_ADMIN_KEY from its variables. You need it in two places:

  • Dashboard: open your dashboard domain and paste the key to sign in.
  • CLI: point the Convex CLI at your instance from your project folder.
.env.local
CONVEX_SELF_HOSTED_URL=https://your-cloud-domain
CONVEX_SELF_HOSTED_ADMIN_KEY=your-admin-key

After that, npx convex dev and npx convex deploy talk to your instance.

Good to know

  • Three domains: the dashboard, the cloud API your app connects to, and HTTP actions each get their own domain. Your app uses the cloud domain as its Convex URL.
  • Treat the admin key like a password: anyone who has it can read and change everything in the deployment.

On this page