Cal.com is one of the best open-source alternatives to Calendly — and yes, you can self-host it.
In this guide, I’ll show you how to deploy Cal.com using Docker on a clean Ubuntu server (works great on any VPS), connect it to a PostgreSQL database, and make sure it’s always online by the time you’re done.
Ubuntu 22.04 server (or similar)
Docker + Docker Compose installed
Domain name (optional but recommended)
SMTP credentials (for email support)
15 minutes
git clone https://github.com/calcom/cal.com.git
cd cal.com
Copy the example environment file:
cp .env.example .env
Edit .env
and set your desired values:
DATABASE_URL=postgresql://cal:calpass@db:5432/calcom
NEXTAUTH_SECRET=generateOne
SMTP_HOST=smtp.example.com
SMTP_USER=username
SMTP_PASS=password
Create a docker-compose.yml
:
version: "3.9"
services:
db:
image: postgres:14
environment:
POSTGRES_USER: cal
POSTGRES_PASSWORD: calpass
POSTGRES_DB: calcom
volumes:
- pgdata:/var/lib/postgresql/data
calcom:
build: .
ports:
- "3000:3000"
environment:
- DATABASE_URL=postgresql://cal:calpass@db:5432/calcom
depends_on:
- db
volumes:
pgdata:
docker compose up --build -d
Cal.com will now be running on http://your-server-ip:3000
Use NGINX or a reverse proxy like Caddy or Nginx Proxy Manager to bind Cal.com to calendar.yourdomain.com
with HTTPS.
Go to your IP or domain → sign up → test the booking flow.
Check database persistence and email sending.
Running a self-hosted service means you’re responsible when things go down.
Set up uptime monitoring + a public/private status page in 2 minutes using Garmingo Status:
Monitor https://calendar.yourdomain.com
Get alerts via Email, Slack, Telegram, etc.
Track uptime, SLA, and incidents
Publish a status page (or keep it internal)
Forever free plan (no credit card needed)
Because what good is a calendar app if it's offline?
✅ Clone Cal.com
⚙️ Set up PostgreSQL via Docker
🔧 Configure .env
🌐 Optional: Add domain
🧠 Pro move: Set up monitoring with Garmingo
Self-hosting is powerful — but only if your users can rely on it.
Got an idea? Let us know