
Why I removed Zitadel bootstrap because of Host header validation in Docker
The bootstrap container exited with code 22. The cause was not an incorrect API URL, but Zitadel Host header validation inside the Docker network.
Architecture, React and enterprise practice on Microsoft Power Pages.
Technical deep dives, security boundaries and proven implementation patterns from real client projects.

The bootstrap container exited with code 22. The cause was not an incorrect API URL, but Zitadel Host header validation inside the Docker network.

A TypeError in the browser after a backend refactoring. The cause is not a bug in the code, but an outdated frontend type that did not know the new API response shape.

Phase 3 introduces real data isolation. Each user gets a separate Qdrant collection, an individual S3 path and three new endpoints for GDPR rights.

OAuth 2.0 and OIDC return two tokens at login, and almost every implementation reads the email address from the wrong one. Why access_token and id_token serve fundamentally different purposes, and why the Userinfo endpoint is the more reliable source for user profile data.

Azurite ties the project to Azure Blob Storage. MinIO speaks the same S3 API as Hetzner Object Storage. Changing environment variables is enough to move to production. Alongside that: how the Zitadel bootstrap container creates OIDC apps automatically.

POST /ingest blocked the extension until embedding generation and the Qdrant upsert finished. BullMQ and Redis make ingestion asynchronous: an immediate 202, background processing and status queries through GET /captures/:id/status.
Describe your workflow. Together, we will identify the right next step.
Discuss your workflow