FREE CRM

YOUR CLOUD · YOUR CREDENTIALS · YOUR DATA

Deploy your own
FREE CRM.

Your account. Your database. Your files. FREE CRM never receives your provider credentials. No cloud credentials? Run locally or in Docker with no cloud keys.

MIT licensed Private by default Export anytime
Check deployment readiness before using credentials

01 / CHOOSE

Where should it live?

  1. 1
    ChoosePick a home
  2. 2
    ProtectSet private access
  3. 3
    ProvisionCreate storage
  4. 4
    DeployBuild and migrate
  5. 5
    VerifyOpen and back up
RECOMMENDED

GitHub main → Vercel

native Next.js

Vercel builds this repository directly from the protected main branch. There is no ChatGPT Sites proxy and no ChatGPT login. GitHub OAuth protects the exact owner; Cloudflare D1 and private Vercel Blob keep durable data in accounts you control.

Import repository into Vercel

Starts sealedMissing OAuth, D1, or Blob configuration never falls back to a public or in-memory workspace. Configure all user-owned credentials before promoting main.

01

Create the protected D1 data plane

Create D1 in your Cloudflare account, apply canonical migrations, and deploy the narrow RPC Worker. Select that Worker by name in Cloudflare Access, protect production and previews, and add a Service Auth policy for one dedicated service token. Vercel receives that token, the endpoint, and a separate 32-byte HMAC secret—never a Cloudflare account token.

02

Create private Blob storage

In the Vercel project Storage tab, create a Private Blob store. Vercel injects BLOB_READ_WRITE_TOKEN. Private document bytes are streamed only after owner authorization.

03

Create GitHub owner login

Create a GitHub OAuth app with callback https://freecrm.dev/api/auth/callback/github. Add its client values, a random AUTH_SECRET, and the exact verified owner email as encrypted Production variables.

Terminal
# Vercel project settings
Production Branch: main
Framework: Next.js
Root Directory: .
Build Command: npm run build:vercel
Install Command: npm ci

# Required Production environment variables
FREE_CRM_AUTH_MODE=authjs
NEXTAUTH_URL=https://freecrm.dev
NEXT_PUBLIC_SITE_URL=https://freecrm.dev
FREE_CRM_OWNER_EMAIL
AUTH_SECRET
AUTH_GITHUB_ID
AUTH_GITHUB_SECRET
FREE_CRM_D1_RPC_URL
FREE_CRM_D1_RPC_SECRET
FREE_CRM_D1_ACCESS_CLIENT_ID
FREE_CRM_D1_ACCESS_CLIENT_SECRET
BLOB_READ_WRITE_TOKEN
04

Connect and promote main

Use the settings above, attach both domains, and keep freecrm.dev canonical. Pull requests become previews; only main becomes Production. Open the complete runbook ↗

05 / VERIFY

A deployment is finished when it is private, recoverable, and yours.

1Open the workspace through its identity gate.2Test a portable snapshot and maintain provider recovery copies.3Keep provider credentials in provider secret stores.