Skip to content
This repository was archived by the owner on Oct 29, 2025. It is now read-only.

Commit 9352247

Browse files
authored
Merge pull request #459 from vitvitlabs/main
Add Cal.com API v2 service and Redis to Docker Compose
2 parents 68d4361 + 97e0f81 commit 9352247

File tree

3 files changed

+134
-0
lines changed

3 files changed

+134
-0
lines changed

.env.example

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,17 @@ LICENSE=
1515
NEXT_PUBLIC_WEBAPP_URL=http://localhost:3000
1616
NEXT_PUBLIC_API_V2_URL=http://localhost:5555/api/v2
1717

18+
API_PORT=80
19+
API_URL=http://localhost:5555/api/v2
20+
LOG_LEVEL=info
21+
22+
WEB_APP_URL=http://localhost:3000/
23+
CALCOM_LICENSE_KEY=
24+
API_KEY_PREFIX=cal_
25+
GET_LICENSE_KEY_URL="https://console.cal.com/api/license"
26+
IS_E2E=false
27+
DOCS_URL=
28+
1829
# Configure NEXTAUTH_URL manually if needed, otherwise it will resolve to {NEXT_PUBLIC_WEBAPP_URL}/api/auth
1930
# NEXTAUTH_URL=http://localhost:3000/api/auth
2031

@@ -38,6 +49,10 @@ DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${DATABASE_HOST}
3849
DATABASE_DIRECT_URL=${DATABASE_URL}
3950
GOOGLE_API_CREDENTIALS={}
4051

52+
REDIS_HOST=redis
53+
REDIS_PORT=6379
54+
REDIS_URL=redis://${REDIS_HOST}:${REDIS_PORT}
55+
4156
# Set this to '1' if you don't want Cal to collect anonymous usage
4257
CALCOM_TELEMETRY_DISABLED=
4358

@@ -65,3 +80,35 @@ NODE_ENV=production
6580
# Set this to 'non-strict' to enable CSP for support pages. 'strict' isn't supported yet. Also, check the README for details.
6681
# Content Security Policy
6782
CSP_POLICY=
83+
84+
# VAPID keys for push notifications
85+
# Generate using: npx web-push generate-vapid-keys
86+
NEXT_PUBLIC_VAPID_PUBLIC_KEY=
87+
VAPID_PRIVATE_KEY=
88+
89+
# Used for stripe integration
90+
# See https://stripe.com/docs/keys
91+
STRIPE_API_KEY=sk_test_your_stripe_test_key_here
92+
STRIPE_WEBHOOK_SECRET=whsec_your_webhook_secret_here
93+
STRIPE_TEAM_MONTHLY_PRICE_ID=price_your_team_price_id_here
94+
STRIPE_PRICE_ID_STARTER=
95+
STRIPE_PRICE_ID_STARTER_OVERAGE=
96+
STRIPE_PRICE_ID_ESSENTIALS=
97+
STRIPE_PRICE_ID_ESSENTIALS_OVERAGE=
98+
STRIPE_PRICE_ID_ENTERPRISE=
99+
STRIPE_PRICE_ID_ENTERPRISE_OVERAGE=
100+
IS_TEAM_BILLING_ENABLED=false
101+
102+
# Axiom logging
103+
AXIOM_DATASET=
104+
AXIOM_TOKEN=
105+
106+
# DEBUG: 0
107+
# INFO: 1
108+
# WARN: 2
109+
# ERROR: 3
110+
LOGGER_BRIDGE_LOG_LEVEL="1"
111+
112+
# 1: Rewrite /api/v2 to /v2
113+
# 0: Don't rewrite
114+
REWRITE_API_V2_PREFIX="1"

README.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,29 @@ If you are evaluating Cal.com or running with minimal to no modifications, this
6767

6868
Most configurations can be left as-is, but for configuration options see [Important Run-time variables](#important-run-time-variables) below.
6969

70+
**Push Notifications (VAPID Keys)**
71+
If you see an error like:
72+
73+
```
74+
Error: No key set vapidDetails.publicKey
75+
```
76+
77+
This means your environment variables for Web Push are missing.
78+
You must generate and set `NEXT_PUBLIC_VAPID_PUBLIC_KEY` and `VAPID_PRIVATE_KEY`.
79+
80+
Generate them with:
81+
```bash
82+
npx web-push generate-vapid-keys
83+
```
84+
85+
Then update your `.env` file:
86+
```env
87+
NEXT_PUBLIC_VAPID_PUBLIC_KEY=your_public_key_here
88+
VAPID_PRIVATE_KEY=your_private_key_here
89+
```
90+
91+
Do **not** commit real keys to `.env.example` — only placeholders.
92+
7093
Update the appropriate values in your .env file, then proceed.
7194

7295
4. (optional) Pre-Pull the images by running the following command:

docker-compose.yaml

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
volumes:
44
database-data:
5+
redis-data:
56

67
networks:
78
stack:
@@ -19,6 +20,17 @@ services:
1920
networks:
2021
- stack
2122

23+
redis:
24+
container_name: redis
25+
image: redis:latest
26+
restart: always
27+
volumes:
28+
- redis-data:/data
29+
networks:
30+
- stack
31+
ports:
32+
- "${REDIS_PORT:-6379}:6379"
33+
2234
calcom:
2335
image: calcom.docker.scarf.sh/calcom/cal.com
2436
build:
@@ -50,6 +62,58 @@ services:
5062
depends_on:
5163
- database
5264

65+
calcom-api:
66+
container_name: calcom-api
67+
build:
68+
context: ./calcom
69+
dockerfile: apps/api/v2/Dockerfile
70+
args:
71+
DATABASE_URL: ${DATABASE_URL}
72+
DATABASE_DIRECT_URL: ${DATABASE_URL}
73+
restart: always
74+
networks:
75+
- stack
76+
ports:
77+
- "${API_PORT:-80}:${API_PORT:-80}"
78+
env_file: .env
79+
environment:
80+
- NODE_ENV=${NODE_ENV}
81+
- API_PORT=${API_PORT:-80}
82+
- API_URL=${API_URL}
83+
- DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${DATABASE_HOST}/${POSTGRES_DB}
84+
- DATABASE_READ_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${DATABASE_HOST}/${POSTGRES_DB}
85+
- DATABASE_WRITE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${DATABASE_HOST}/${POSTGRES_DB}
86+
- DATABASE_DIRECT_URL=${DATABASE_URL}
87+
- NEXTAUTH_SECRET=${NEXTAUTH_SECRET}
88+
- JWT_SECRET=${JWT_SECRET}
89+
- REDIS_URL=${REDIS_URL}
90+
- LOG_LEVEL=${LOG_LEVEL}
91+
- API_KEY_PREFIX=${API_KEY_PREFIX}
92+
- WEB_APP_URL=${WEB_APP_URL}
93+
- IS_E2E=${IS_E2E:-false}
94+
- REWRITE_API_V2_PREFIX=${REWRITE_API_V2_PREFIX:-true}
95+
- CALCOM_LICENSE_KEY=${CALCOM_LICENSE_KEY}
96+
- NEXT_PUBLIC_VAPID_PUBLIC_KEY=${NEXT_PUBLIC_VAPID_PUBLIC_KEY}
97+
- VAPID_PRIVATE_KEY=${VAPID_PRIVATE_KEY}
98+
- STRIPE_API_KEY=${STRIPE_API_KEY}
99+
- STRIPE_WEBHOOK_SECRET=${STRIPE_WEBHOOK_SECRET}
100+
- STRIPE_PRICE_ID_STARTER=${STRIPE_PRICE_ID_STARTER}
101+
- STRIPE_PRICE_ID_STARTER_OVERAGE=${STRIPE_PRICE_ID_STARTER_OVERAGE}
102+
- STRIPE_PRICE_ID_ESSENTIALS=${STRIPE_PRICE_ID_ESSENTIALS}
103+
- STRIPE_PRICE_ID_ESSENTIALS_OVERAGE=${STRIPE_PRICE_ID_ESSENTIALS_OVERAGE}
104+
- STRIPE_PRICE_ID_ENTERPRISE=${STRIPE_PRICE_ID_ENTERPRISE}
105+
- STRIPE_PRICE_ID_ENTERPRISE_OVERAGE=${STRIPE_PRICE_ID_ENTERPRISE_OVERAGE}
106+
- STRIPE_TEAM_MONTHLY_PRICE_ID=${STRIPE_TEAM_MONTHLY_PRICE_ID}
107+
- IS_TEAM_BILLING_ENABLED=${IS_TEAM_BILLING_ENABLED:-false}
108+
- AXIOM_DATASET=${AXIOM_DATASET}
109+
- AXIOM_TOKEN=${AXIOM_TOKEN}
110+
- LOGGER_BRIDGE_LOG_LEVEL=${LOGGER_BRIDGE_LOG_LEVEL}
111+
- DOCS_URL=${DOCS_URL}
112+
- GET_LICENSE_KEY_URL=${GET_LICENSE_KEY_URL}
113+
depends_on:
114+
- database
115+
- redis
116+
53117
# Optional use of Prisma Studio. In production, comment out or remove the section below to prevent unwanted access to your database.
54118
studio:
55119
image: calcom.docker.scarf.sh/calcom/cal.com

0 commit comments

Comments
 (0)