How to self-host Cal.com in 2026: own your scheduling

Calendly charges per user. Cal.com Cloud charges per user. The self-hosted Community Edition is free — you pay only for the server. Three ways to do it, including a 3-minute deploy on livemy.app.

Dmytro Chervonyi

Dmytro Chervonyi

Co-founder & CMO, livemy.app

Last updated

8

min.

Reading time

TABLE OF CONTENTS

item

How to self-host Cal.com in 2026 (Calendly alternative)

AI Summary

Cal.com is the open-source Calendly alternative — 36,000 GitHub stars, full scheduling feature set, multi-calendar integration. Cal.com Cloud charges $12/user/month (Team) or $37/user/month (Organization). The self-hosted Community Edition is free — you pay only for the server, around $5–20/month on a VPS or $20/month flat on livemy.app. The tricky part isn't the deployment, it's the Google Calendar OAuth setup — plan 30–45 minutes for that the first time. This guide walks the three self-host paths, the essential environment variables (NEXTAUTH_SECRET, CALENDSO_ENCRYPTION_KEY, GOOGLE_API_CREDENTIALS), the 3-minute livemy.app deploy, and the five things that quietly break self-hosted Cal.com.

What Cal.com is and why people self-host it

Cal.com is open-source scheduling — think Calendly, but free, customizable, and run on your own server. Around 36,000 GitHub stars in 2026, full feature set including team scheduling, round-robin, payment-gated bookings, and Google/Outlook/iCloud calendar integration.

Three reasons to self-host instead of using Cal.com Cloud.

Per-user pricing on Cloud. Cal.com Team is $12/user/month; Organization is $37/user/month. A 10-person sales team running team scheduling lands at $120–$370/month. Self-hosted is flat regardless of seat count.

Custom domain + branding. Cloud's custom domain is part of the paid plans. Self-hosted is yours from day one — the booking page lives on book.yourdomain.com with your branding.

Data sovereignty. Calendar data, contact info, payment metadata — all on your server. Important for compliance-heavy teams and any team uneasy about scheduling SaaS holding customer PII.

Three ways to self-host Cal.com

Path A: Docker Compose on your own VPS

Cal.com's official Docker image is at calcom/cal.com on DockerHub. The team also publishes a reference docker-compose.yml in the main repo. Spin up a VPS (4 GB RAM recommended), install Docker, drop the Compose file, configure environment variables, set up nginx + SSL.

The catches. The Cal.com docs themselves note that self-hosting requires "advanced knowledge of server administration, database management, and securing sensitive data." Realistic time-to-first-deploy: 2–6 hours, plus the 30–45 minutes for Google Calendar OAuth.

Path B: Managed Docker host (Coolify, Dokploy, Railway)

Railway and Coolify both ship Cal.com as a one-click template. Cleaner setup than raw Compose. You still do the Google OAuth dance, but the infra parts are handled.

Path C: livemy.app one-click deploy

Pick the Cal.com template, point your domain, ship. livemy.app provisions PostgreSQL, handles SSL, applies daily backups.

The good. Three-minute deploy. $20/month flat. The Google OAuth setup is still on you (this is a Google requirement, not a host one), but everything else is handled.

From zero to Cal.com on livemy.app (about 3 minutes)

Step 1: Sign up at livemy.app, pick Maker

Go to livemy.app, click Start free, pick Maker ($20/month) for always-on. Free-tier sleep would delay reminder emails and webhook deliveries.

Step 2: Deploy from the Cal.com template

In the dashboard: New projectTemplateCal.com. livemy.app pulls the official image, provisions PostgreSQL, sets up volume storage.

Step 3: Configure the essential environment variables

Under Project Settings → Environment Variables:

  • NEXTAUTH_URL — your full public URL with https://

  • NEXTAUTH_SECRET — a 32+ character random string (used to sign auth tokens)

  • CALENDSO_ENCRYPTION_KEY — a 32-character random string (used to encrypt credentials stored in the database)

  • DATABASE_URL — PostgreSQL connection (auto-populated by livemy.app)

Plus SMTP variables for email delivery (Mailgun, Postmark, Resend, SendGrid — any provider works).

Step 4: Deploy and complete the Cal.com setup

Typical deploy time: 3–5 minutes (Cal.com has a heavy initial Prisma migration). When status flips to Live, visit the URL, create the owner account, configure your first availability window.

Step 5: Point your domain

Add custom domain, update DNS, wait for SSL. Update NEXTAUTH_URL to the new domain and redeploy — NextAuth uses it for callback URLs.

Step 6: Set up Google Calendar OAuth (the 30-45 minute part)

This is the hardest step in any Cal.com self-host. There's no way around it because Google requires per-app OAuth credentials.

  • Go to Google Cloud Console, create a new project

  • Enable the Google Calendar API

  • Configure the OAuth consent screen (Internal or External, app name, scopes for calendar.events and calendar.readonly)

  • Create OAuth client ID credentials. Add both https://yourdomain.com/api/integrations/googlecalendar/callback and https://yourdomain.com/api/auth/callback/google as authorized redirect URIs

  • Download the JSON credentials file. Copy the entire JSON contents into the GOOGLE_API_CREDENTIALS environment variable

Redeploy. Connect a calendar from inside Cal.com to confirm OAuth works. Repeat the OAuth dance for Outlook / iCloud if your team uses them.

Five things that quietly break self-hosted Cal.com

1. NEXTAUTH_URL doesn't match the public URL

NextAuth uses this to build callback URLs. Mismatch — say it's http://localhost:3000 in dev and you forgot to update it — and Google OAuth fails with "redirect URI mismatch" because Google sees an unexpected callback.

Fix. Set NEXTAUTH_URL to the final public URL with https:// and no trailing slash. Redeploy. Re-test one OAuth connection.

2. CALENDSO_ENCRYPTION_KEY changes lock all stored credentials

Cal.com encrypts third-party OAuth tokens (Google, Outlook) with this key. Change the value after users have connected calendars and every connection breaks — the encrypted tokens in Postgres can no longer be decrypted.

Fix. Set CALENDSO_ENCRYPTION_KEY once at first deploy, save it somewhere secure, never change it.

3. Google OAuth redirect URI not exact

Google rejects any redirect URI that doesn't match exactly — including trailing slash, http vs https, and any extra path segments. The Cal.com docs list both required URIs; you need both, and both have to be byte-exact.

Fix. Copy the redirect URIs from your live Cal.com instance directly into Google's OAuth client config. After custom domain changes, update the URIs in Google Cloud Console.

4. Email delivery requires SMTP credentials

Cal.com sends confirmation emails, calendar invites, reminders. Without SMTP variables set, bookings happen but the invitee never gets the calendar invite or confirmation — you get a Cal.com that quietly looks broken.

Fix. Set EMAIL_SERVER_HOST, EMAIL_SERVER_PORT, EMAIL_SERVER_USER, EMAIL_SERVER_PASSWORD, EMAIL_FROM. Mailgun, Postmark, Resend all work. Test by creating a booking with a different email address.

5. Webhooks fire to NEXTAUTH_URL

Cal.com's webhook system signs and delivers events to your endpoints using the URL configured in NEXTAUTH_URL. If you set up webhooks against the temporary subdomain and then changed to a custom domain, the webhook deliveries succeed but the signing URL is wrong, which trips signature verification on the receiver side.

Fix. After any URL change, regenerate webhooks (Cal.com dashboard → Settings → Webhooks → edit each one) to refresh the signing payload.

Cost: Cal.com Cloud vs self-hosted

Real numbers for a small team of 10 doing sales scheduling.

Cal.com Cloud Team: $12/user × 10 = $120/month

Cal.com Cloud Organization: $37/user × 10 = $370/month (this tier adds SSO, advanced reporting, custom branding)

Self-hosted on a $10 VPS: $10/month flat + email provider ($0–10) = $10–20 total

Self-hosted on livemy.app: $25/month flat ($20 Maker + $5 backups) + $0–10 email = $25–35 total

For a 10-person team, self-hosting on livemy.app saves $85–$345/month. Annual savings: $1,000–$4,000.

FAQ

Is self-hosted Cal.com free?

The software is free under the AGPL license. You pay for the server, email delivery, and any optional Google/Outlook/iCloud OAuth fees (none for personal use). Realistic monthly cost: $10–35/month total. Unlimited users at that flat cost — the big win vs Cal.com Cloud's per-user pricing.

Do I need Google Calendar OAuth for self-hosted Cal.com?

Only if you want users to connect their Google Calendars (which most do). Cal.com works without it for booking only, but real calendar sync requires the OAuth setup. The 30–45-minute setup is a one-time job; once done it covers all users.

Can I migrate from Calendly to self-hosted Cal.com?

Yes. Cal.com has an official Calendly importer that pulls event types, availability, and team data. Bookings on Calendly stay there (no migration for historical bookings), but going forward, new bookings happen on your self-hosted Cal.com. Plan for 1–2 hours for a small team.

Can multiple users share one self-hosted Cal.com?

Yes — unlimited users on one instance. This is the big win over Cal.com Cloud, which charges per user. A 50-person organization runs on the same $25/month livemy.app instance as a solo founder.

Will self-hosted Cal.com auto-update?

On livemy.app, you can opt into auto-update or pin to a specific version. Cal.com ships frequent updates — weekly minor releases, occasional larger ones. Self-hosting means you control the upgrade cadence; auto-update on a managed platform like livemy.app keeps you current without manual work.

Self-host Cal.com — unlimited users, flat $25/month

If you're a small team paying Calendly or Cal.com Cloud per seat, self-hosting drops the per-user math. The cheapest path is a $10 VPS. The fastest path is livemy.app's Cal.com template — just budget the 30–45 minutes for Google OAuth.

→ Start free on livemy.app · Cal.com template with Postgres provisioned, custom domain, SSL, backups, all on Maker at $20/month flat.

Stuck on the Google OAuth setup? Email hello@livemy.app with the error message. Replies inside one business day.

Read next

Dmytro Chervonyi

Dmytro Chervonyi

,

Co-founder & CMO, livemy.app

Co-founder & CMO at livemy.app. 12 years as a CMO scaling SaaS from $0 to $10M+ ARR across marketing, sales, and infra products and tools. Now building the missing step between AI-built code and a live URL — for non-developers who’d rather ship than learn DevOps.

Build something.
We'll make it live.

Free to start. 2 minutes to deploy. One click to cancel.

No credit card · No commitment · Free tier forever