Self-hosting Cal.com provides full control over your scheduling system, ensuring privacy and customization. This guide walks developers and homelabbers through installing Cal.com on a VPS using Docker. We highlight various providers, compare their prices, and provide detailed steps to deploy successfully.
Why Self-Host Cal.com?
Cal.com is an open-source, modern calendar and appointment scheduling platform. Hosting it yourself eliminates third-party dependencies, offers data privacy, and allows tailored features. Itโs suitable for teams, clinics, or personal use.
Choosing a VPS Provider
Cost-effective, reliable VPS providers are key for a smooth self-hosted experience. Here are top options, with their prices:
| Provider | Price per Month | Affiliate Link | Notes |
|---|---|---|---|
| Contabo | 5.99 EUR | Contabo | Great for larger resources. |
| Hetzner Cloud | 4.15 EUR | Hetzner | Affordable, robust infrastructure. |
| DigitalOcean | 6 USD | DigitalOcean | Popular, easy to use. |
| Vultr | 6 USD | Vultr | Good global coverage. |
| Linode | 5 USD | Akamai Cloud | Solid performance, affordable. |
For a comprehensive VPS comparison, visit /en/best/.
Prerequisites
- A VPS with at least 1 CPU, 2GB RAM, and 20GB storage.
- Root or sudo access.
- A domain name pointing to your VPS IP (recommended for SSL certs).
- Basic familiarity with terminal commands and Docker.
Step 1: Setting Up the VPS
Update packages:
sudo apt update && sudo apt upgrade -y
Install Docker and Docker Compose:
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker $USER
Log out and log back in to apply group changes.
Step 2: Preparing Docker Environment
Create a directory for Cal.com:
mkdir -p ~/calcom && cd ~/calcom
Create a docker-compose.yml file:
version: '3'
services:
cal:
image: www.cal.com/cal
restart: unless-stopped
ports:
- "80:80"
- "443:443"
environment:
- CAL_DOMAIN=cal.yourdomain.com
- CAL_PROTOCOL=https
volumes:
- cal-data:/app/data
- ./ssl:/etc/ssl:ro
volumes:
cal-data:
Replace cal.yourdomain.com with your actual domain.
Step 3: Securing with SSL
Use Letโs Encrypt for SSL certificates:
Install Certbot:
sudo apt install certbot
Generate certificates:
sudo certbot certonly --standalone -d cal.yourdomain.com
Save the certificates in the ~/calcom/ssl/ directory:
mkdir -p ~/calcom/ssl
sudo cp /etc/letsencrypt/archive/cal.yourdomain.com/*.pem ~/calcom/ssl/
Update the docker-compose.yml to mount the certificates and enable HTTPS.
Step 4: Deploying Cal.com
Start the container:
docker-compose up -d
Verify logs:
docker logs -f cal
Access Cal.com at https://cal.yourdomain.com. Ensure your firewall rules allow ports 80 and 443.
Step 5: Configuration and Customization
- Access the web interface at your domain.
- Set up your calendar, users, and integrations.
- For persistent data, ensure the Docker volume is correctly mapped.
- Enable SMTP for email notifications.
FAQs
How do I update Cal.com to a newer version?
To update, pull the latest image and restart the container:
docker pull www.cal.com/cal
docker-compose down
docker-compose up -d
Regularly check the Cal.com repo for new releases to stay updated on features and security patches.
Can I run Cal.com with Docker Compose on a minimal VPS?
Yes, but ensure the VPS has adequate resources (2GB RAM minimum). For production, allocate sufficient storage and CPU. Monitor resource usage, especially if hosting multiple services.
How do I secure my self-hosted Cal.com?
Use HTTPS with valid SSL certificates, configure firewalls to restrict access, and keep Docker images up to date. Regular backups of your Docker volumes and configurations are essential.
Additional Tips
- For advanced setups, consider reverse proxies like Nginx to manage SSL and load balancing.
- Automate SSL renewal with Certbotโs renewal hooks.
- Use a firewall (e.g., UFW) to restrict access to only necessary ports.
- Explore integrations with email servers for notifications.
Conclusion
Self-hosting Cal.com on a VPS is straightforward with Docker. By choosing an affordable provider, setting up Docker correctly, and securing your server, you get a private scheduling platform tailored to your needs. For detailed comparisons of VPS providers suitable for hosting apps like Cal.com, visit [full VPS comparison]. For more self-hosting projects, check r/selfhosted or awesome-selfhosted for inspiration.
Happy hosting!