Skip to documentation

Self-hosting

Requirements

Server size, tools and public origins for a self-hosted install.

Server size

CPUMemoryDisk
Minimum2 vCPU4 GB20 GB SSD
Recommended4 vCPU8 GB40 GB SSD or more

Use the minimum for a personal instance or a small team sending modest volumes. Use the recommended size for production sending, large audiences, broadcasts and imports.

Servers with 1 vCPU or 2 GB of memory or less are not supported. On those sizes the test suite timed out, or the database was stopped for running out of memory.

How we measured

We ran the full end-to-end suite against a fresh Docker Compose stack, with hard CPU and memory limits on the containers. Its 35 tests cover sign-in, teams, SSO, domains, sending, receiving, broadcasts, imports and webhooks.

Container limitsResult
1 vCPU, 1 GBFailed: the database returned server errors under memory pressure
1 vCPU, 1.5 GBFailed: every step ran about twice as slowly and one test timed out
2 vCPU, 1.5 GBFailed: the database was stopped for running out of memory
2 vCPU, 3 GBPassed all 35 tests, as fast as a run without limits

The minimum adds room for the operating system and Docker on top of the 3 GB that passed. Without limits, the busiest moments used:

ServicePeak memoryPeak CPU
Convex (database and functions)1.2 GB3.7 cores
App (Next.js)200 MB0.8 cores
Migrate (runs on install and upgrade, then exits)700 MB1.4 cores

Convex caches index data and compiled functions, up to about 1.25 GB by default. It grows toward that limit over days of use, so a long-running instance uses more memory than a fresh one. The recommended size leaves room for those caches, for traffic bursts, and for exports and imports.

Disk

The Docker images use about 1.1 GB on disk: app 224 MB, migrate 283 MB, and Convex backend 579 MB. The optional SMTP gateway adds 163 MB. The rest is your data: sent and received email bodies, attachments, logs and backups. Retention settings decide how long they stay. Start with 20 GB, watch the convex-data volume, and keep space free for a backup export before each upgrade.

Tools

Servers need only Docker Engine with the Compose v2 plugin. The installer uses prebuilt images. Building from source or developing additionally needs Node.js 22 and pnpm 11.7.0.

Network

Provide HTTPS for three hostnames: the app, api. (REST API and callbacks) and realtime. (the dashboard’s live updates). The installer’s Caddy option does this for you. SES must reach the api. hostname. You need an AWS account and control of a sending domain’s DNS.

Verify your tools

bash
docker info
docker compose version

For source builds and development, also check:

bash
node --version
pnpm --version