mirror of
https://github.com/andwati/zitadel.git
synced 2026-10-18 05:52:51 +00:00
Replaces the single-file `docker-compose.yaml` quickstart with a production-aware, Traefik-based compose pack in `deploy/compose/`. The pack covers the full arc from a 2-minute localhost quickstart to a hardened homelab or semi-production deployment. ### What's in the pack **Stack**: Traefik (proxy) → ZITADEL API (Go `:8080`) + ZITADEL Login (Next.js `:3000`) → PostgreSQL All HTTP/gRPC routing is handled by Traefik via Docker labels — no manual proxy config needed. The Login V2 UI is enabled by default. Login URLs are derived automatically from `ZITADEL_DOMAIN`, `ZITADEL_EXTERNALPORT`, and `ZITADEL_PUBLIC_SCHEME` — no separate URL variables needed. **Compose files** | File | Purpose | |------|---------| | `docker-compose.yml` | Base stack — works standalone. Uses explicit `name: zitadel` network for reliable Traefik service discovery. | | `docker-compose.mode-letsencrypt.yml` | TLS overlay: ACME HTTP challenge | | `docker-compose.mode-external-tls.yml` | TLS overlay: upstream LB/CDN terminates TLS. Uses `forwardedHeaders.trustedIPs` (configurable via `TRAEFIK_TRUSTED_IPS`) instead of `insecure=true`. | | `docker-compose.mode-local-tls.yml` | TLS overlay: self-signed certs for LAN | | `docker-compose.prodlike.yml` | Splits init / setup / start for controlled upgrades | | `docker-compose.test.yml` | CI overlay: swaps images to locally-built `:local` tags | **Optional profiles**: `cache` (Redis), `observability` (OpenTelemetry Collector) ### Build infra - New `@zitadel/api:pack` and `@zitadel/login:pack` Nx targets build local Docker images (`zitadel/zitadel:local`, `zitadel/zitadel-login:local`) for use in CI and local testing - `apps/api/Dockerfile` now accepts a `BINARY` build arg so local and release builds share the same image ### Testing - New `@zitadel/compose` Nx project with targets: `test-config` (validates all overlay combinations using `--quiet`), `test-run` (starts full stack with local images), `test-e2e` (Playwright wiring + protocol matrix tests through Traefik), `test-full` (end-to-end: build → start → test → teardown), `stop` - **`@zitadel/compose` is explicitly excluded from `nx affected` in CI for now** — the full stack smoke test requires a Docker daemon and significant resources. The intent is to add a dedicated `compose_smoke_test` CI job in a follow-up. The targets can be run locally with `pnpm nx run @zitadel/compose:test-full`. ### Documentation - **`compose.mdx`**: Complete rewrite with a staged structure (Stage 1 Quickstart → Stage 2 Homelab → Stage 3 Beyond Compose). Documents TLS modes, profiles, secrets hardening, ExternalDomain/Port/Secure invariant, upgrades, and the path to Kubernetes - **New `requirements.mdx`**: Lists supported PostgreSQL versions (14–18), Redis (standalone), Docker Compose v2.x, and reverse proxy h2c requirements - **`reverse_proxy.mdx`**: Added intro covering h2c requirements, TLS modes table, and Login UI routing split - **`troubleshooting.mdx`**: New sections for container restarts on upgrade, FIRSTINSTANCE env vars not taking effect, and diagnosing unhealthy containers - **`caddy/index.mdx`**: Known issue and workaround for the `TE: trailers` header hang - Removed the old `apps/docs/content/self-hosting/deploy/docker-compose.yaml` embedded in the docs ### Breaking change The old `apps/docs/content/self-hosting/deploy/docker-compose.yaml` file is deleted. The getting-started docs page (`/self-hosting/deploy/compose`) now points to the new pack via a `curl | tar` download command. --- ### Checklist - [x] `deploy/compose/` smoke test passes end-to-end locally (`pnpm nx run @zitadel/compose:test-full`) - [x] Docs build passes (`pnpm nx run @zitadel/docs:build`) - [ ] Follow-up issue created to add `compose_smoke_test` CI job --------- Co-authored-by: Mridang Agarwalla <[email protected]>
1141 lines
38 KiB
TypeScript
1141 lines
38 KiB
TypeScript
// --- Type Definitions ---
|
|
|
|
export type SidebarLink = {
|
|
type: 'generated-index' | 'doc';
|
|
title?: string;
|
|
slug?: string;
|
|
id?: string;
|
|
description?: string;
|
|
};
|
|
|
|
export type SidebarItem =
|
|
| string
|
|
| {
|
|
type: 'category' | 'link' | 'doc' | 'autogenerated';
|
|
label?: string;
|
|
items?: readonly SidebarItem[];
|
|
collapsed?: boolean;
|
|
link?: SidebarLink;
|
|
href?: string;
|
|
id?: string;
|
|
dirName?: string;
|
|
icon?: any;
|
|
};
|
|
|
|
// --- Sidebar Data ---
|
|
|
|
export const guidesSidebar: readonly SidebarItem[] = [
|
|
{
|
|
type: "category",
|
|
label: "Get Started",
|
|
collapsed: false,
|
|
items: [
|
|
"guides/start/quickstart",
|
|
{
|
|
type: "category",
|
|
label: "Key Concepts",
|
|
link: {
|
|
type: "generated-index",
|
|
title: "Key Concepts",
|
|
slug: "concepts",
|
|
description:
|
|
"Learn about ZITADEL's core architecture and terminology. This section covers identity management concepts, multi-tenancy, and technical structures essential for understanding our platform.",
|
|
},
|
|
items: [
|
|
"concepts/structure/instance",
|
|
"guides/manage/console/organizations-overview",
|
|
"guides/manage/console/projects-overview",
|
|
"guides/manage/console/applications-overview",
|
|
"guides/manage/console/users-overview",
|
|
"concepts/structure/administrators",
|
|
],
|
|
},
|
|
{
|
|
type: "category",
|
|
label: "Authenticate Users",
|
|
link: {
|
|
type: "generated-index",
|
|
title: "Login users with ZITADEL",
|
|
slug: "guides/integrate/login",
|
|
description:
|
|
"Sign-in users and application with ZITADEL. In this section you will find resources on how to authenticate your users by using the hosted login via OpenID Connect and SAML. Follow our dedicated guides to build your custom login user interface, if you want to customize the login behavior further.",
|
|
},
|
|
items: [
|
|
"guides/integrate/login/login-users",
|
|
"guides/integrate/login/hosted-login",
|
|
"guides/integrate/login/oidc/logout",
|
|
],
|
|
},
|
|
{
|
|
type: "category",
|
|
label: "Example Applications",
|
|
link: {
|
|
type: "generated-index",
|
|
title: "Example Applications",
|
|
slug: "/examples/introduction",
|
|
description:
|
|
"Discover practical quickstart guides and example applications for ZITADEL. We provide step-by-step instructions for popular frameworks like React, Angular, Vue, Next.js, and more.",
|
|
},
|
|
items: [
|
|
{
|
|
type: "category",
|
|
label: "Frontend (SPA)",
|
|
link: {
|
|
type: "generated-index",
|
|
title: "Frontend (SPA) Quickstart Guides",
|
|
slug: "/examples/introduction/frontend",
|
|
description:
|
|
"Step-by-step instructions for integrating ZITADEL authentication into your frontend single-page applications. Includes guides for React, Angular, Vue, and vanilla JS.",
|
|
},
|
|
items: [
|
|
{
|
|
type: "link",
|
|
label: "Vanilla-JS",
|
|
href: "https://github.com/zitadel/zitadel-vanilla-js",
|
|
},
|
|
"examples/login/react",
|
|
"examples/login/angular",
|
|
"examples/login/vue",
|
|
],
|
|
},
|
|
{
|
|
type: "category",
|
|
label: "Mobile & Native",
|
|
link: {
|
|
type: "generated-index",
|
|
title: "Mobile & Native Quickstart Guides",
|
|
slug: "/examples/introduction/mobile",
|
|
description:
|
|
"Quickstart guides for integrating ZITADEL authentication into mobile and native applications. Learn how to secure your mobile apps with our Flutter and .NET guides.",
|
|
},
|
|
items: [
|
|
"examples/login/flutter",
|
|
],
|
|
},
|
|
{
|
|
type: "category",
|
|
label: "Full-Stack / SSR",
|
|
link: {
|
|
type: "generated-index",
|
|
title: "Full-Stack / SSR Quickstart Guides",
|
|
slug: "/examples/introduction/fullstack",
|
|
description:
|
|
"Integrate ZITADEL with your full-stack and server-side rendered (SSR) applications. Follow our guides for Next.js, B2B scenarios, and other modern web frameworks.",
|
|
},
|
|
items: [
|
|
"examples/login/nextjs",
|
|
"examples/login/nextjs-b2b",
|
|
],
|
|
},
|
|
{
|
|
type: "category",
|
|
label: "Web App (Server-Side)",
|
|
link: {
|
|
type: "generated-index",
|
|
title: "Web App (Server-Side) Quickstart Guides",
|
|
slug: "/examples/introduction/webapp",
|
|
description:
|
|
"Step-by-step guides for integrating ZITADEL into traditional server-side web applications. Learn how to secure Java Spring, PHP Symfony, Django, and Go apps.",
|
|
},
|
|
items: [
|
|
"examples/login/symfony",
|
|
"examples/login/java-spring",
|
|
"examples/login/python-django",
|
|
"examples/login/go"
|
|
],
|
|
},
|
|
{
|
|
type: "category",
|
|
label: "APIs / Backend Services",
|
|
link: {
|
|
type: "generated-index",
|
|
title: "APIs / Backend Quickstart Guides",
|
|
slug: "/examples/introduction/backend",
|
|
description:
|
|
"Learn how to secure your APIs and backend services using ZITADEL. Includes examples for Node.js, Python, Go, Java, and NestJS to implement robust authentication.",
|
|
},
|
|
items: [
|
|
"examples/secure-api/go",
|
|
"examples/secure-api/java-spring",
|
|
"examples/secure-api/python-django",
|
|
"examples/secure-api/python-flask",
|
|
"examples/secure-api/nodejs-nestjs",
|
|
"examples/secure-api/pylon",
|
|
],
|
|
},
|
|
],
|
|
},
|
|
{
|
|
type: "category",
|
|
label: "Use Cases",
|
|
link: {
|
|
type: "generated-index",
|
|
title: "Use Cases",
|
|
slug: "guides/solution-scenarios/introduction",
|
|
description:
|
|
"Customers of an SaaS Identity and access management system usually have all distinct use cases and requirements. This guide attempts to explain real-world implementations and break them down into solution scenarios which aim to help you getting started with ZITADEL.",
|
|
},
|
|
items: [
|
|
"guides/solution-scenarios/b2b",
|
|
"guides/solution-scenarios/configurations",
|
|
"guides/solution-scenarios/saas",
|
|
"guides/solution-scenarios/b2c",
|
|
"guides/solution-scenarios/frontend-calling-backend-API",
|
|
{
|
|
type: "category",
|
|
label: "Machine-to-Machine (M2M)",
|
|
items: [
|
|
"guides/integrate/service-accounts/authenticate-service-accounts",
|
|
"guides/integrate/service-accounts/private-key-jwt",
|
|
"guides/integrate/service-accounts/client-credentials",
|
|
"guides/integrate/service-accounts/personal-access-token",
|
|
],
|
|
},
|
|
],
|
|
},
|
|
{
|
|
type: "category",
|
|
label: "Onboard Customers and Users",
|
|
link: {
|
|
type: "generated-index",
|
|
title: "Onboard Customers and Users",
|
|
slug: "/guides/integrate/onboarding",
|
|
description:
|
|
"When building your own application, one of the first questions you have to face, is 'How do my customers onboard to my application?'\n" +
|
|
"These guides will explain the built-in solution for onboarding new tenants, customers, and users and how you can handle more advanced onboarding use cases. ",
|
|
},
|
|
collapsed: true,
|
|
items: [
|
|
"guides/integrate/onboarding/b2b",
|
|
"guides/integrate/onboarding/end-users",
|
|
],
|
|
},
|
|
{
|
|
type: "category",
|
|
label: "Branding & Customization",
|
|
items: [
|
|
"guides/manage/customize/branding",
|
|
"guides/manage/customize/texts",
|
|
"guides/manage/customize/restrictions",
|
|
"guides/manage/customize/user-metadata",
|
|
"guides/manage/customize/notification-providers",
|
|
"concepts/features/custom-domain",
|
|
]
|
|
},
|
|
],
|
|
},
|
|
{
|
|
type: "category",
|
|
label: "Integrate & Authenticate",
|
|
link: {
|
|
type: "generated-index",
|
|
title: "Integrate",
|
|
slug: "guides/integrate",
|
|
description:
|
|
"Integrate your users and application with ZITADEL. In this section you will find resource on how to authenticate your users, configure external identity providers, access the ZITADEL APIs to manage resources, and integrate with third party services and tools.",
|
|
},
|
|
collapsed: true,
|
|
items: [
|
|
{
|
|
type: "category",
|
|
label: "OIDC & OAuth Flows",
|
|
link: {
|
|
type: "generated-index",
|
|
title: "Authenticate users with OpenID Connect (OIDC)",
|
|
slug: "guides/integrate/login/oidc",
|
|
description:
|
|
"Comprehensive guide to user authentication in ZITADEL using OpenID Connect (OIDC), including recommended flows and session management.",
|
|
},
|
|
items: [
|
|
"guides/integrate/login/oidc/oauth-recommended-flows",
|
|
"guides/integrate/login/oidc/login-users",
|
|
"guides/integrate/login/oidc/device-authorization",
|
|
"apis/openidoauth/endpoints",
|
|
"apis/openidoauth/authn-methods",
|
|
"apis/openidoauth/scopes",
|
|
"apis/openidoauth/claims",
|
|
"apis/openidoauth/grant-types",
|
|
"apis/openidoauth/authrequest",
|
|
"guides/integrate/login/oidc/webkeys",
|
|
"guides/integrate/token-exchange",
|
|
],
|
|
},
|
|
{
|
|
type: "category",
|
|
label: "SAML",
|
|
items: [
|
|
"guides/integrate/login/saml",
|
|
"apis/saml/endpoints",
|
|
],
|
|
},
|
|
{
|
|
type: "category",
|
|
label: "API Access",
|
|
items: [
|
|
"guides/integrate/zitadel-apis/access-zitadel-apis",
|
|
"guides/integrate/zitadel-apis/access-zitadel-system-api",
|
|
"guides/integrate/zitadel-apis/event-api",
|
|
"guides/integrate/zitadel-apis/example-zitadel-api-with-go",
|
|
"guides/integrate/zitadel-apis/example-zitadel-api-with-dot-net",
|
|
],
|
|
},
|
|
{
|
|
type: "category",
|
|
label: "SDKs",
|
|
items: [
|
|
"sdk-examples/introduction",
|
|
{
|
|
type: "category",
|
|
label: "Frontend (SPA)",
|
|
items: [
|
|
"sdk-examples/react",
|
|
"sdk-examples/angular",
|
|
"sdk-examples/vue",
|
|
],
|
|
},
|
|
{
|
|
type: "category",
|
|
label: "Mobile & Native",
|
|
items: [
|
|
{
|
|
type: "link",
|
|
label: "Dart / Flutter",
|
|
href: "https://github.com/smartive/zitadel-dart",
|
|
},
|
|
{
|
|
type: "link",
|
|
label: ".NET (MAUI/Xamarin)",
|
|
href: "https://github.com/smartive/zitadel-net",
|
|
},
|
|
],
|
|
},
|
|
{
|
|
type: "category",
|
|
label: "Full-Stack / SSR",
|
|
items: [
|
|
"sdk-examples/nextjs",
|
|
"sdk-examples/nuxtjs",
|
|
"sdk-examples/sveltekit",
|
|
"sdk-examples/qwik",
|
|
"sdk-examples/solidstart",
|
|
"sdk-examples/astro",
|
|
{
|
|
type: "link",
|
|
label: "NextAuth",
|
|
href: "https://next-auth.js.org/providers/zitadel",
|
|
},
|
|
],
|
|
},
|
|
{
|
|
type: "category",
|
|
label: "Backend & API",
|
|
items: [
|
|
{
|
|
type: "category",
|
|
label: "Node.js",
|
|
items: [
|
|
"sdk-examples/client-libraries/node",
|
|
"sdk-examples/expressjs",
|
|
"sdk-examples/fastify",
|
|
"sdk-examples/hono",
|
|
"sdk-examples/nestjs",
|
|
{
|
|
type: "link",
|
|
label: "Passport.js",
|
|
href: "https://github.com/buehler/node-passport-zitadel",
|
|
},
|
|
{
|
|
type: "link",
|
|
label: "Node.js (Community)",
|
|
href: "https://www.npmjs.com/package/@zitadel/node",
|
|
},
|
|
],
|
|
},
|
|
{
|
|
type: "category",
|
|
label: "Python",
|
|
items: [
|
|
"sdk-examples/client-libraries/python",
|
|
"sdk-examples/flask",
|
|
"sdk-examples/django",
|
|
"sdk-examples/fastapi",
|
|
],
|
|
},
|
|
{
|
|
type: "category",
|
|
label: "Go",
|
|
items: ["sdk-examples/go"],
|
|
},
|
|
{
|
|
type: "category",
|
|
label: "Java",
|
|
items: [
|
|
"sdk-examples/java",
|
|
"sdk-examples/spring",
|
|
"sdk-examples/client-libraries/java",
|
|
],
|
|
},
|
|
{
|
|
type: "category",
|
|
label: "PHP",
|
|
items: [
|
|
"sdk-examples/symfony",
|
|
"sdk-examples/laravel",
|
|
"sdk-examples/client-libraries/php",
|
|
],
|
|
},
|
|
{
|
|
type: "category",
|
|
label: ".NET",
|
|
items: ["sdk-examples/dotnet"],
|
|
},
|
|
{
|
|
type: "category",
|
|
label: "Other Languages",
|
|
items: [
|
|
"sdk-examples/client-libraries/ruby",
|
|
{
|
|
type: "link",
|
|
label: "Elixir",
|
|
href: "https://github.com/maennchen/zitadel_api",
|
|
},
|
|
{
|
|
type: "link",
|
|
label: "Rust",
|
|
href: "https://github.com/smartive/zitadel-rust",
|
|
},
|
|
{
|
|
type: "link",
|
|
label: "Pylon",
|
|
href: "https://github.com/getcronit/pylon",
|
|
},
|
|
],
|
|
},
|
|
],
|
|
},
|
|
],
|
|
},
|
|
{
|
|
type: "category",
|
|
label: "SCIM",
|
|
link: {
|
|
type: "doc",
|
|
id: "guides/manage/user/scim2",
|
|
},
|
|
items: ["guides/integrate/scim-okta-guide"]
|
|
},
|
|
{
|
|
type: "category",
|
|
label: "Token Introspection",
|
|
link: {
|
|
type: "doc",
|
|
id: "guides/integrate/token-introspection",
|
|
},
|
|
items: [
|
|
"guides/integrate/token-introspection/basic-auth",
|
|
"guides/integrate/token-introspection/private-key-jwt",
|
|
]
|
|
},
|
|
"guides/integrate/back-channel-logout",
|
|
{
|
|
type: "category",
|
|
label: "External Integrations",
|
|
items: [
|
|
{
|
|
type: "category",
|
|
label: "Services",
|
|
link: {
|
|
type: "generated-index",
|
|
title: "Integrate ZITADEL with your Favorite Services",
|
|
slug: "/guides/integrate/services",
|
|
description:
|
|
"Step-by-step guides for integrating ZITADEL with popular services and tools including Google Workspace, AWS, Atlassian, Cloudflare, GitLab, and many other software solutions.",
|
|
},
|
|
items: [
|
|
"guides/integrate/services/google-workspace",
|
|
"guides/integrate/services/aws-saml",
|
|
"guides/integrate/services/atlassian-saml",
|
|
"guides/integrate/services/pingidentity-saml",
|
|
"guides/integrate/services/google-cloud",
|
|
"guides/integrate/services/cloudflare-oidc",
|
|
"guides/integrate/services/gitlab-saml",
|
|
"guides/integrate/services/auth0-saml",
|
|
"guides/integrate/services/auth0-oidc",
|
|
"guides/integrate/services/gitlab-self-hosted",
|
|
{
|
|
type: "link",
|
|
label: "Bold BI",
|
|
href: "https://support.boldbi.com/kb/article/13708/how-to-configure-zitadel-oauth-login-in-bold-bi",
|
|
},
|
|
{
|
|
type: "link",
|
|
label: "Cloudflare Workers",
|
|
href: "https://zitadel.com/blog/increase-spa-security-with-cloudflare-workers",
|
|
},
|
|
{
|
|
type: "link",
|
|
label: "Firezone",
|
|
href: "https://www.firezone.dev/docs/authenticate/oidc/zitadel",
|
|
},
|
|
{
|
|
type: "link",
|
|
label: "Netbird",
|
|
href: "https://docs.netbird.io/selfhosted/identity-providers",
|
|
},
|
|
{
|
|
type: "link",
|
|
label: "Nextcloud",
|
|
href: "https://zitadel.com/blog/zitadel-as-sso-provider-for-selfhosting",
|
|
},
|
|
{
|
|
type: "link",
|
|
label: "Psono",
|
|
href: "https://doc.psono.com/admin/configuration/oidc-zitadel.html",
|
|
},
|
|
{
|
|
type: "link",
|
|
label: "Zoho Desk",
|
|
href: "https://help.zoho.com/portal/en/kb/desk/user-management-and-security/data-security/articles/setting-up-saml-single-signon-for-help-center#Zitadel_IDP",
|
|
},
|
|
],
|
|
},
|
|
{
|
|
type: "category",
|
|
label: "Tools",
|
|
items: [
|
|
{
|
|
type: "link",
|
|
label: "Argo CD",
|
|
href: "https://argo-cd.readthedocs.io/en/latest/operator-manual/user-management/zitadel/",
|
|
},
|
|
"guides/integrate/tools/apache2",
|
|
"guides/integrate/authenticated-mongodb-charts",
|
|
"examples/identity-proxy/oauth2-proxy",
|
|
],
|
|
},
|
|
],
|
|
},
|
|
{
|
|
type: "category",
|
|
label: "Build your own Login UI",
|
|
link: {
|
|
type: "generated-index",
|
|
title: "Build your own Login UI",
|
|
slug: "/guides/integrate/login-ui",
|
|
description:
|
|
"Create a completely customized login experience using the ZITADEL Session and OIDC APIs. Learn how to handle username/password, MFA, passkeys, and external identity providers.",
|
|
},
|
|
collapsed: true,
|
|
items: [
|
|
"guides/integrate/login-ui/session-validation",
|
|
"guides/integrate/login-ui/username-password",
|
|
"guides/integrate/login-ui/external-login",
|
|
"guides/integrate/login-ui/passkey",
|
|
"guides/integrate/login-ui/mfa",
|
|
"guides/integrate/login-ui/select-account",
|
|
"guides/integrate/login-ui/password-reset",
|
|
"guides/integrate/login-ui/logout",
|
|
"guides/integrate/login-ui/oidc-standard",
|
|
"guides/integrate/login-ui/saml-standard",
|
|
"guides/integrate/login-ui/device-auth",
|
|
"guides/integrate/login-ui/login-app",
|
|
],
|
|
},
|
|
{
|
|
type: "category",
|
|
label: "Actions",
|
|
items: [
|
|
{
|
|
type: "category",
|
|
label: "V1",
|
|
link: {
|
|
type: "doc",
|
|
id: "concepts/features/actions",
|
|
},
|
|
items: [
|
|
"guides/manage/console/actions-overview",
|
|
"apis/actions/modules",
|
|
"apis/actions/code-examples",
|
|
"apis/actions/internal-authentication",
|
|
"apis/actions/external-authentication",
|
|
"apis/actions/complement-token",
|
|
"apis/actions/customize-samlresponse",
|
|
"apis/actions/objects",
|
|
"guides/manage/customize/behavior",
|
|
]
|
|
},
|
|
{
|
|
type: "category",
|
|
label: "V2",
|
|
link: {
|
|
type: "doc",
|
|
id: "concepts/features/actions_v2",
|
|
},
|
|
items: [
|
|
"guides/integrate/actions/usage",
|
|
"guides/integrate/actions/testing-request",
|
|
"guides/integrate/actions/testing-request-manipulation",
|
|
"guides/integrate/actions/testing-response",
|
|
"guides/integrate/actions/testing-response-manipulation",
|
|
"guides/integrate/actions/testing-function",
|
|
"guides/integrate/actions/testing-function-manipulation",
|
|
"guides/integrate/actions/testing-event",
|
|
"guides/integrate/actions/testing-request-signature",
|
|
"guides/integrate/actions/migrate-from-v1",
|
|
"guides/integrate/actions/webhook-site-setup",
|
|
],
|
|
},
|
|
],
|
|
},
|
|
{
|
|
type: "category",
|
|
label: "Migrate",
|
|
collapsed: true,
|
|
items: [
|
|
"guides/migrate/introduction",
|
|
"guides/migrate/users",
|
|
"guides/migrate/sources/zitadel",
|
|
"guides/migrate/sources/auth0",
|
|
"guides/migrate/sources/keycloak",
|
|
],
|
|
},
|
|
],
|
|
},
|
|
{
|
|
type: "category",
|
|
label: "Configure Identity & Policies",
|
|
collapsed: true,
|
|
items: [
|
|
"guides/manage/user/reg-create-user",
|
|
"guides/manage/terraform-provider",
|
|
{
|
|
type: "category",
|
|
label: "Identity Providers",
|
|
link: {
|
|
type: "doc",
|
|
id: "guides/integrate/identity-providers/introduction",
|
|
},
|
|
items: [
|
|
{
|
|
type: "category",
|
|
label: "Social Logins",
|
|
collapsed: true,
|
|
items: [
|
|
"guides/integrate/identity-providers/google",
|
|
"guides/integrate/identity-providers/apple",
|
|
"guides/integrate/identity-providers/github",
|
|
"guides/integrate/identity-providers/gitlab",
|
|
"guides/integrate/identity-providers/linkedin-oauth",
|
|
],
|
|
},
|
|
{
|
|
type: "category",
|
|
label: "Enterprise (SAML & OIDC)",
|
|
collapsed: true,
|
|
items: [
|
|
"guides/integrate/identity-providers/azure-ad-oidc",
|
|
"guides/integrate/identity-providers/azure-ad-saml",
|
|
"guides/integrate/identity-providers/okta-oidc",
|
|
"guides/integrate/identity-providers/okta_saml",
|
|
"guides/integrate/identity-providers/keycloak",
|
|
"guides/integrate/identity-providers/onelogin-saml",
|
|
"guides/integrate/identity-providers/pingfederate-saml",
|
|
],
|
|
},
|
|
{
|
|
type: "category",
|
|
label: "Legacy & Directory (LDAP)",
|
|
items: [
|
|
"guides/integrate/identity-providers/ldap",
|
|
"guides/integrate/identity-providers/openldap",
|
|
],
|
|
},
|
|
{
|
|
type: "category",
|
|
label: "Custom & Generic",
|
|
items: [
|
|
"guides/integrate/identity-providers/generic-oidc",
|
|
"guides/integrate/identity-providers/jwt_idp",
|
|
"guides/integrate/identity-providers/mocksaml",
|
|
],
|
|
},
|
|
{
|
|
type: "category",
|
|
label: "Guides",
|
|
items: [
|
|
"guides/integrate/identity-providers/migrate",
|
|
"guides/integrate/identity-providers/additional-information",
|
|
]
|
|
}
|
|
],
|
|
},
|
|
{
|
|
type: "category",
|
|
label: "Policies",
|
|
items: [
|
|
"guides/manage/console/default-settings",
|
|
"concepts/structure/policies",
|
|
],
|
|
},
|
|
{
|
|
type: "category",
|
|
label: "Roles & Permissions",
|
|
items: [
|
|
"guides/manage/console/roles",
|
|
"guides/integrate/retrieve-user-roles",
|
|
"concepts/structure/granted_projects",
|
|
"guides/manage/console/administrators",
|
|
],
|
|
},
|
|
{
|
|
type: "category",
|
|
label: "Compliance & Security",
|
|
items: [
|
|
"concepts/features/audit-trail",
|
|
"guides/integrate/external-audit-log",
|
|
],
|
|
},
|
|
],
|
|
},
|
|
{
|
|
type: "category",
|
|
label: "Test & Debug",
|
|
collapsed: true,
|
|
items: [
|
|
{
|
|
type: "link",
|
|
label: "OIDC Playground",
|
|
href: "https://zitadel.com/playgrounds/oidc",
|
|
},
|
|
],
|
|
},
|
|
{
|
|
type: "category",
|
|
label: "Deploy & Operate",
|
|
collapsed: true,
|
|
items: [
|
|
"guides/manage/console/console-overview",
|
|
"guides/manage/cloud/egress",
|
|
{
|
|
type: "category",
|
|
label: "Customer Portal",
|
|
collapsed: true,
|
|
link: {
|
|
type: "generated-index",
|
|
title: "Overview",
|
|
slug: "guides/manage/cloud/overview",
|
|
description:
|
|
"Our customer portal is used to manage all your ZITADEL instances. You can also manage your subscriptions, billing, newsletters and support requests.",
|
|
},
|
|
items: [
|
|
"guides/manage/cloud/start",
|
|
"guides/manage/cloud/instances",
|
|
"guides/manage/cloud/settings",
|
|
"guides/manage/cloud/billing",
|
|
"guides/manage/cloud/users",
|
|
],
|
|
},
|
|
{
|
|
type: "category",
|
|
label: "Self-Hosted",
|
|
items: [
|
|
"self-hosting/deploy/overview",
|
|
"self-hosting/deploy/linux",
|
|
"self-hosting/deploy/macos",
|
|
"self-hosting/deploy/devcontainer",
|
|
"self-hosting/deploy/compose",
|
|
{
|
|
type: "category",
|
|
label: "Kubernetes",
|
|
collapsed: true,
|
|
link: {
|
|
type: "doc",
|
|
id: "self-hosting/deploy/kubernetes/index",
|
|
},
|
|
items: [
|
|
"self-hosting/deploy/kubernetes/installation",
|
|
"self-hosting/deploy/kubernetes/configuration",
|
|
"self-hosting/deploy/kubernetes/ingress",
|
|
"self-hosting/deploy/kubernetes/database",
|
|
"self-hosting/deploy/kubernetes/caching",
|
|
"self-hosting/deploy/kubernetes/observability",
|
|
"self-hosting/deploy/kubernetes/operations",
|
|
"self-hosting/deploy/kubernetes/uninstalling",
|
|
],
|
|
},
|
|
{
|
|
type: "category",
|
|
label: "Manage",
|
|
collapsed: true,
|
|
items: [
|
|
{
|
|
type: "category",
|
|
label: "Production & Operations",
|
|
collapsed: false,
|
|
items: [
|
|
"self-hosting/manage/requirements",
|
|
"self-hosting/manage/production",
|
|
"self-hosting/manage/productionchecklist",
|
|
"self-hosting/manage/usage_control",
|
|
],
|
|
},
|
|
{
|
|
type: "category",
|
|
label: "Configuration",
|
|
collapsed: true,
|
|
items: [
|
|
"self-hosting/manage/configure/configure",
|
|
"self-hosting/manage/custom-domain",
|
|
"self-hosting/manage/tls_modes",
|
|
"self-hosting/manage/http2",
|
|
"self-hosting/manage/login-client",
|
|
],
|
|
},
|
|
{
|
|
type: "category",
|
|
collapsed: true,
|
|
label: "Reverse Proxy",
|
|
link: {
|
|
type: "doc",
|
|
id: "self-hosting/manage/reverseproxy/reverse_proxy",
|
|
},
|
|
items: [
|
|
"self-hosting/manage/reverseproxy/traefik/traefik",
|
|
"self-hosting/manage/reverseproxy/nginx/nginx",
|
|
"self-hosting/manage/reverseproxy/caddy/caddy",
|
|
"self-hosting/manage/reverseproxy/httpd/httpd",
|
|
"self-hosting/manage/reverseproxy/cloudflare/cloudflare",
|
|
"self-hosting/manage/reverseproxy/cloudflare_tunnel/cloudflare_tunnel",
|
|
"self-hosting/manage/reverseproxy/zitadel_cloud/zitadel_cloud",
|
|
],
|
|
},
|
|
{
|
|
type: "category",
|
|
label: "Observability",
|
|
collapsed: true,
|
|
items: [
|
|
"self-hosting/manage/service_ping",
|
|
{
|
|
type: "category",
|
|
label: "Metrics",
|
|
collapsed: true,
|
|
link: {
|
|
type: "doc",
|
|
id: "self-hosting/manage/metrics/overview",
|
|
},
|
|
items: ["self-hosting/manage/metrics/prometheus"],
|
|
},
|
|
],
|
|
},
|
|
{
|
|
type: "category",
|
|
label: "Tools",
|
|
collapsed: true,
|
|
items: [
|
|
{
|
|
type: "category",
|
|
label: "Command Line Interface",
|
|
collapsed: true,
|
|
link: {
|
|
type: "doc",
|
|
id: "self-hosting/manage/cli/overview",
|
|
},
|
|
items: ["self-hosting/manage/cli/mirror"],
|
|
},
|
|
],
|
|
},
|
|
],
|
|
},
|
|
"self-hosting/deploy/troubleshooting/troubleshooting",
|
|
],
|
|
},
|
|
{
|
|
type: "category",
|
|
label: "Scaling & Performance",
|
|
items: [
|
|
"self-hosting/manage/updating_scaling",
|
|
"self-hosting/manage/database/database",
|
|
"self-hosting/manage/cache",
|
|
],
|
|
},
|
|
|
|
"guides/manage/production-checklist",
|
|
],
|
|
},
|
|
{
|
|
type: "category",
|
|
label: "Architecture & Concepts",
|
|
collapsed: true,
|
|
items: [
|
|
{
|
|
type: "category",
|
|
label: "System Architecture",
|
|
items: [
|
|
"concepts/architecture/solution",
|
|
"concepts/architecture/software",
|
|
"concepts/architecture/secrets",
|
|
],
|
|
},
|
|
"concepts/principles",
|
|
{
|
|
type: "category",
|
|
label: "Advanced Topics",
|
|
items: [
|
|
{
|
|
type: "category",
|
|
label: "Event Store",
|
|
items: [
|
|
"concepts/eventstore/overview",
|
|
"concepts/eventstore/implementation",
|
|
]
|
|
},
|
|
"concepts/features/selfservice",
|
|
"concepts/features/account-linking",
|
|
"concepts/features/external-user-grant",
|
|
"concepts/features/identity-brokering",
|
|
"concepts/features/passkeys",
|
|
"concepts/knowledge/opaque-tokens",
|
|
"guides/solution-scenarios/domain-discovery",
|
|
"guides/solution-scenarios/restrict-console",
|
|
],
|
|
},
|
|
],
|
|
},
|
|
{
|
|
type: "category",
|
|
label: "Product, Releases & Support",
|
|
collapsed: true,
|
|
items: [
|
|
{
|
|
type: "category",
|
|
label: "Product Features",
|
|
items: [
|
|
"product/roadmap",
|
|
],
|
|
},
|
|
{
|
|
type: "category",
|
|
label: "Releases",
|
|
items: [
|
|
{
|
|
type: "link",
|
|
label: "Changelog",
|
|
href: "https://zitadel.com/changelog",
|
|
},
|
|
"product/release-cycle",
|
|
],
|
|
},
|
|
{
|
|
type: "category",
|
|
label: "Support Resources",
|
|
items: [
|
|
"support/troubleshooting",
|
|
"support/technical_advisory",
|
|
{
|
|
type: "link",
|
|
label: "Support States",
|
|
href: "https://help.zitadel.com/zitadel-support-states",
|
|
},
|
|
{
|
|
type: "link",
|
|
label: "Zitadel Release Cycle",
|
|
href: "https://help.zitadel.com/zitadel-software-release-cycle",
|
|
},
|
|
{
|
|
type: "link",
|
|
label: "Knowledge Base",
|
|
href: "https://help.zitadel.com",
|
|
}
|
|
],
|
|
},
|
|
{
|
|
type: "link",
|
|
label: "Pricing",
|
|
href: "https://zitadel.com/pricing",
|
|
},
|
|
{
|
|
type: "link",
|
|
label: "Contact Us",
|
|
href: "https://zitadel.com/contact",
|
|
},
|
|
"guides/manage/cloud/support",
|
|
],
|
|
},
|
|
] as const;
|
|
|
|
export const apisSidebar: readonly SidebarItem[] = [
|
|
"apis/introduction",
|
|
{
|
|
type: "category",
|
|
label: "Core Resources",
|
|
items: [
|
|
{
|
|
type: "category",
|
|
label: "V2",
|
|
items: [
|
|
{ type: "category", label: "User", items: ["reference/api/user"] },
|
|
{ type: "category", label: "Session", items: ["reference/api/session"] },
|
|
{ type: "category", label: "OIDC", items: ["reference/api/oidc"] },
|
|
{ type: "category", label: "SAML", items: ["reference/api/saml"] },
|
|
{ type: "category", label: "Settings", items: ["reference/api/settings"] },
|
|
{ type: "category", label: "Feature", items: ["reference/api/feature"] },
|
|
{ type: "category", label: "Organization", items: ["reference/api/org"] },
|
|
{ type: "category", label: "Identity Provider", items: ["reference/api/idp"] },
|
|
{ type: "category", label: "Web Key", items: ["reference/api/webkey"] },
|
|
{ type: "category", label: "Action", items: ["reference/api/action"] },
|
|
{ type: "category", label: "Instance", items: ["reference/api/instance"] },
|
|
{ type: "category", label: "Project", items: ["reference/api/project"] },
|
|
{ type: "category", label: "Application", items: ["reference/api/application"] },
|
|
{ type: "category", label: "Authorizations", items: ["reference/api/authorization"] },
|
|
{ type: "category", label: "Internal Permissions", items: ["reference/api/internal_permission"] },
|
|
],
|
|
},
|
|
{
|
|
type: "category",
|
|
label: "V1",
|
|
items: [
|
|
{ type: "category", label: "Authenticated User", items: ["reference/api/auth"] },
|
|
{ type: "category", label: "Organization Objects", items: ["reference/api/management"] },
|
|
{ type: "category", label: "Instance Objects", items: ["reference/api/admin"] },
|
|
{ type: "category", label: "Instance Lifecycle", items: ["reference/api/system"] },
|
|
"apis/migration_v1_to_v2"
|
|
],
|
|
},
|
|
{
|
|
type: "category",
|
|
label: "Assets",
|
|
items: ["apis/assets/assets"],
|
|
},
|
|
],
|
|
},
|
|
{
|
|
type: "category",
|
|
label: "Observability",
|
|
items: [
|
|
"apis/observability/metrics",
|
|
"apis/observability/health",
|
|
],
|
|
},
|
|
{
|
|
type: "category",
|
|
label: "Provision Users",
|
|
items: ["apis/scim2"],
|
|
},
|
|
{
|
|
type: "doc",
|
|
label: "gRPC Status Codes",
|
|
id: "apis/statuscodes",
|
|
},
|
|
{
|
|
type: "link",
|
|
label: "Rate Limits (Cloud)",
|
|
href: "/legal/policies/rate-limit-policy",
|
|
},
|
|
{
|
|
type: "category",
|
|
label: "Benchmarks",
|
|
items: [
|
|
{
|
|
type: "category",
|
|
label: "v2.65.0",
|
|
items: ["apis/benchmarks/v2.65.0/machine_jwt_profile_grant"],
|
|
},
|
|
{
|
|
type: "category",
|
|
label: "v2.66.0",
|
|
items: ["apis/benchmarks/v2.66.0/machine_jwt_profile_grant"],
|
|
},
|
|
{
|
|
type: "category",
|
|
label: "v2.70.0",
|
|
items: [
|
|
"apis/benchmarks/v2.70.0/machine_jwt_profile_grant",
|
|
"apis/benchmarks/v2.70.0/oidc_session",
|
|
],
|
|
},
|
|
{
|
|
type: "category",
|
|
label: "v4",
|
|
items: [
|
|
"apis/benchmarks/v4/add_session",
|
|
"apis/benchmarks/v4/human_password_login",
|
|
"apis/benchmarks/v4/introspect",
|
|
"apis/benchmarks/v4/machine_client_credentials_login",
|
|
"apis/benchmarks/v4/machine_jwt_profile_grant",
|
|
"apis/benchmarks/v4/machine_pat_login",
|
|
"apis/benchmarks/v4/manipulate_user",
|
|
"apis/benchmarks/v4/oidc_session",
|
|
"apis/benchmarks/v4/otp_session",
|
|
"apis/benchmarks/v4/password_session",
|
|
"apis/benchmarks/v4/user_info",
|
|
],
|
|
},
|
|
],
|
|
},
|
|
] as const;
|
|
|
|
export const legalSidebar: readonly SidebarItem[] = [
|
|
{
|
|
type: "category",
|
|
label: "Legal Agreements",
|
|
collapsed: true, // This will mean 'defaultOpen: false' in Fumadocs
|
|
link: {
|
|
type: "generated-index",
|
|
title: "Legal Agreements",
|
|
slug: "legal",
|
|
description:
|
|
"This section contains important agreements, policies and appendices relevant for users of our websites and services. All documents will be provided in English language.",
|
|
},
|
|
items: [
|
|
"legal/terms-of-service",
|
|
"legal/data-processing-agreement",
|
|
"legal/subprocessors",
|
|
"legal/annex-support-services",
|
|
{
|
|
type: "category",
|
|
label: "Service Description",
|
|
collapsed: true,
|
|
link: {
|
|
type: "generated-index",
|
|
title: "Service description",
|
|
slug: "/legal/service-description",
|
|
description:
|
|
"Detailed description of services, service levels (SLA), and support commitments for ZITADEL Cloud and Enterprise subscriptions to ensure transparency and reliability.",
|
|
},
|
|
items: [
|
|
{
|
|
type: "autogenerated",
|
|
dirName: "legal/service-description",
|
|
},
|
|
{
|
|
type: "link",
|
|
label: "Billing",
|
|
href: "https://help.zitadel.com/pricing-and-billing-of-zitadel-services"
|
|
}
|
|
],
|
|
},
|
|
{
|
|
type: "category",
|
|
label: "Policies",
|
|
collapsed: true,
|
|
link: {
|
|
type: "generated-index",
|
|
title: "Policies",
|
|
slug: "/legal/policies",
|
|
description:
|
|
"Find all policy documents and guidelines for ZITADEL services, including our privacy policy, acceptable use policy, and other legal frameworks that govern our platform.",
|
|
},
|
|
items: [
|
|
{
|
|
type: "autogenerated",
|
|
dirName: "legal/policies",
|
|
},
|
|
],
|
|
},
|
|
],
|
|
},
|
|
] as const;
|
|
|
|
// Self Hosting Sidebar (Exporting empty array if empty, or move logic here if needed)
|
|
export const selfHostingSidebar: readonly SidebarItem[] = [];
|