* docs: add self-hosting troubleshooting guide Add a dedicated troubleshooting page (docs/self-hosting/troubleshooting.mdx) covering the most common self-hosting issues: - 500 error during onboarding caused by missing STRIPE_PRIVATE_KEY (#25993) - Redirect to localhost after deployment (NEXTAUTH_URL / NEXT_PUBLIC_WEBAPP_URL) (#21921) - API v2 service not starting in Docker (missing REDIS_URL, JWT_SECRET, WEB_APP_URL) - CLIENT_FETCH_ERROR in Docker logs - SSL issues behind a reverse proxy - Prisma user creation failure on first setup Also adds the new page to the "Getting Started" navigation group in docs/docs.json. Co-Authored-By: Paperclip <noreply@paperclip.ing> * fix(docs): provide safer SSL troubleshooting alternatives Replace the blanket NODE_TLS_REJECT_UNAUTHORIZED=0 recommendation with three options in order of preference: 1. Use HTTP internally with proper header forwarding 2. Add internal CA to NODE_EXTRA_CA_CERTS 3. Disable TLS verification (last resort with security warning) The previous guidance could expose users to MITM attacks on all external API calls (Stripe, Google, etc.). * fix(docs): correct NEXTAUTH_URL guidance to prevent OAuth breakage The previous guidance recommended setting NEXTAUTH_URL to localhost for SSL/DNS issues, which breaks OAuth callbacks since external providers would redirect to localhost instead of the public domain. - Replace localhost workaround with extra_hosts in docker-compose - Add nginx proxy header configuration example - Add warnings explaining why localhost breaks OAuth Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix(docs): correct troubleshooting guide based on codebase verification - Stripe section: Rewrite to accurately reflect current behavior (app gracefully handles missing keys by marking Stripe as 'not installed' rather than crashing). Clarify that NEXT_PUBLIC_STRIPE_PUBLIC_KEY belongs in .env.appStore. - API v2 section: Add missing required vars (STRIPE_API_KEY, STRIPE_WEBHOOK_SECRET, NEXTAUTH_SECRET) that crash the service if absent. Move WEB_APP_URL to optional (it has a fallback default). - CLIENT_FETCH_ERROR section: Add caveat about HTTPS URLs failing with the extra_hosts approach when app listens on port 3000. - Vercel note: Clarify that NEXTAUTH_URL is auto-inferred via VERCEL_URL, not just 'left empty'. - Database section: Replace unverifiable metadata/id advice with actionable migration and setup guidance matching actual code in apps/web/app/api/auth/setup/route.ts. Co-Authored-By: romitgabani1 <romitgabani1.work@gmail.com> * docs: fix inaccuracies in self-hosting troubleshooting guide - Add missing CALENDSO_ENCRYPTION_KEY to API v2 required variables - Fix setup endpoint path from /api/auth/setup to /auth/setup - Add note about NEXTAUTH_URL auto-derivation from NEXT_PUBLIC_WEBAPP_URL * fix(docs): correct NEXTAUTH_URL derivation mechanism description NextAuth infers the base URL from the request's Host header when NEXTAUTH_URL is not set, not from NEXT_PUBLIC_WEBAPP_URL directly. Co-Authored-By: romitgabani1 <romitgabani1.work@gmail.com> --------- Co-authored-by: shockzM1 <shockz@dsn.so> Co-authored-by: Paperclip <noreply@paperclip.ing> Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com> Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
262 lines
7.8 KiB
JSON
262 lines
7.8 KiB
JSON
{
|
|
"$schema": "https://mintlify.com/docs.json",
|
|
"theme": "mint",
|
|
"name": "Cal.com Docs",
|
|
"colors": {
|
|
"primary": "#111827",
|
|
"light": "#d6d6d6",
|
|
"dark": "#111827"
|
|
},
|
|
"redirects": [
|
|
{
|
|
"source": "/developing/introduction",
|
|
"destination": "/developing"
|
|
}
|
|
],
|
|
"favicon": "/favicon.png",
|
|
"navigation": {
|
|
"tabs": [
|
|
{
|
|
"tab": "API v2 Reference",
|
|
"openapi": {
|
|
"source": "/api-reference/v2/openapi.json",
|
|
"directory": "api-reference/v2"
|
|
},
|
|
"groups": [
|
|
{
|
|
"group": "Getting Started",
|
|
"pages": [
|
|
"api-reference/v2/introduction",
|
|
"api-reference/v2/oauth",
|
|
"api-reference/v2/v1-v2-differences"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"tab": "Developing",
|
|
"groups": [
|
|
{
|
|
"group": "Getting Started",
|
|
"pages": [
|
|
"developing/local-development"
|
|
]
|
|
},
|
|
{
|
|
"group": "Open Source Contribution",
|
|
"pages": [
|
|
"developing/open-source-contribution/introduction",
|
|
"developing/open-source-contribution/code-styling",
|
|
"developing/open-source-contribution/pull-requests",
|
|
"developing/open-source-contribution/contributors-guide"
|
|
]
|
|
},
|
|
{
|
|
"group": "Guides",
|
|
"pages": [
|
|
{
|
|
"group": "API Development",
|
|
"icon": "brackets-curly",
|
|
"pages": [
|
|
"developing/guides/api/how-to-setup-api-in-a-local-instance"
|
|
]
|
|
},
|
|
{
|
|
"group": "App Store and Integration",
|
|
"icon": "grid",
|
|
"pages": [
|
|
"developing/guides/appstore-and-integration/build-a-greeter-app",
|
|
"developing/guides/appstore-and-integration/build-an-app",
|
|
"developing/guides/appstore-and-integration/how-to-show-assigned-people-from-a-crm"
|
|
]
|
|
},
|
|
{
|
|
"group": "Auth and Provision",
|
|
"icon": "user-shield",
|
|
"pages": [
|
|
"developing/guides/auth-and-provision/how-to-setup-oidc-with-okta",
|
|
"developing/guides/auth-and-provision/how-to-setup-scim-with-okta",
|
|
"developing/guides/auth-and-provision/sso-setup"
|
|
]
|
|
},
|
|
{
|
|
"group": "Automation",
|
|
"icon": "webhook",
|
|
"pages": [
|
|
"developing/guides/automation/webhooks"
|
|
]
|
|
},
|
|
{
|
|
"group": "Atoms",
|
|
"icon": "atom",
|
|
"pages": [
|
|
"developing/guides/atoms/add-changesets"
|
|
]
|
|
},
|
|
{
|
|
"group": "Email",
|
|
"icon": "inbox",
|
|
"pages": [
|
|
"developing/guides/email/setup-mailtrap-for-email-testing"
|
|
]
|
|
},
|
|
{
|
|
"group": "Embeds",
|
|
"icon": "code-simple",
|
|
"pages": [
|
|
"developing/guides/embeds/embed-events"
|
|
]
|
|
},
|
|
{
|
|
"group": "Insights",
|
|
"icon": "chart-bar",
|
|
"pages": [
|
|
"developing/guides/insights/add-new-booking-charts"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"tab": "Self Hosting",
|
|
"groups": [
|
|
{
|
|
"group": "Getting Started",
|
|
"pages": [
|
|
"self-hosting/installation",
|
|
"self-hosting/database-migrations",
|
|
"self-hosting/upgrading",
|
|
"self-hosting/sso-setup",
|
|
"self-hosting/docker",
|
|
"self-hosting/license-key",
|
|
"self-hosting/troubleshooting"
|
|
]
|
|
},
|
|
{
|
|
"group": "Deployments",
|
|
"pages": [
|
|
"self-hosting/deployments/aws",
|
|
"self-hosting/deployments/azure",
|
|
"self-hosting/deployments/elestio",
|
|
"self-hosting/deployments/gcp",
|
|
"self-hosting/deployments/northflank",
|
|
"self-hosting/deployments/railway",
|
|
"self-hosting/deployments/render",
|
|
"self-hosting/deployments/vercel"
|
|
]
|
|
},
|
|
{
|
|
"group": "Apps",
|
|
"pages": [
|
|
{
|
|
"group": "Install Apps",
|
|
"icon": "grid-2-plus",
|
|
"pages": [
|
|
"self-hosting/apps/install-apps/introduction",
|
|
"self-hosting/apps/install-apps/google",
|
|
"self-hosting/apps/install-apps/microsoft",
|
|
"self-hosting/apps/install-apps/zoom",
|
|
"self-hosting/apps/install-apps/daily",
|
|
"self-hosting/apps/install-apps/hubspot",
|
|
"self-hosting/apps/install-apps/sendgrid",
|
|
"self-hosting/apps/install-apps/stripe",
|
|
"self-hosting/apps/install-apps/twilio",
|
|
"self-hosting/apps/install-apps/zoho"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"group": "Guides",
|
|
"pages": [
|
|
{
|
|
"group": "App Store and Integration",
|
|
"icon": "grid",
|
|
"pages": [
|
|
"self-hosting/guides/appstore-and-integration/syncing-third-party-apps"
|
|
]
|
|
},
|
|
{
|
|
"group": "White Labeling",
|
|
"icon": "tag",
|
|
"pages": [
|
|
"self-hosting/guides/white-labeling/introduction",
|
|
"self-hosting/guides/white-labeling/custom-css",
|
|
"self-hosting/guides/white-labeling/color-tokens"
|
|
]
|
|
},
|
|
{
|
|
"group": "Sponsorship",
|
|
"icon": "money-check-dollar",
|
|
"pages": [
|
|
"self-hosting/guides/sponsorship/can-calcom-sponsor-my-open-source-project"
|
|
]
|
|
},
|
|
{
|
|
"group": "Organizations",
|
|
"icon": "building",
|
|
"pages": [
|
|
"self-hosting/guides/organization/organization-setup",
|
|
"self-hosting/guides/organization/understanding-organization-env-variables",
|
|
"self-hosting/guides/organization/single-organization-setup"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"tab": "API v1 Reference [Deprecated]",
|
|
"openapi": {
|
|
"source": "/api-reference/v1/openapi-v1.json",
|
|
"directory": "api-reference/v1"
|
|
},
|
|
"groups": [
|
|
{
|
|
"group": "Getting Started",
|
|
"pages": [
|
|
"api-reference/v1/introduction",
|
|
"api-reference/v1/authentication",
|
|
"api-reference/v1/errors",
|
|
"api-reference/v1/rate-limit"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"logo": {
|
|
"light": "https://cal.com/calcom-docs.svg",
|
|
"dark": "https://cal.com/calcom-docs-light.svg"
|
|
},
|
|
"api": {
|
|
"mdx": {
|
|
"server": "https://api.cal.com",
|
|
"auth": {
|
|
"method": "bearer"
|
|
}
|
|
}
|
|
},
|
|
"navbar": {
|
|
"links": [
|
|
{
|
|
"label": "Support",
|
|
"href": "https://go.cal.com/support"
|
|
}
|
|
],
|
|
"primary": {
|
|
"type": "button",
|
|
"label": "Dashboard",
|
|
"href": "https://app.cal.com"
|
|
}
|
|
},
|
|
"footer": {
|
|
"socials": {
|
|
"x": "https://x.com/calcom",
|
|
"github": "https://github.com/calcom",
|
|
"linkedin": "https://www.linkedin.com/company/cal-com"
|
|
}
|
|
}
|
|
}
|