# Docker

The Docker configuration for Cal is an effort powered by people within the community. Cal.com, Inc. does not provide official support for Docker, but we will accept fixes and documentation. Use at your own risk.

If you want to contribute to the Docker repository, [reply here](https://github.com/calcom/docker/discussions/32).

The Docker configuration can be found [in our docker repository](https://github.com/calcom/docker).

### Requirements

Make sure you have `docker` & `docker compose` installed on the server / system.

Note: `docker compose` without the hyphen is now the primary method of using docker-compose, per the Docker documentation.

### Getting Started

1. Clone calcom-docker

   ```
   git clone --recursive https://github.com/calcom/docker.git calcom-docker
   ```
2. Change into the directory

   ```
   cd calcom-docker
   ```
3. Update the calcom submodule

   ```
   git submodule update --remote --init
   ```
4. Rename `.env.example` to `.env` and then update `.env`
5. Build and start Cal.com via docker compose

   ```
   docker compose up --build
   ```
6. (First Run) Open a browser to [http://localhost:5555](http://localhost:5555/) to look at or modify the database content.

   a. Click on the `User` model to add a new user record.

   b. Fill out the fields (remembering to encrypt your password with [BCrypt](https://bcrypt-generator.com/)) and click `Save 1 Record` to create your first user.
7. Open a browser to [http://localhost:3000](http://localhost:3000/) and login with your just created, first user.

### Configuration

#### Build-time variables

These variables must be provided at the time of the docker build, and can be provided by updating the .env file. Changing these is not required for evaluation, but may be required for running in production. Currently, if you require changes to these variables, you must follow the instructions to build and publish your own image.

* NEXT\_PUBLIC\_WEBAPP\_URL
* NEXT\_PUBLIC\_LICENSE\_CONSENT
* NEXT\_PUBLIC\_TELEMETRY\_KEY

#### Important Run-time variables

* NEXTAUTH\_SECRET

### Git Submodules

This repository uses a git submodule.

To update the calcom submodule, use the following command:

```
git submodule update --remote --init
```

For more advanced usage, please refer to the git documentation: <https://git-scm.com/book/en/v2/Git-Tools-Submodules>

### Troubleshooting

* SSL edge termination: If running behind a load balancer which handles SSL certificates, you will need to add the environmental variable `NODE_TLS_REJECT_UNAUTHORIZED=0` to prevent requests from being rejected. Only do this if you know what you are doing and trust the services/load-balancers directing traffic to your service.
* Failed to commit changes: Invalid 'prisma.user.create()': Certain versions may have trouble creating a user if the field `metadata` is empty. Using an empty json object `{}` as the field value should resolve this issue. Also, the `id` field will autoincrement, so you may also try leaving the value of `id` as empty.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://calcom.gitbook.io/docs/introduction/quick-start/self-hosting/docker.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
