Open-Source Wikis

/

Cal.com

/

Deployment

calcom/cal.com

Deployment

How Cal.diy ships from main to a running instance. The repo is designed to be self-hostable on a single Postgres dependency, but it also supports more elaborate setups with Redis, Trigger.dev, Sentry, Checkly, and a separate API v2 service.

Topology

A minimal deployment is one process running apps/web plus a Postgres database. A full Cal.com production deployment fans out into:

  • The Next.js web app (multiple replicas, behind a load balancer)
  • The NestJS API v2 service (separate replicas)
  • The MintLify docs site
  • A Redis instance (rate limiting, caches, BullMQ in API v2)
  • Trigger.dev for heavy background jobs
  • Sentry for error reporting
  • Checkly synthetics

Container images

Dockerfile at the repo root builds the web app. apps/api/v2/Dockerfile builds the API v2 service. The docker-compose.yml at the root spins up Postgres for local dev plus optional services.

Vercel

The web app is also Vercel-friendly:

  • apps/web/vercel.json declares the framework + build command.
  • apps/web/vercel-webhook.controller.ts (in API v2) handles deploy promotion notifications.
  • app.json at the repo root is a Heroku-style manifest also used for one-click deploys.

Deploy helpers

  • scripts/staging-deploy.sh — staging deployment pipeline
  • scripts/start.sh — runtime entry script
  • scripts/vercel.sh
  • deploy/ — additional deploy infra (Helm charts, Kubernetes manifests)
  • Procfile — Heroku entrypoint
  • .gitpod.yml — one-click Gitpod environment

Environment

.env.example at the repo root is the canonical list of required environment variables. It is broken into sections (database, auth, email, integrations, etc.). .env.appStore.example lists per-integration keys.

yarn env-check:common and yarn env-check:app-store validate .env against the example.

The i-* yarn scripts (i-dev, i-dx, i-gen-web-example-env) wrap commands with Infisical (infisical run --) for secret injection in CI.

Database migrations

yarn workspace @calcom/prisma prisma migrate deploy

Run before each deploy. The CI workflow .github/workflows/check-prisma-migrations.yml ensures every PR with a schema change includes a migration. auto-migrations.ts runs pending migrations on boot in some self-hosted modes.

Cron

The .github/workflows/cron-*.yml workflows are GitHub Actions schedules that hit internal HTTP endpoints. If you deploy outside GitHub, replicate them with your own scheduler (cron / Cloud Scheduler / etc.) hitting:

  • /api/cron/booking-reminders
  • /api/cron/schedule-email-reminders
  • /api/cron/schedule-sms-reminders
  • /api/cron/schedule-whatsapp-reminders
  • /api/cron/monthly-digest-email
  • /api/cron/check-sms-prices
  • /api/cron/sync-app-meta
  • /api/cron/webhooks-triggers
  • /api/cron/change-time-zone
  • /api/cron/downgrade-users
  • /api/cron/stale-issue

Each is gated by a shared secret in .env.

Trigger.dev

packages/features/trigger.config.ts declares the heavy-duty background jobs. Deploy with:

yarn deploy:trigger:staging
yarn deploy:trigger:prod

Synthetic monitoring

checkly.config.ts plus __checks__/ define Checkly synthetic checks that run against the deployed staging URL. These are not part of the build pipeline; they execute on Checkly's infrastructure.

Releases

The repo uses Changesets (.changeset/, @changesets/cli). The Yarn scripts:

yarn changesets-add
yarn changesets-version
yarn changesets-release   # builds @calcom/atoms with extra Node memory and publishes

The release workflow lives in .github/workflows/changesets.yml and .github/workflows/draft-release.yml. Tags follow semver (latest tag at the time of writing: v6.2.0). Changesets publishes the public packages (@calcom/embed-core, @calcom/embed-react, @calcom/embed-snippet, @calcom/atoms, @calcom/platform-types, @calcom/platform-libraries, @calcom/platform-enums, @calcom/platform-utils, @calcom/platform-constants).

Self-hosting

The repo's README.md is the authoritative self-hosting guide. The README starts with a warning that Cal.diy is intended for personal/non-production use; for commercial workloads the project recommends managed Cal.com.

Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.

Deployment – Cal.com wiki | Factory