Merge branch 'apollo-sturdy-app/calcom'

This commit is contained in:
Nicolas Meienberger 2024-02-08 08:31:11 +01:00
commit 7fe4d2287c
4 changed files with 784 additions and 0 deletions

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

@ -0,0 +1,102 @@
{
"author": "cal.com",
"available": true,
"categories": ["calendar", "social"],
"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.",
"exposable": true,
"form_fields": [
{
"env_variable": "CALCOM_NEXTAUTH_SECRET",
"label": "Next.js Auth secret. Generate one with `openssl rand -base64 32`",
"max": 1024,
"min": 1,
"required": true,
"type": "password"
},
{
"env_variable": "CALENDSO_ENCRYPTION_KEY",
"max": 50,
"min": 50,
"type": "random"
},
{
"env_variable": "MS_GRAPH_CLIENT_ID",
"label": "MS Graph Client ID. Used for the Office 365 / Outlook.com Calendar integration",
"max": 1024,
"min": 1,
"required": false,
"type": "text"
},
{
"env_variable": "MS_GRAPH_CLIENT_SECRET",
"label": "MS Graph Client Secret. Used for the Office 365 / Outlook.com Calendar integration",
"max": 1024,
"min": 1,
"required": false,
"type": "password"
},
{
"env_variable": "ZOOM_CLIENT_ID",
"label": "Zoom Client ID. Used for the Zoom integration",
"max": 1024,
"min": 1,
"required": false,
"type": "text"
},
{
"env_variable": "ZOOM_CLIENT_SECRET",
"label": "Zoom Client Secret. Used for the Zoom integration",
"max": 1024,
"min": 1,
"required": false,
"type": "password"
},
{
"env_variable": "CALCOM_GOOGLE_API_CREDENTIALS",
"label": "Google API Credentials in JSON form. Used for the Google Calendar integration. See https://github.com/calcom/cal.com?tab=readme-ov-file#obtaining-the-google-api-credentials",
"required": false,
"text": "text"
},
{
"env_variable": "EMAIL_FROM",
"label": "Configures the global From: header whilst sending emails.",
"max": 1024,
"min": 1,
"required": true,
"type": "email"
},
{
"env_variable": "EMAIL_SERVER_HOST",
"label": "Email server host (SMTP)",
"max": 1024,
"min": 1,
"required": true,
"type": "fqdn"
},
{
"env_variable": "EMAIL_SERVER_PORT",
"label": "Email server port (SMTP)",
"max": 65535,
"min": 1,
"required": true,
"type": "number"
},
{
"env_variable": "EMAIL_SERVER_PASSWORD",
"label": "Email server password (SMTP)",
"max": 1024,
"min": 1,
"required": true,
"type": "password"
}
],
"id": "calcom",
"name": "Cal.com",
"port": 8294,
"short_desc": "Scheduling infrastructure for absolutely everyone.",
"source": "https://github.com/calcom/cal.com",
"supported_architectures": ["amd64"],
"tipi_version": 2,
"version": "3.7.11",
"website": "https://cal.com/"
}

View File

@ -0,0 +1,73 @@
version: '3.8'
services:
calcom:
container_name: calcom
image: calcom/cal.com:v3.7.11
restart: unless-stopped
ports:
- ${APP_PORT}:3000
networks:
- tipi_main_network
depends_on:
- db-calcom
environment:
- DATABASE_HOST=db-calcom
- DATABASE_URL=postgresql://${POSTGRES_USERNAME}:${POSTGRES_PASSWORD}@db-calcom/calcom
- POSTGRES_USER=${POSTGRES_USERNAME}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_DB=calcom
- LICENSE=agree
- NEXT_PUBLIC_LICENSE_CONSENT=agree
- NEXT_PUBLIC_WEBAPP_URL=https://${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}
- GOOGLE_API_CREDENTIALS=${CALCOM_GOOGLE_API_CREDENTIALS}
- EMAIL_FROM=${EMAIL_FROM}
- EMAIL_SERVER_HOST=${EMAIL_SERVER_HOST}
- EMAIL_SERVER_PORT=${EMAIL_SERVER_PORT}
- EMAIL_SERVER_PASSWORD=${EMAIL_SERVER_PASSWORD}
- NODE_ENV=production
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
db-calcom:
container_name: db-calcom
image: postgres:16.1
restart: on-failure
volumes:
- ${APP_DATA_DIR}/data/db:/var/lib/postgresql/data
environment:
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_USER=${POSTGRES_USERNAME}
- POSTGRES_DB=calcom
networks:
- tipi_main_network

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB