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:- All installations
- Docker
- Manual setup
- 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:Sign up
Visit cal.com/signup to create your account.
Choose a plan
- Free: Unlimited bookings, basic features
- Pro: Advanced workflows, integrations, and support
- Teams: Team scheduling and collaboration
- Enterprise: SSO, SAML, dedicated support
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: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)
Docker configuration
Customize your Docker deployment:Using custom images
Using custom images
Specify a custom image or tag:
docker-compose.yml
ARM images use the
-arm suffix. Check Docker Hub for available tags.External database
External database
Connect to an existing PostgreSQL database:Then start only the application:
.env
Production deployment
Production deployment
For production, consider:
-
Remove Prisma Studio (security):
- Use external database with connection pooling (PgBouncer)
-
Set proper URLs:
-
Enable SSL for database connections:
-
Configure email (SendGrid, SMTP):
Updating Docker deployment
Vercel deployment
Prepare database
Set up a PostgreSQL database:
Railway deployment
One-click deploy with automatic database provisioning:Click deploy button
Railway will:
- Fork the Cal.com repository to your GitHub
- Create a PostgreSQL database
- Set up environment variables
- Deploy the application
Manual setup
For local development or custom deployments:Install dependencies
Node version: Use
nvm use to switch to the required Node.js version (specified in .nvmrc).Set up database
Option 1: Quick start with Docker (recommended)This starts:
- PostgreSQL database
- Mailhog (email testing)
- Seeds test users
Test users (with yarn dx)
Development environment includes pre-seeded users:| Password | Role | |
|---|---|---|
[email protected] | free | Free user |
[email protected] | pro | Pro user |
[email protected] | trial | Trial user |
[email protected] | ADMINadmin2022! | Admin |
[email protected] | onboarding | Incomplete setup |
Environment variables
Required variables
Minimum configuration for Cal.com to run:.env
Calendar integrations
Google Calendar
Google Calendar
- Create project in Google Cloud Console
- Enable Google Calendar API
- Configure OAuth consent screen
- Create OAuth 2.0 credentials
- Add redirect URIs:
https://your-domain.com/api/integrations/googlecalendar/callbackhttps://your-domain.com/api/auth/callback/google
- Download JSON credentials
.env
Microsoft Office 365
Microsoft Office 365
- Register app in Azure Portal
- Set redirect URI:
https://your-domain.com/api/integrations/office365calendar/callback - Create client secret
- Add API permissions:
Calendars.ReadCalendars.ReadWrite
.env
Apple Calendar (CalDAV)
Apple Calendar (CalDAV)
No API keys required. Users connect individually with:
- Server:
caldav.icloud.com - Username: Apple ID email
- Password: App-specific password
Video conferencing
Zoom
Zoom
- Create app on Zoom Marketplace
- Choose “General App” → “User-managed”
- Add OAuth redirect URL:
https://your-domain.com/api/integrations/zoomvideo/callback - Add scopes:
meeting:write:meetinguser:read:settings
.env
Daily.co
Daily.co
- Visit Daily.co Partnership Form
- Get API key from dashboard
.env
Email configuration
SMTP
SMTP
Gmail:Office 365:Custom SMTP:
.env
.env
.env
SendGrid
SendGrid
SMS reminders
Twilio
Twilio
- Create Twilio account
- Get a phone number
- Copy credentials from dashboard
.env
Database setup
PostgreSQL requirements
- Version: 13 or newer
- Collation: UTF8
- Extensions: None required (Prisma manages schema)
Local PostgreSQL
- macOS
- Ubuntu/Debian
- Windows
- Docker
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:- PgBouncer
- Supabase
.env
Running migrations
Troubleshooting
Database connection failed
Database connection failed
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)
NEXTAUTH_URL error
NEXTAUTH_URL error
Error:
[next-auth][error][CLIENT_FETCH_ERROR]Solution:
Ensure NEXTAUTH_URL matches your actual URL:Module not found errors
Module not found errors
Error:
Cannot find module '@calcom/...'Solutions:Port already in use
Port already in use
Error:
Port 3000 is already in useSolutions:VAPID keys error
VAPID keys error
Error: Add to
No key set vapidDetails.publicKeySolution:
Generate Web Push keys:.env:Windows symbolic link issues
Windows symbolic link issues
Error:
EPERM: operation not permitted, symlinkSolution:-
Clone with symlink support:
-
Replace symlink with real copy:
Production checklist
Before going live:Security
- Change all default secrets
- Use strong, unique passwords
- Enable SSL for database connections
- Set
NODE_TLS_REJECT_UNAUTHORIZED=0only behind trusted load balancers - Configure CSP:
CSP_POLICY="non-strict"
- Configure production SMTP or SendGrid
- Verify sender domain
- Test email delivery
- Set up SPF, DKIM, DMARC records
Database
- Set up automated backups
- Enable connection pooling
- Configure read replicas (if needed)
- Set up monitoring and alerts
Integrations
- Add production OAuth redirect URIs
- Configure video conferencing credentials
- Set up payment processing (Stripe)
- Test all integrations
Performance
- Set up CDN for static assets
- Configure Redis for session storage (optional)
- Enable gzip compression
- Set
MAX_OLD_SPACE_SIZE=4096for build
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.