Self-Hosting with Docker & Bun
Run EntryWise on any VPS, AWS EC2, Hetzner, Railway, Fly.io, or Kubernetes cluster with Docker Compose, native SQLite, and pluggable Queue & Email drivers.
1-Command Docker Compose Deployment#
EntryWise ships with a production multi-stage Dockerfile and docker-compose.yml powered by Bun and native SQLite (bun:sqlite in WAL mode). It requires zero Cloudflare accounts or bindings.
On startup, src/server.ts automatically creates the SQLite database file in your mounted volume and applies all SQL migrations from ./migrations in order.
# 1. Copy the environment template
cp .env.example .env
# 2. Generate secure JWT & Master Encryption keys
openssl rand -hex 32
# 3. Boot EntryWise on port 8787
docker compose up -d --build
# 4. Verify health & active runtime drivers
curl http://localhost:8787/healthPluggable Queue Drivers (QUEUE_DRIVER)#
Instead of locking you into Cloudflare Queues, self-hosted EntryWise lets you choose how background jobs (webhooks, CRM sync, email notifications) are processed via the QUEUE_DRIVER environment variable:
| QUEUE_DRIVER | Required Env Vars | How It Works |
|---|---|---|
| memory (default) | QUEUE_MAX_RETRIES=3 | Processes jobs asynchronously in-process using exponential backoff after returning the HTTP response. Ideal for single-container deployments. |
| http | QUEUE_HTTP_URL, QUEUE_HTTP_SECRET | Forwards each background job via HTTP POST to an external worker, n8n, BullMQ bridge, Temporal, or RabbitMQ consumer with Bearer auth and automatic local fallback. |
| cloudflare | SUBMISSION_QUEUE binding | Used automatically when deployed on Cloudflare Workers. |
Pluggable Email Providers (DEFAULT_EMAIL_PROVIDER)#
Configure a server-wide default email driver in .env while still allowing individual workspaces in the Console to bring their own provider API keys:
| DEFAULT_EMAIL_PROVIDER | Env Vars | Use Case |
|---|---|---|
| resend | RESEND_API_KEY | Production transactional delivery via Resend REST API. |
| smtp2go | DEFAULT_EMAIL_API_KEY | High-deliverability SMTP2GO REST API transport. |
| mailersend | DEFAULT_EMAIL_API_KEY | MailerSend transactional email API. |
| mailtrap | DEFAULT_EMAIL_API_KEY | MailtrapSending API for staging or production. |
| webhook | EMAIL_WEBHOOK_URL, EMAIL_WEBHOOK_SECRET | POSTs { to, from, replyTo, cc, subject, html } to your own microservice, Nodemailer bridge, AWS SES Lambda, or Postal server. |
| console | None | Prints formatted email metadata & HTML to stdout for local development. |
