Video coming soon…

📅 Setup Cal.com — Self-Hosted Scheduling & Booking Platform

Deploy Cal.com on Ubuntu with Docker and PostgreSQL — the open-source Calendly alternative for self-hosted appointment scheduling with team calendars, availability rules, and Google/Outlook integrations.

⚠️ Always review any script before running it on your server.

📦 Resources & Setup Scripts

Before starting, please make sure to grab the required scripts from our GitHub repository.

Automated install script — deploys Cal.com with PostgreSQL, NEXTAUTH_SECRET, and a web UI on port 3000.
View on GitHub

Quick Install:

wget https://raw.githubusercontent.com/mhmdali94/Docker/refs/heads/main/tools/calcom/calcom-ubuntu.sh
chmod +x calcom-ubuntu.sh
sudo bash calcom-ubuntu.sh

Tutorial Steps

1 Download the Script

wget https://raw.githubusercontent.com/mhmdali94/Docker/refs/heads/main/tools/calcom/calcom-ubuntu.sh

2 Make it Executable

chmod +x calcom-ubuntu.sh

3 Run the Installer

The script installs Docker, deploys PostgreSQL and Cal.com containers, generates a random NEXTAUTH_SECRET and CALENDSO_ENCRYPTION_KEY, runs Prisma database migrations, and starts the web UI on port 3000.

sudo bash calcom-ubuntu.sh

4 Access the Web UI

Open your browser and navigate to the Cal.com interface:

http://<your-server-ip>:3000

Ports Used

PortPurpose
3000Cal.com Web UI
5432PostgreSQL (internal only)

Overview

Cal.com (formerly Calendso) is an open-source scheduling and appointment booking platform — a self-hosted alternative to Calendly. It lets individuals and teams define their availability, create booking event types, and share a booking link so clients or colleagues can schedule time without back-and-forth emails. Cal.com supports Google Calendar and Microsoft Outlook two-way sync, SMTP email confirmations, team round-robin scheduling, Stripe payment integration for paid bookings, and a public API. Self-hosting gives you complete control over your booking data and removes per-seat pricing.

Why Use It

Calendly charges per user per month and stores all your booking data on their servers. Cal.com is entirely free to self-host — run unlimited users and booking pages on your own server. For agencies, clinics, consultancies, or any team that schedules external appointments, Cal.com eliminates subscription costs while giving you full data ownership. The open-source codebase means you can customize booking flows, branding, and integrations beyond what Calendly permits.

When You Need It

    Who Should Use It

      Real Use Cases

        Main Features

          How to Use After Installation

            Security Best Practices

              Ports and Firewall Notes

              Cal.com uses port 3000 for the web UI. PostgreSQL on port 5432 is internal to the Docker network. Restrict port 3000 with a reverse proxy behind HTTPS. Firewall: ufw allow from 192.168.1.0/24 to any port 3000.

              Backup and Maintenance

                Common Mistakes

                  Troubleshooting

                    Alternatives

                    Calendly is the commercial hosted alternative. Rallly (covered in this academy) is a simpler meeting poll tool (Doodle alternative) for group scheduling without individual calendar sync. Zcal is another open-source scheduling tool. Formbricks can handle simple scheduling forms. For internal team scheduling only, most calendar apps (Google Calendar, Outlook) have built-in scheduling pages.

                    When Not to Use It

                    If you only need basic meeting polls (e.g. "when is everyone free this week?"), use Rallly instead — Cal.com is designed for individual or team booking pages with calendar sync. Cal.com has significant infrastructure requirements (Node.js, PostgreSQL, and email delivery); for single-person use without team features, the self-hosted overhead may not justify the setup versus using Calendly's free tier.

                    Need Professional Help?

                    PrismaTechWork provides end-to-end infrastructure services.

                      Contact Us

                      Frequently Asked Questions

                      What database does Cal.com require?

                      Cal.com requires PostgreSQL. The install script deploys PostgreSQL alongside the Cal.com container on a shared Docker network with all connection credentials pre-configured.

                      Does Cal.com support Google Calendar and Outlook sync?

                      Yes. Cal.com supports two-way sync with Google Calendar and Microsoft Outlook. OAuth app credentials must be configured in Settings → Integrations after installation.

                      Can Cal.com send email confirmations?

                      Yes. Cal.com sends booking confirmations and reminders via SMTP. Configure EMAIL_SERVER_HOST, EMAIL_SERVER_PORT, EMAIL_SERVER_USER, EMAIL_SERVER_PASSWORD, and EMAIL_FROM in the Docker environment variables.

                      What is the default port for Cal.com?

                      Cal.com runs on port 3000 by default. Use Nginx Proxy Manager with HTTPS and a custom domain for production deployments.

                      Does Cal.com support team scheduling?

                      Yes. Cal.com supports team event types with multiple assignable team members, round-robin booking distribution, and collective events where all members must be available.