feat: add cal.com

This commit is contained in:
Sturdy 2024-01-23 18:59:38 +01:00
parent 47cfbc19b1
commit 4d9127b9da
5 changed files with 771 additions and 0 deletions

106
apps/calcom/config.json Normal file
View File

@ -0,0 +1,106 @@
{
"name": "Cal.com",
"available": true,
"port": 8294,
"exposable": true,
"id": "calcom",
"description": "The open source Calendly successor. You are in charge of your own data, workflow, and appearance.\nCalendly and other scheduling tools are awesome. It made our lives massively easier. We're using it for business meetings, seminars, yoga classes, and even calls with our families. However, most tools are very limited in terms of control and customization.\n That's where Cal.com comes in. Self-hosted or hosted by us. White-label by design. API-driven and ready to be deployed on your own domain. Full control of your events and data.",
"tipi_version": 1,
"version": "3.7.6",
"categories": ["calendar", "social"],
"short_desc": "Scheduling infrastructure for absolutely everyone.",
"author": "cal.com",
"source": "https://github.com/calcom/cal.com",
"website": "https://cal.com/",
"supported_architectures": ["amd64"],
"form_fields": [
{
"type": "password",
"label": "Next.js Auth secret. Generate one with `openssl rand -base64 32`",
"required": true,
"min": 1,
"max": 1024,
"env_variable": "CALCOM_NEXTAUTH_SECRET"
},
{
"type": "password",
"label": "Calendso Encryption Key. Encryption key that will be used to encrypt CalDAV credentials, choose a random string, for example with `dd if=/dev/urandom bs=1K count=1 | md5sum`",
"required": true,
"min": 1,
"max": 1024,
"env_variable": "CALENDSO_ENCRYPTION_KEY"
},
{
"type": "text",
"label": "MS Graph Client ID. Used for the Office 365 / Outlook.com Calendar integration",
"required": false,
"min": 1,
"max": 1024,
"env_variable": "MS_GRAPH_CLIENT_ID"
},
{
"type": "password",
"label": "MS Graph Client Secret. Used for the Office 365 / Outlook.com Calendar integration",
"required": false,
"min": 1,
"max": 1024,
"env_variable": "MS_GRAPH_CLIENT_SECRET"
},
{
"type": "text",
"label": "Zoom Client ID. Used for the Zoom integration",
"required": false,
"min": 1,
"max": 1024,
"env_variable": "ZOOM_CLIENT_ID"
},
{
"type": "password",
"label": "Zoom Client Secret. Used for the Zoom integration",
"required": false,
"min": 1,
"max": 1024,
"env_variable": "ZOOM_CLIENT_SECRET"
},
{
"type": "email",
"label": "Configures the global From: header whilst sending emails.",
"required": true,
"min": 1,
"max": 1024,
"env_variable": "EMAIL_FROM"
},
{
"type": "fqdn",
"label": "Email server host (SMTP)",
"required": true,
"min": 1,
"max": 1024,
"env_variable": "EMAIL_SERVER_HOST"
},
{
"type": "number",
"label": "Email server port (SMTP)",
"required": true,
"min": 1,
"max": 8,
"env_variable": "EMAIL_SERVER_PORT"
},
{
"type": "password",
"label": "Email server password (SMTP)",
"required": true,
"min": 1,
"max": 1024,
"env_variable": "EMAIL_SERVER_PASSWORD"
},
{
"type": "text",
"label": "Node.js environment type (production, development, test)",
"required": true,
"min": 1,
"max": 1024,
"env_variable": "CALCOM_NODE_ENV"
}
]
}

0
apps/calcom/data/.env Normal file
View File

View File

@ -0,0 +1,56 @@
version: '3.8'
services:
calcom:
image: calcom/cal.com
restart: always
ports:
- ${APP_PORT}:3000
networks:
- tipi_main_network
environment:
- DATABASE_HOST=${POSTGRES_HOST}
- DATABASE_URL=postgresql://${POSTGRES_USERNAME}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}/calcom
- POSTGRES_USER=${POSTGRES_USERNAME}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_DB=calcom
- LICENSE=agree
- NEXT_PUBLIC_LICENSE_CONSENT=agree
- NEXT_PUBLIC_WEBAPP_URL=http://${APP_DOMAIN}
- NEXTAUTH_SECRET=${CALCOM_NEXTAUTH_SECRET}
- CALENDSO_ENCRYPTION_KEY=${CALENDSO_ENCRYPTION_KEY}
- MS_GRAPH_CLIENT_ID=${MS_GRAPH_CLIENT_ID}
- MS_GRAPH_CLIENT_SECRET=${MS_GRAPH_CLIENT_SECRET}
- ZOOM_CLIENT_ID=${ZOOM_CLIENT_ID}
- ZOOM_CLIENT_SECRET=${ZOOM_CLIENT_SECRET}
- EMAIL_FROM=${EMAIL_FROM}
- EMAIL_SERVER_HOST=${EMAIL_SERVER_HOST}
- EMAIL_SERVER_PORT=${EMAIL_SERVER_PORT}
- EMAIL_SERVER_PASSWORD=${EMAIL_SERVER_PASSWORD}
- NODE_ENV={CALCOM_NODE_ENV}
labels:
# Main
traefik.enable: true
traefik.http.middlewares.calcom-web-redirect.redirectscheme.scheme: https
traefik.http.services.calcom.loadbalancer.server.port: 3000
# Web
traefik.http.routers.calcom-insecure.rule: Host(`${APP_DOMAIN}`)
traefik.http.routers.calcom-insecure.entrypoints: web
traefik.http.routers.calcom-insecure.service: calcom
traefik.http.routers.calcom-insecure.middlewares: calcom-web-redirect
# Websecure
traefik.http.routers.calcom.rule: Host(`${APP_DOMAIN}`)
traefik.http.routers.calcom.entrypoints: websecure
traefik.http.routers.calcom.service: calcom
traefik.http.routers.calcom.tls.certresolver: myresolver
# Local domain
traefik.http.routers.calcom-local-insecure.rule: Host(`calcom.${LOCAL_DOMAIN}`)
traefik.http.routers.calcom-local-insecure.entrypoints: web
traefik.http.routers.calcom-local-insecure.service: calcom
traefik.http.routers.calcom-local-insecure.middlewares: calcom-web-redirect
# Local domain secure
traefik.http.routers.calcom-local.rule: Host(`calcom.${LOCAL_DOMAIN}`)
traefik.http.routers.calcom-local.entrypoints: websecure
traefik.http.routers.calcom-local.service: calcom
traefik.http.routers.calcom-local.tls: true

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB