Skip to main content

Installation options

Cal.com offers multiple deployment options to fit your needs:

Cal.com Cloud

Managed hosting with automatic updates and enterprise SLA

Docker

Containerized deployment for any infrastructure

Vercel

One-click deploy on Vercel’s edge network

Railway

Simple deployment with automatic scaling

Manual setup

Full control over your development environment

Prerequisites

Before installing Cal.com, ensure you have:
  • Database: PostgreSQL 13 or newer
  • Node.js: Version 18.x or newer
  • Environment variables: See configuration section

Cal.com Cloud

The fastest way to get started with zero setup:
1

Sign up

Visit cal.com/signup to create your account.
2

Choose a plan

  • Free: Unlimited bookings, basic features
  • Pro: Advanced workflows, integrations, and support
  • Teams: Team scheduling and collaboration
  • Enterprise: SSO, SAML, dedicated support
View pricing →
3

Start scheduling

Your account is ready immediately - no installation required.
Cloud benefits: Automatic updates, 99.9% uptime SLA, managed database backups, and enterprise security compliance.

Docker deployment

Quick start with Docker Compose

The recommended way to self-host Cal.com:
1

Clone the repository

2

Configure environment variables

Required environment variables:
Never commit real secrets to version control. Use .env (git-ignored) for actual credentials.
3

Start the services

Full stack (includes database):
Application only (with external database):
Services included:
  • calcom: Main application (port 3000)
  • database: PostgreSQL database (port 5432)
  • studio: Prisma Studio for database management (port 5555)
4

Access Cal.com

  1. Visit http://localhost:3000
  2. Complete the setup wizard
  3. Create your admin account
Access Prisma Studio at http://localhost:5555 to view and edit database records directly.

Docker configuration

Customize your Docker deployment:
Specify a custom image or tag:
docker-compose.yml
ARM images use the -arm suffix. Check Docker Hub for available tags.
Connect to an existing PostgreSQL database:
.env
Then start only the application:
For production, consider:
  1. Remove Prisma Studio (security):
  2. Use external database with connection pooling (PgBouncer)
  3. Set proper URLs:
  4. Enable SSL for database connections:
  5. Configure email (SendGrid, SMTP):

Updating Docker deployment

1

Stop services

2

Pull latest changes

3

Restart services

Vercel deployment

Vercel Pro required: The free plan doesn’t support the number of serverless functions Cal.com requires.
1

Prepare database

Set up a PostgreSQL database:
2

Deploy to Vercel

Deploy with VercelOr manually:
3

Configure environment variables

Add these in Vercel project settings:
4

Deploy

Push to your repository or trigger deployment in Vercel dashboard.

Railway deployment

One-click deploy with automatic database provisioning: Deploy on Railway
1

Click deploy button

Railway will:
  • Fork the Cal.com repository to your GitHub
  • Create a PostgreSQL database
  • Set up environment variables
  • Deploy the application
2

Configure custom domain

In Railway settings:
  1. Add your custom domain
  2. Update NEXT_PUBLIC_WEBAPP_URL environment variable
  3. Redeploy
Read Railway’s detailed guide →

Manual setup

For local development or custom deployments:
1

Clone repository

Windows users: Use Git Bash with admin privileges:
See symbolic link troubleshooting →
2

Install dependencies

Node version: Use nvm use to switch to the required Node.js version (specified in .nvmrc).
3

Configure environment

Generate secrets:
Set database URL:
4

Set up database

Option 1: Quick start with Docker (recommended)
This starts:
  • PostgreSQL database
  • Mailhog (email testing)
  • Seeds test users
Option 2: Manual database setup
5

Start development server

Access at http://localhost:3000

Test users (with yarn dx)

Development environment includes pre-seeded users:
View all seeded users in Prisma Studio: yarn db-studiohttp://localhost:5555

Environment variables

Required variables

Minimum configuration for Cal.com to run:
.env

Calendar integrations

  1. Create project in Google Cloud Console
  2. Enable Google Calendar API
  3. Configure OAuth consent screen
  4. Create OAuth 2.0 credentials
  5. Add redirect URIs:
    • https://your-domain.com/api/integrations/googlecalendar/callback
    • https://your-domain.com/api/auth/callback/google
  6. Download JSON credentials
.env
Detailed setup guide →
  1. Register app in Azure Portal
  2. Set redirect URI: https://your-domain.com/api/integrations/office365calendar/callback
  3. Create client secret
  4. Add API permissions:
    • Calendars.Read
    • Calendars.ReadWrite
.env
No API keys required. Users connect individually with:
  • Server: caldav.icloud.com
  • Username: Apple ID email
  • Password: App-specific password
Generate app-specific password →

Video conferencing

  1. Create app on Zoom Marketplace
  2. Choose “General App” → “User-managed”
  3. Add OAuth redirect URL: https://your-domain.com/api/integrations/zoomvideo/callback
  4. Add scopes:
    • meeting:write:meeting
    • user:read:settings
.env
  1. Visit Daily.co Partnership Form
  2. Get API key from dashboard
.env

Email configuration

Gmail:
.env
Office 365:
.env
Custom SMTP:
.env
For workflow emails and reminders:
  1. Create SendGrid account
  2. Verify sender email
  3. Create API key
.env

SMS reminders

  1. Create Twilio account
  2. Get a phone number
  3. Copy credentials from dashboard
.env

Database setup

PostgreSQL requirements

  • Version: 13 or newer
  • Collation: UTF8
  • Extensions: None required (Prisma manages schema)

Local PostgreSQL

Managed database providers

Neon

Serverless Postgres with generous free tier

Supabase

Open-source Firebase alternative with Postgres

Railway

Easy PostgreSQL with automatic backups

Vercel Postgres

Integrated with Vercel deployments

Connection pooling

For production, use connection pooling:
.env

Running migrations

1

Development environment

2

Production environment

3

Verify migration

Opens Prisma Studio at http://localhost:5555

Troubleshooting

Error: P1001: Can't reach database serverSolutions:
  • Verify PostgreSQL is running
  • Check connection string format
  • Ensure database exists: createdb calendso
  • Test connection: psql $DATABASE_URL
  • Check firewall rules (cloud databases)
Error: [next-auth][error][CLIENT_FETCH_ERROR]Solution: Ensure NEXTAUTH_URL matches your actual URL:
Error: Cannot find module '@calcom/...'Solutions:
Error: Port 3000 is already in useSolutions:
Error: No key set vapidDetails.publicKeySolution: Generate Web Push keys:
Add to .env:

Production checklist

Before going live:
1

Security

  • Change all default secrets
  • Use strong, unique passwords
  • Enable SSL for database connections
  • Set NODE_TLS_REJECT_UNAUTHORIZED=0 only behind trusted load balancers
  • Configure CSP: CSP_POLICY="non-strict"
2

Email

  • Configure production SMTP or SendGrid
  • Verify sender domain
  • Test email delivery
  • Set up SPF, DKIM, DMARC records
3

Database

  • Set up automated backups
  • Enable connection pooling
  • Configure read replicas (if needed)
  • Set up monitoring and alerts
4

Integrations

  • Add production OAuth redirect URIs
  • Configure video conferencing credentials
  • Set up payment processing (Stripe)
  • Test all integrations
5

Performance

  • Set up CDN for static assets
  • Configure Redis for session storage (optional)
  • Enable gzip compression
  • Set MAX_OLD_SPACE_SIZE=4096 for build
6

Monitoring

  • Set up error tracking (Sentry)
  • Configure uptime monitoring
  • Enable access logs
  • Set up performance monitoring

Next steps

Configuration guide

Advanced configuration options and environment variables

Quickstart

Get your first booking in 5 minutes

Integrations

Connect calendars, video, payments, and more

Contributing

Help improve Cal.com
Need help? Join our GitHub Discussions or contact support for enterprise assistance.