[{"data":1,"prerenderedAt":117},["ShallowReactive",2],{"seo-verification":3,"blog-heberger-cal-com-en":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"id":7,"slug":8,"title":9,"excerpt":10,"readTime":11,"views":12,"isPinned":13,"publishedAt":14,"category":15,"categories":21,"featuredImage":23,"bgImage":24,"posterImage":25,"relatedSolution":26,"intro":28,"sections":29,"ctaTitle":72,"ctaBody":73,"ctaButton":74,"ctaUrl":75,"relatedPosts":76},88,"heberger-cal-com","Host Cal.com on Your Own VPS","Replace Calendly with your own instance: deploy Cal.com on a VPS with PostgreSQL, Docker and SSL. Detailed self-hosting guide.",8,456,false,"2026-03-24T00:00:00+00:00",{"id":16,"name":17,"slug":18,"color":19,"icon":20},7,"Self-hosting","self-hosting","bg-indigo-500\u002F10 text-indigo-400","cloud",[22],{"id":16,"name":17,"slug":18,"color":19,"icon":20},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fheberger-cal-com-poster.svg",{"categorySlug":18,"appSlug":27},"cal-com","Calendly is convenient but proprietary, limited in its free plan and hungry for your meeting data. Cal.com is its open source equivalent: appointment scheduling, calendar and video integrations, all hostable on your own infrastructure. Here is how to deploy it on a VPS, database included.",[30,34,44,47,69],{"type":31,"title":32,"body":33},"h2","Why self-host Cal.com on a VPS","Cal.com is a Next.js application backed by PostgreSQL that handles appointment scheduling, event types, availability and synchronization with calendars (Google, CalDAV, Office 365). Self-hosting answers a specific need: controlling the availability and appointment-booking data of your clients, which normally passes through a third-party US service. On a VPS, you eliminate the free plan's limits (a single event type, imposed branding), you connect your own Google\u002Fvideo API keys and you embed the booking widget directly into your site under your domain. Since Cal.com is a persistent Node application with a database and a production build, it requires a VPS — shared hosting can neither run the process nor host PostgreSQL.",{"type":35,"title":36,"items":37},"ul","Concrete benefits of a self-hosted Cal.com",[38,39,40,41,42,43],"Unlimited event types: 15-min interviews, 30-min demos, group workshops, without a paywall.","Booking data on your side: no leak of clients' contact details and time slots to a third-party SaaS.","Full white-label: the booking link carries your domain, not a vendor's.","Webhooks and API: trigger automations (CRM, billing) on every appointment booked.","Google Calendar, CalDAV and video integrations (Jitsi, Google Meet) configured with your own keys.","Team bookings and round-robin to distribute appointments among several collaborators.",{"type":31,"title":45,"body":46},"Technical requirements","Cal.com is more demanding than the self-hosting average because of its Next.js foundation and the build step. Plan for 2 vCPUs, 4 GB of RAM and 20 GB of disk for a comfortable team instance; 2 GB of RAM can suffice for individual use but the initial build is tighter. You need Docker and Docker Compose, a PostgreSQL database (included in the official compose), a domain `rdv.yourdomain.com` pointed at the VPS, and several mandatory environment variables: `NEXTAUTH_SECRET`, `CALENDSO_ENCRYPTION_KEY` (randomly generated keys) and `NEXT_PUBLIC_WEBAPP_URL` set to your final HTTPS URL. For calendar sync and video, prepare the Google OAuth credentials.",{"type":48,"title":49,"steps":50},"steps","Deploy Cal.com step by step",[51,54,57,60,63,66],{"title":52,"body":53},"Clone the Docker deployment repository","On the VPS: `git clone https:\u002F\u002Fgithub.com\u002Fcalcom\u002Fdocker.git cal-docker && cd cal-docker`. This repository provides a `docker-compose.yml` and an `.env.example` file to adapt.",{"title":55,"body":56},"Generate the secrets and configure the environment","Copy `.env.example` to `.env`, then generate the keys: `openssl rand -base64 32` for `NEXTAUTH_SECRET` and for `CALENDSO_ENCRYPTION_KEY`. Set `NEXT_PUBLIC_WEBAPP_URL=https:\u002F\u002Frdv.yourdomain.com` and the PostgreSQL credentials.",{"title":58,"body":59},"Build and launch the stack","Start with `docker compose up -d`. The first startup builds the Next.js image and applies the Prisma migrations on PostgreSQL — this is the longest step, follow it with `docker compose logs -f`.",{"title":61,"body":62},"Place the reverse proxy and SSL","Put Cal.com (internal port 3000) behind an HTTPS reverse proxy. With Caddy: `rdv.yourdomain.com { reverse_proxy calcom:3000 }`. The certificate is obtained automatically. The URL must match `NEXT_PUBLIC_WEBAPP_URL` exactly, otherwise authentication fails.",{"title":64,"body":65},"Create the account and configure availability","Open `https:\u002F\u002Frdv.yourdomain.com`, create the owner account, set your time slots and a first event type. Test an end-to-end booking to validate the chain.",{"title":67,"body":68},"Connect calendar and video","In the integrations, add your Google OAuth credentials for bidirectional calendar sync, and enable Jitsi or Google Meet to automatically generate a video link on each booking.",{"type":70,"body":71},"tip","Cal.com's memory build can fail on a 2 GB VPS during Next.js compilation. If you see a \"JavaScript heap out of memory\" error, temporarily add a 2 GB swap file (`fallocate -l 2G \u002Fswapfile && mkswap \u002Fswapfile && swapon \u002Fswapfile`) for the duration of the build, then remove it. For updates, always back up the PostgreSQL database before `docker compose pull` because the Prisma migrations are not reversible.","Host your appointment scheduling","The ServOrbit Cloud VPS provides the RAM and Docker required to build Cal.com, with a PostgreSQL and reverse proxy template ready to configure. Offer your clients a booking link under your own domain.","Deploy on Cloud VPS","\u002Fvps-cloud",[77,90,104],{"id":78,"slug":79,"title":80,"excerpt":81,"readTime":16,"views":82,"isPinned":13,"publishedAt":83,"category":84,"categories":85,"featuredImage":23,"bgImage":24,"posterImage":87,"relatedSolution":88},71,"heberger-nextcloud","Hosting Nextcloud on your own VPS","Take back control of your files: deploy Nextcloud on your VPS with Docker, database, reverse proxy and SSL.",2720,"2026-04-10T00:00:00+00:00",{"id":16,"name":17,"slug":18,"color":19,"icon":20},[86],{"id":16,"name":17,"slug":18,"color":19,"icon":20},"\u002Fblog\u002Fcovers\u002Fheberger-nextcloud-poster.svg",{"categorySlug":18,"appSlug":89},"nextcloud",{"id":91,"slug":92,"title":93,"excerpt":94,"readTime":95,"views":96,"isPinned":13,"publishedAt":97,"category":98,"categories":99,"featuredImage":23,"bgImage":24,"posterImage":101,"relatedSolution":102},72,"heberger-ghost","Hosting Ghost on your own VPS","Launch a professional blog or newsletter with Ghost on your VPS: Docker, database, paid subscriptions, reverse proxy and SSL.",6,2000,"2026-04-09T00:00:00+00:00",{"id":16,"name":17,"slug":18,"color":19,"icon":20},[100],{"id":16,"name":17,"slug":18,"color":19,"icon":20},"\u002Fblog\u002Fcovers\u002Fheberger-ghost-poster.svg",{"categorySlug":18,"appSlug":103},"ghost",{"id":105,"slug":106,"title":107,"excerpt":108,"readTime":16,"views":109,"isPinned":13,"publishedAt":110,"category":111,"categories":112,"featuredImage":23,"bgImage":24,"posterImage":114,"relatedSolution":115},73,"heberger-wordpress","Host WordPress on your own VPS","Host WordPress on your VPS for maximum performance and control: Docker, MariaDB, caching, reverse proxy and SSL.",501,"2026-04-08T00:00:00+00:00",{"id":16,"name":17,"slug":18,"color":19,"icon":20},[113],{"id":16,"name":17,"slug":18,"color":19,"icon":20},"\u002Fblog\u002Fcovers\u002Fheberger-wordpress-poster.svg",{"categorySlug":18,"appSlug":116},"wordpress",1785628434574]