Skip to content

Guide · Open source

How to use cal.diy: self-host a booking page

Updated · written with AI from the project's own documentation and checked against our catalogue data

Cal.diy is a scheduling platform you run on your own server, so people can book time with you through a calendar page. It is a fork of Cal.com with the enterprise features removed and everything released under the MIT license. This guide explains what it is suited for, what you need installed, and how to get a local copy running.

Cal.diycalcom/cal.diy · ★ 49.6k · MIT

Quick start

  1. 1Check prerequisites. Confirm you have Node.js 18.x or newer, PostgreSQL 13.x or newer, and Yarn installed.
  2. 2Clone the repository. Run git clone https://github.com/calcom/cal.diy.git to download the source.
  3. 3Enter the project folder. Run cd cal.diy to move into the project directory.
  4. 4Install packages. Run yarn to install the project dependencies.
  5. 5Create your .env file. Copy .env.example to .env and add generated values for NEXTAUTH_SECRET and CALENDSO_ENCRYPTION_KEY.
  6. 6Set the database URL. Point DATABASE_URL at your PostgreSQL server using your own user, password, host and port.

Is cal.diy the right tool for you?

The project README says Cal.diy is intended mainly for personal, non-production use by people comfortable with server administration. It warns that self-hosting requires advanced knowledge of server administration, database management, and securing sensitive data.

There is no hosted or managed version. If you want a service someone else runs, or you need production or enterprise scheduling, the README points to Cal.com instead.

  • Good fit: individuals who want to self-host their own booking page, developers who want to study or modify a large TypeScript scheduling app, and hobbyists comfortable with Node.js and PostgreSQL.
  • Poor fit: businesses that need production or enterprise scheduling, and people without server administration experience.

What you need before you install cal.diy

Cal.diy is installed by cloning the repository and building it yourself. Install these prerequisites first.

  • Node.js, version 18.x or newer
  • PostgreSQL, version 13.x or newer
  • Yarn (recommended)
  • Git, to clone the repository
  • Docker and Docker Compose, only if you use the optional yarn dx quick start

Install cal.diy from source

Clone the repository, move into the project folder, and install the packages with Yarn. These are the commands from the project README.

On Windows, the README says to run the clone command in Git Bash with admin privileges and to enable symlinks.

git clone https://github.com/calcom/cal.diy.git cd cal.diy yarn

Configure the .env file and database

Copy .env.example to .env. Then generate two secrets with openssl and add them to the file: one for NEXTAUTH_SECRET and one for CALENDSO_ENCRYPTION_KEY.

Set DATABASE_URL to point at your PostgreSQL server, replacing the user, password, host and port placeholders with your own values. The README also explains how to create a quick local database if you do not have one.

On Windows, the README says to replace the packages/prisma/.env symlink with a real copy to avoid a Prisma error.

  • Duplicate .env.example to .env
  • Generate NEXTAUTH_SECRET with openssl rand -base64 32
  • Generate CALENDSO_ENCRYPTION_KEY with openssl rand -base64 24
  • Set DATABASE_URL with your PostgreSQL user, password, host and port
openssl rand -base64 32 openssl rand -base64 24 DATABASE_URL='postgresql://<user>:<pass>@<db-host>:<db-port>'

Optional: start with the yarn dx quick start

The README describes a quick start that needs Docker and Docker Compose. It starts a local Postgres instance with a few test users, and the credentials are printed in the console.

The README lists default test accounts for free, pro, trial, admin and onboarding-incomplete users. You can sign in with them at http://localhost:3000. To browse the seeded users, run yarn db-studio and open http://localhost:5555.

  • Free user, pro user, trial user, admin user and onboarding-incomplete user accounts are created
  • Run yarn db-studio to inspect the seeded data
yarn dx yarn db-studio

Adjust logging and memory for development

The README suggests raising Node's memory limit with NODE_OPTIONS if the app needs more RAM. You can also control tRPC logging verbosity with NEXT_PUBLIC_LOGGER_LEVEL in the .env file, where 0 is silly and 6 is fatal. A level enables logging at that level and higher.

  • 0 silly, 1 trace, 2 debug, 3 info, 4 warn, 5 error, 6 fatal
export NODE_OPTIONS="--max-old-space-size=16384" echo 'NEXT_PUBLIC_LOGGER_LEVEL=3' >> .env

Alternatives to cal.diy

Cal.com is the commercial, enterprise-ready project from the same codebase, and the README recommends it for business scheduling. Easy!Appointments is another option to compare. Calendly is a hosted service that is not open source, so it is useful only as a point of comparison.

What people use it for

  • Running a personal booking page on your own server
  • Studying how a large TypeScript scheduling application is structured
  • Modifying the MIT-licensed code for a private experiment
  • Testing features locally with the seeded test accounts from yarn dx

Frequently asked questions

Is cal.diy free?

Cal.diy is released under the MIT license and the README describes it as 100% MIT-licensed with no proprietary Enterprise Edition features. The README also says there is no license key required. You still pay for whatever server and database you run it on.

What do I need to install cal.diy?

The README lists Node.js 18.x or newer, PostgreSQL 13.x or newer, and Yarn, which it recommends. You install the project by cloning the repository and running yarn.

Is there a hosted version of cal.diy?

No. The README says Cal.diy is a self-hosted project with no hosted or managed version, so you run it on your own infrastructure.

What is the difference between cal.diy and Cal.com?

Cal.diy is a fork of Cal.com with enterprise and commercial code removed. The README lists Teams, Organizations, Insights, Workflows and SSO/SAML as features removed. For commercial or enterprise scheduling, the README recommends Cal.com.

Do I need Docker to run cal.diy?

No. Docker and Docker Compose are needed only for the optional yarn dx quick start, which starts a local Postgres instance. The manual setup uses your own PostgreSQL server through DATABASE_URL.

Why does the README say cal.diy is not for production?

The README says it is strictly recommended for personal, non-production use and that self-hosting requires advanced knowledge of server administration, database management, and securing sensitive data. It asks users to review all installation and configuration steps carefully.

New agent skills, repos and AI tools — every week

The best new skills and open-source projects, the fastest-growing repos, and one free prompt. Five minutes to read. Unsubscribe anytime.

Our verdict

Cal.diy suits individuals who are comfortable with Node.js, PostgreSQL and server administration and want an MIT-licensed, self-hosted booking page or a large TypeScript codebase to study. If you need a managed service, production scheduling or enterprise features, the README points you to Cal.com, and if you want an easier path, a hosted tool such as Calendly may be more practical.

Install options & downloads