OmniDock GitHub

$ man omnidock/install

Install OmniDock With a Fork-First Cloudflare Deploy

Step-by-step OmniDock installation: fork the repository, create Cloudflare D1 and R2 resources, connect Worker Git deploy, add variables and secrets, then finish setup in the app.

Why fork first

OmniDock uses a fork-first setup because deploy settings, bindings, database IDs, bucket names, API tokens, admin passwords, and domain values belong to the operator. Keeping your own fork gives you control over Cloudflare Git deploy settings and future updates.

Important: Do not place real D1 IDs, R2 bucket names, API tokens, admin passwords, Gmail app passwords, or private domains in the public upstream repository.

Install flow

  1. Fork ufukayyildiz/omnidock into your GitHub account.
  2. Create one Cloudflare D1 database for metadata.
  3. Create one primary R2 bucket for raw mail, attachments, and manual files.
  4. Enable Email Routing on the domain you want OmniDock to manage.
  5. Enable Email Sending for verified sender domains or addresses.
  6. Create a Worker from Git and select your fork.
  7. Set build variables that preserve D1 and R2 bindings on deploy.
  8. Set runtime variables and secrets for admin auth, primary domain, API access, and external accounts.
  9. Deploy, open the Worker URL, and complete the setup/check screen.

Cloudflare Git deploy commands

Use these settings in the Cloudflare Workers Git deploy screen:

Build command:
npm run build

Deploy command:
node tools/deploy-preserving-bindings.mjs

For normal Git updates, do not use bare npx wrangler deploy. The binding-preserving deploy command rebuilds deploy config from your build variables so D1, the primary R2 bucket, and extra R2 bindings remain attached.