Open-source identity platform with native B2B multi-tenancy, Passkeys, event-sourced audit trails, and typed gRPC and REST APIs to replace Auth0.
Swiss engineering firm CAOS AG created Zitadel in 2020 because existing identity platforms either required heavy runtimes or locked multi-tenant application data into proprietary cloud vendors. The founders built the system around a single Go binary and an event-sourced audit log to give software teams authentication they could run on their own infrastructure. Today, that origin gives developers full data ownership, zero-downtime updates, and European data sovereignty.
Auth0 structures integration around REST APIs, specialized runtime sandboxes, and commercial tiers where SAML federation and identity brokering carry separate add-on fees. Zitadel approaches integration from an API-first stance, exposing typed gRPC, connectRPC, and REST interfaces across every resource. Instead of treating audit trails as secondary log exports, Zitadel writes every mutation into an immutable event stream, allowing engineering teams to subscribe to lifecycle events or stream authentication activity directly into external SIEM pipelines.
Where Auth0 limits multi-tenancy unless teams purchase enterprise plans or juggle isolated tenant accounts, Zitadel includes an organization and project hierarchy out of the box. Business customers can self-service integrate corporate SAML 2.0 or OpenID Connect identity providers and map roles through project grants without per-connection fees. Switching from Auth0 requires operational ownership: instead of relying on a managed cloud dashboard, DevOps engineers maintain a PostgreSQL cluster and translate custom authentication scripts into Zitadel webhook actions and token enrichment hooks.
Is Zitadel free for commercial use? Yes. Zitadel is distributed as open source with no paywalls on core identity features, though self-hosting requires provisioning your own PostgreSQL infrastructure.
Zitadel vs Auth0 — which is better for B2B SaaS? Zitadel is better for teams wanting native multi-tenancy, Passkeys, and self-service SAML brokering without per-connection fees, whereas Auth0 fits organizations prioritizing a fully managed service with minimal infrastructure overhead.
Can I run Zitadel on Kubernetes with PostgreSQL? Yes. Zitadel deploys as a stateless container using Helm or container images and connects to any standard PostgreSQL 14+ database cluster.
Zitadel is an excellent choice for engineering teams that need deep multi-tenancy, typed gRPC integrations, and self-hosted data ownership, though organizations without the staff to manage PostgreSQL infrastructure will find commercial clouds easier to operate. With active maintenance reflected in updates through September 2026 and an AGPL-3.0 codebase that protects community access while permitting internal commercial deployment, it offers an exceptionally capable foundation for modern application identity.
We started this exact setup from scratch in a clean Linux machine on Nov 1, 2026 and checked it through Zitadel's own API: every check passed. Recipes are re-checked regularly and removed if they stop working.
mkdir -p zitadel && cd zitadel
curl -fsSL https://open-source.store/tools/zitadel/compose.yml -o compose.ymlcat > .env <<EOF
ZITADEL_MASTERKEY=$(openssl rand -hex 16)
LOGIN_SESSION_COOKIE_SECRET=$(openssl rand -base64 32)
POSTGRES_PASSWORD=$(openssl rand -hex 12)
ZITADEL_FIRSTINSTANCE_ORG_HUMAN_PASSWORD=$(openssl rand -hex 12)
ZITADEL_DOMAIN=127.0.0.1
ZITADEL_EXTERNALPORT=8080
ZITADEL_EXTERNALSECURE=false
ZITADEL_PUBLIC_SCHEME=http
EOFZITADEL_MASTERKEY — 32-character master key used for database encryption. Generated above; keep it secret.LOGIN_SESSION_COOKIE_SECRET — Secret key used to sign the Login UI session cookie. Generated above; keep it secret.POSTGRES_PASSWORD — Password for the PostgreSQL database user. Generated above; keep it secret.ZITADEL_FIRSTINSTANCE_ORG_HUMAN_PASSWORD — Initial password for the default Zitadel administrator user. Generated above; keep it secret.ZITADEL_DOMAIN — Domain or IP address where Zitadel is accessed; set to your public domain for production.ZITADEL_EXTERNALPORT — External port where Zitadel is accessed (e.g. 443 behind an HTTPS reverse proxy).ZITADEL_EXTERNALSECURE — Whether Zitadel is accessed over HTTPS (set to true behind an HTTPS reverse proxy).ZITADEL_PUBLIC_SCHEME — Public URL scheme used to access Zitadel (http or https).docker compose up -dservices:
proxy:
image: traefik:v3.7.7
restart: unless-stopped
command:
- --providers.file.filename=/etc/traefik/dynamic.yml
- --entrypoints.web.address=:80
- --log.level=INFO
- --accesslog=true
ports:
- "8080:80"
configs:
- source: traefik_dynamic
target: /etc/traefik/dynamic.yml
depends_on:
zitadel-api:
condition: service_healthy
zitadel-login:
condition: service_healthy
zitadel-api:
image: ghcr.io/zitadel/zitadel:v4.20.0
restart: unless-stopped
user: "0"
command: start-from-init --masterkey "${ZITADEL_MASTERKEY}"
environment:
ZITADEL_PORT: "8080"
ZITADEL_EXTERNALDOMAIN: "${ZITADEL_DOMAIN}"
ZITADEL_EXTERNALPORT: "${ZITADEL_EXTERNALPORT}"
ZITADEL_EXTERNALSECURE: "${ZITADEL_EXTERNALSECURE}"
ZITADEL_TLS_ENABLED: "false"
ZITADEL_DATABASE_POSTGRES_DSN: "postgresql://postgres:${POSTGRES_PASSWORD}@postgres:5432/zitadel?sslmode=disable"
ZITADEL_FIRSTINSTANCE_ORG_HUMAN_PASSWORD: "${ZITADEL_FIRSTINSTANCE_ORG_HUMAN_PASSWORD}"
ZITADEL_FIRSTINSTANCE_ORG_HUMAN_PASSWORDCHANGEREQUIRED: "false"
ZITADEL_FIRSTINSTANCE_LOGINCLIENTPATPATH: "/zitadel/bootstrap/login-client.pat"
ZITADEL_FIRSTINSTANCE_ORG_LOGINCLIENT_MACHINE_USERNAME: "login-client"
ZITADEL_FIRSTINSTANCE_ORG_LOGINCLIENT_MACHINE_NAME: "Automatically Initialized IAM_LOGIN_CLIENT"
ZITADEL_FIRSTINSTANCE_ORG_LOGINCLIENT_PAT_EXPIRATIONDATE: "2099-01-01T00:00:00Z"
ZITADEL_DEFAULTINSTANCE_LOGINPOLICY_ALLOWREGISTER: "false"
ZITADEL_DEFAULTINSTANCE_PASSWORDCOMPLEXITYPOLICY_HASSYMBOL: "false"
ZITADEL_DEFAULTINSTANCE_FEATURES_LOGINV2_REQUIRED: "true"
ZITADEL_DEFAULTINSTANCE_FEATURES_LOGINV2_BASEURI: "${ZITADEL_PUBLIC_SCHEME}://${ZITADEL_DOMAIN}:${ZITADEL_EXTERNALPORT}/ui/v2/login/"
ZITADEL_OIDC_DEFAULTLOGINURLV2: "${ZITADEL_PUBLIC_SCHEME}://${ZITADEL_DOMAIN}:${ZITADEL_EXTERNALPORT}/ui/v2/login/login?authRequest="
ZITADEL_OIDC_DEFAULTLOGOUTURLV2: "${ZITADEL_PUBLIC_SCHEME}://${ZITADEL_DOMAIN}:${ZITADEL_EXTERNALPORT}/ui/v2/login/logout?post_logout_redirect="
ZITADEL_SAML_DEFAULTLOGINURLV2: "${ZITADEL_PUBLIC_SCHEME}://${ZITADEL_DOMAIN}:${ZITADEL_EXTERNALPORT}/ui/v2/login/login?samlRequest="
ZITADEL_LOGSTORE_ACCESS_STDOUT_ENABLED: "true"
healthcheck:
test:
- CMD
- /app/zitadel
- ready
interval: 10s
timeout: 30s
retries: 15
start_period: 20s
volumes:
- zitadel-bootstrap:/zitadel/bootstrap:rw
depends_on:
postgres:
condition: service_healthy
zitadel-login:
image: ghcr.io/zitadel/zitadel-login:v4.20.0
restart: unless-stopped
user: "0"
environment:
ZITADEL_API_URL: "http://zitadel-api:8080"
NEXT_PUBLIC_BASE_PATH: "/ui/v2/login"
ZITADEL_SERVICE_USER_TOKEN_FILE: "/zitadel/bootstrap/login-client.pat"
ZITADEL_SESSION_COOKIE_SECRET: "${LOGIN_SESSION_COOKIE_SECRET}"
CUSTOM_REQUEST_HEADERS: "Host:${ZITADEL_DOMAIN},X-Forwarded-Proto:${ZITADEL_PUBLIC_SCHEME}"
healthcheck:
test:
- CMD
- /bin/sh
- -c
- node /app/healthcheck.mjs http://localhost:3000/ui/v2/login/healthy
interval: 10s
timeout: 30s
retries: 15
start_period: 20s
volumes:
- zitadel-bootstrap:/zitadel/bootstrap:ro
depends_on:
zitadel-api:
condition: service_healthy
postgres:
image: postgres:17-alpine
restart: unless-stopped
environment:
POSTGRES_PASSWORD: "${POSTGRES_PASSWORD}"
POSTGRES_USER: "postgres"
POSTGRES_DB: "zitadel"
healthcheck:
test:
- CMD-SHELL
- pg_isready -d zitadel -U postgres
interval: 10s
timeout: 30s
retries: 10
start_period: 20s
volumes:
- postgres-data:/var/lib/postgresql/data:rw
volumes:
postgres-data:
zitadel-bootstrap:
configs:
traefik_dynamic:
content: |
http:
routers:
zitadel-root:
entryPoints:
- web
rule: "Path(`/`)"
middlewares:
- zitadel-root-rewrite
service: zitadel-login
priority: 400
zitadel-login:
entryPoints:
- web
rule: "PathPrefix(`/ui/v2/login`)"
service: zitadel-login
priority: 250
zitadel-api:
entryPoints:
- web
rule: "PathPrefix(`/api`)"
middlewares:
- zitadel-strip-api
service: zitadel-api
priority: 200
zitadel-canonical:
entryPoints:
- web
rule: "!PathPrefix(`/ui/v2/login`) && !PathPrefix(`/api`) && !Path(`/`)"
service: zitadel-api
priority: 100
middlewares:
zitadel-root-rewrite:
replacePath:
path: "/ui/v2/login/"
zitadel-strip-api:
stripPrefix:
prefixes:
- "/api"
forceSlash: false
services:
zitadel-login:
loadBalancer:
servers:
- url: "http://zitadel-login:3000"
zitadel-api:
loadBalancer:
servers:
- url: "h2c://zitadel-api:8080"
Free IDE for Java, Kotlin, Go, TypeScript and Python. Built on IntelliJ Community, fully open source, 300+ plugins.
Show that Zitadel is listed as an open-source alternative. Paste into your README:
Ubuntu 24.04 · Apple container, Docker 29.1.3, Compose 2.40.3+ds1-0ubuntu1~24.04.1. Images pulled in 76 s: ghcr.io/zitadel/zitadel:v4.20.0, ghcr.io/zitadel/zitadel-login:v4.20.0, postgres:17-alpine, traefik:v3.7.7.
Based on the upstream setup. Official compose. Images pinned to v4.20.0; secrets moved to .env; Traefik configured with dynamic file provider instead of Docker socket. Optional redis (cache) and otel-collector (observability) profile services and TLS compose overlays are omitted.
zitadel-api-1 | 2026-11-01T18:01:10.763627553Z time=2026-11-01T18:01:10.763Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/accounts/ status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:10.763961887Z time=2026-11-01T18:01:10.763Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/xwiki/bin/view/Main/ status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:10.763989303Z time=2026-11-01T18:01:10.763Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/.nuget/nuget.config status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:10.764041678Z time=2026-11-01T18:01:10.763Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/pme/database/pme/phinx.yml status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:10.764061262Z time=2026-11-01T18:01:10.763Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/__r2/query-printRows.view status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.724321345Z time=2026-11-01T18:01:11.722Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/src/download.php status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.725106595Z time=2026-11-01T18:01:11.723Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/index.php status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.725804095Z time=2026-11-01T18:01:11.723Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/ACSServer/WebServlet status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.725831054Z time=2026-11-01T18:01:11.723Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/__r2/query-printRows.view status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.731536262Z time=2026-11-01T18:01:11.731Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/widgets/debug.php status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.731552554Z time=2026-11-01T18:01:11.731Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/index.php status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.732183887Z time=2026-11-01T18:01:11.731Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/wp-admin/admin-ajax.php status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.732188887Z time=2026-11-01T18:01:11.731Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/common/down/file status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.732190804Z time=2026-11-01T18:01:11.732Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/plugins/captcha/crypt/cryptographp.php status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.733419220Z time=2026-11-01T18:01:11.733Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/icinga2/lib/icinga/icinga-php-thirdparty/etc/passwd status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.733426387Z time=2026-11-01T18:01:11.733Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/wp-admin/admin-ajax.php status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.735221554Z time=2026-11-01T18:01:11.734Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/index.php/community/ status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.736083470Z time=2026-11-01T18:01:11.735Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/common/down/file status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.736377220Z time=2026-11-01T18:01:11.736Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/viewrq.php status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.736673304Z time=2026-11-01T18:01:11.736Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/wp-admin/admin-ajax.php status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.736767387Z time=2026-11-01T18:01:11.735Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/webmail/ status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.737497012Z time=2026-11-01T18:01:11.737Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/plugins/captcha/crypt/cryptographp.php status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.738203929Z time=2026-11-01T18:01:11.738Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/accounts/ status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.739420054Z time=2026-11-01T18:01:11.738Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/mongo-express/ status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.739568345Z time=2026-11-01T18:01:11.739Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/webmail/ status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.741160262Z time=2026-11-01T18:01:11.741Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/setup/index.php status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.741540054Z time=2026-11-01T18:01:11.739Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/wp-admin/admin-ajax.php status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.741544554Z time=2026-11-01T18:01:11.741Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/wp-content/plugins/analytics-insights/tools/oauth2callback.php status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.741546429Z time=2026-11-01T18:01:11.739Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/accounts/ status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.741547929Z time=2026-11-01T18:01:11.740Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/index.php/community/ status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.741549512Z time=2026-11-01T18:01:11.740Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/admin/group/x_group.php status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.741550845Z time=2026-11-01T18:01:11.740Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/setup/index.php status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.741552220Z time=2026-11-01T18:01:11.740Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/icinga2/lib/icinga/icinga-php-thirdparty/etc/passwd status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.741553679Z time=2026-11-01T18:01:11.740Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/admin/group/x_group.php status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.741555137Z time=2026-11-01T18:01:11.740Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/index.php status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.741626470Z time=2026-11-01T18:01:11.740Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/script/ status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.741630762Z time=2026-11-01T18:01:11.740Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/widgets/debug.php status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.741836554Z time=2026-11-01T18:01:11.741Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/script/ status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.741985470Z time=2026-11-01T18:01:11.741Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/pme/database/pme/phinx.yml status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.742131637Z time=2026-11-01T18:01:11.742Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/css_parser.php status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.744084679Z time=2026-11-01T18:01:11.744Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/index.php status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.745130762Z time=2026-11-01T18:01:11.745Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/wp-admin/admin-ajax.php status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.745751554Z time=2026-11-01T18:01:11.745Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/index.php status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.746058512Z time=2026-11-01T18:01:11.746Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/live_mfg.html status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.746404554Z time=2026-11-01T18:01:11.746Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/live_mfg.html status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.746687429Z time=2026-11-01T18:01:11.746Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/pages/exec.php status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.747143262Z time=2026-11-01T18:01:11.747Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/wp-admin/admin-ajax.php status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.747636137Z time=2026-11-01T18:01:11.747Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/index.php status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.747654762Z time=2026-11-01T18:01:11.747Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/pages/exec.php status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.748232054Z time=2026-11-01T18:01:11.748Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/icinga-web/lib/icinga/icinga-php-thirdparty/etc/passwd status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.749298179Z time=2026-11-01T18:01:11.749Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/db/admin/system.users status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.751175804Z time=2026-11-01T18:01:11.751Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/albatross/saml/idpSelection status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.752190720Z time=2026-11-01T18:01:11.752Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/scgi-bin/platform.cgi status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.752785470Z time=2026-11-01T18:01:11.752Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/scgi-bin/platform.cgi status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.753865720Z time="2026-11-01T18:01:11Z" level=error msg="unable to set instance" caller="/home/runner/work/zitadel/zitadel/internal/api/http/middleware/instance_interceptor.go:49" error="unable to get instance by domain: instanceDomain oss-verify.example, publicHostname oss-verify.example: ID=QUERY-1kIjX Message=Errors.Instance.NotFound" externalDomain=127.0.0.1 origin="http://oss-verify.example" zitadel-api-1 | 2026-11-01T18:01:11.753960887Z time=2026-11-01T18:01:11.753Z level=INFO msg="request served" request.id=dbjnspte7ka00091i7f0 request.instance_host=oss-verify.example TraceID=9da5e50586ddb9eb5a3af0690febc108 SpanID=15b9555ea9d7b620 stream=request version=v4.20.0 protocol=http service=login_v1 http_method=GET path=/register status=404 duration=714.25µs zitadel-api-1 | 2026-11-01T18:01:11.754062095Z time=2026-11-01T18:01:11.754Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/etc/passwd status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.756014762Z time=2026-11-01T18:01:11.755Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/get_dkey.php status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.758056554Z time=2026-11-01T18:01:11.757Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/config/initializers/secret_token.rb status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.758062512Z time=2026-11-01T18:01:11.757Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/webservice/get_usedspace.php status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.758063637Z time=2026-11-01T18:01:11.757Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/badge/1/ping/24 status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.758103887Z time=2026-11-01T18:01:11.757Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/index.php status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.758167637Z time=2026-11-01T18:01:11.757Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/wd/hub/status status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.758169012Z time=2026-11-01T18:01:11.757Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/.ftpconfig status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.758169720Z time=2026-11-01T18:01:11.757Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/wd/hub/status status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.758184804Z time=2026-11-01T18:01:11.757Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/index.php status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.758250720Z time=2026-11-01T18:01:11.757Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/inc/data/database.sdb status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.758256429Z time=2026-11-01T18:01:11.757Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/config/initializers/secret_token.rb status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.758257387Z time=2026-11-01T18:01:11.757Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/wp-content/plugins/tinymce-thumbnail-gallery/php/download-image.php status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.758258179Z time=2026-11-01T18:01:11.757Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/webservice/get_usedspace.php status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.758260512Z time=2026-11-01T18:01:11.757Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/mongo-express/ status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.758277804Z time=2026-11-01T18:01:11.757Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/device.rsp status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.758359679Z time="2026-11-01T18:01:11Z" level=error msg="unable to set instance" caller="/home/runner/work/zitadel/zitadel/internal/api/http/middleware/instance_interceptor.go:49" error="unable to get instance by domain: instanceDomain oss-verify.example, publicHostname oss-verify.example: ID=QUERY-1kIjX Message=Errors.Instance.NotFound" externalDomain=127.0.0.1 origin="http://oss-verify.example" zitadel-api-1 | 2026-11-01T18:01:11.758400220Z time=2026-11-01T18:01:11.758Z level=INFO msg="request served" request.id=dbjnspte7ka00091i7mg request.instance_host=oss-verify.example TraceID=bd9193fc17aa72eee393c575211fe6fb SpanID=ac0dd79b9d4731e3 stream=request version=v4.20.0 protocol=http service=login_v1 http_method=GET path=/register status=404 duration=717.167µs zitadel-api-1 | 2026-11-01T18:01:11.759273595Z time=2026-11-01T18:01:11.759Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/index.php status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.759515220Z time=2026-11-01T18:01:11.759Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/wp-content/plugins/tinymce-thumbnail-gallery/php/download-image.php status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.759737262Z time=2026-11-01T18:01:11.759Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/inc/data/database.sdb status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.760038970Z time=2026-11-01T18:01:11.759Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/etc/passwd status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.760071554Z time=2026-11-01T18:01:11.759Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/.ftpconfig status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.760106679Z time=2026-11-01T18:01:11.759Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/badge/1/ping/24 status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.767003637Z time=2026-11-01T18:01:11.765Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/index.php status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.767008804Z time=2026-11-01T18:01:11.765Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/device.rsp status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.767009804Z time=2026-11-01T18:01:11.765Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/icinga-web/lib/icinga/icinga-php-thirdparty/etc/passwd status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.767010720Z time=2026-11-01T18:01:11.765Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/albatross/saml/idpSelection status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.767011512Z time=2026-11-01T18:01:11.765Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/download/C:/windows/system.ini status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.767012220Z time=2026-11-01T18:01:11.766Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/mgmnt/..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\windows\win.ini status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.767013095Z time=2026-11-01T18:01:11.766Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/jenkins/script status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.767013804Z time=2026-11-01T18:01:11.766Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/index.php status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.767014429Z time=2026-11-01T18:01:11.766Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/get_dkey.php status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.767015095Z time=2026-11-01T18:01:11.766Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/index.php status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.767015845Z time=2026-11-01T18:01:11.766Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/jenkins/script status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.767016512Z time=2026-11-01T18:01:11.766Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/index.php status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.767017179Z time=2026-11-01T18:01:11.766Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/mgmnt/..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\windows\win.ini status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.767017970Z time=2026-11-01T18:01:11.766Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/download/C:/windows/system.ini status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.767027304Z time=2026-11-01T18:01:11.766Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/cgi-bin/Maconomy/MaconomyWS.macx1.W_MCS/etc/passwd status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.767028095Z time=2026-11-01T18:01:11.766Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/view/action/download_file.php status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.767028762Z time=2026-11-01T18:01:11.766Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/common/setup.php status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.767029429Z time=2026-11-01T18:01:11.766Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/cgi-bin/awstats.pl status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.767030054Z time=2026-11-01T18:01:11.766Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/LetsEncrypt/Index status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.767030720Z time=2026-11-01T18:01:11.766Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/cgi-bin/Maconomy/MaconomyWS.macx1.W_MCS/etc/passwd status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.767723970Z time=2026-11-01T18:01:11.767Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/ACSServer/DownloadFileServlet status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.767830512Z time=2026-11-01T18:01:11.767Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/ACSServer/DownloadFileServlet status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.767850804Z time=2026-11-01T18:01:11.767Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/tplus/SM/DTS/DownloadProxy.aspx status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.767926470Z time=2026-11-01T18:01:11.767Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/db/admin/system.users status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.767952054Z time=2026-11-01T18:01:11.767Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/service/v1/service-details status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.768001137Z time=2026-11-01T18:01:11.767Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/service/v1/service-details status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.768080012Z time=2026-11-01T18:01:11.768Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/.msmtprc status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.768181345Z time=2026-11-01T18:01:11.768Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/.msmtprc status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.768200429Z time=2026-11-01T18:01:11.768Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/common/setup.php status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.768249470Z time=2026-11-01T18:01:11.768Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/tplus/SM/DTS/DownloadProxy.aspx status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.768341054Z time=2026-11-01T18:01:11.768Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/index.php status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.768365345Z time=2026-11-01T18:01:11.768Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/LetsEncrypt/Index status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.768369262Z time=2026-11-01T18:01:11.767Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/cgi-bin/awstats.pl status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.768375220Z time=2026-11-01T18:01:11.768Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/view/action/download_file.php status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.770099887Z time=2026-11-01T18:01:11.770Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/awstats/awstats.pl status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.770743804Z time=2026-11-01T18:01:11.770Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/awstats/awstats.pl status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.770817762Z time=2026-11-01T18:01:11.770Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/awstats.pl status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.771103970Z time=2026-11-01T18:01:11.771Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/ACSServer/DownloadFileServlet status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.771221679Z time=2026-11-01T18:01:11.771Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/awstats.pl status=404 duration=0s zitadel-api-1 | 2026-11-01T18:01:11.771476679Z time=2026-11-01T18:01:11.771Z level=INFO msg="request served" stream=request version=v4.20.0 protocol=http service=grpc_gateway http_method=GET path=/ACSServer/DownloadFileServlet status=404 duration=0s