Authentik seed contract
This directory defines the deterministic Authentik seed used by the local OIDC stack in docker-compose.oidc.yml.
Bootstrap contract
The compose stack must provide these first-start bootstrap values on the authentik-worker container:
AUTHENTIK_BOOTSTRAP_PASSWORDAUTHENTIK_BOOTSTRAP_TOKENAUTHENTIK_BOOTSTRAP_EMAIL
Per Authentik's automated install flow, those values are only read on the first startup of a fresh Authentik database volume.
Mounted assets
blueprints/portabase-oidc.yaml- mounted into
/blueprints/portabase-oidc.yaml - auto-discovered by the Authentik worker
- kept as an in-repo reference blueprint for the intended provider/application shape
- mounted into
bootstrap.sh- executed by the dedicated
authentik-bootstrapcompose service - waits for the server and required default Authentik objects
- grants the bootstrap admin deterministic
authentik Adminsmembership from inside Authentik - resolves the required default flow, scope-mapping, and signing-key objects from inside Authentik with
ak shell - then reconciles the deterministic Portabase seed objects through Authentik's ORM before proving the public discovery URL over HTTP
- executed by the dedicated
Seeded objects
The bootstrap flow is expected to reconcile, idempotently:
- an OAuth2/OIDC provider named
portabase - an application named
Portabasewith slugportabase - a confidential client id
portabase - a client secret
portabase-e2e-secret - a strict redirect URI
http://localhost:8887/api/auth/sso/callback/authentik - an internal test user:
- username:
admin@example.com - email:
admin@example.com - password:
testPASS123456!
- username:
- an
admingroup containing the test user
Expected runtime outputs
After a fresh docker compose -f docker-compose.oidc.yml up, the seeded Authentik instance should expose:
http://localhost:3057/-/health/live/http://localhost:3057/application/o/portabase/.well-known/openid-configuration
That discovery document is the canonical proof that the bootstrap completed successfully. The runtime source of truth is bootstrap.sh, which first normalizes the bootstrap admin's permissions inside Authentik and then reconciles the provider, application, user, and group directly inside Authentik even if blueprint auto-application semantics or bootstrap-token permissions change between Authentik releases.
Portabase env contract
This seed is aligned with the current E2E environment:
AUTH_OIDC_AUTHENTIK_ID=authentikAUTH_OIDC_AUTHENTIK_CLIENT=portabaseAUTH_OIDC_AUTHENTIK_SECRET=portabase-e2e-secretAUTH_OIDC_AUTHENTIK_DISCOVERY_ENDPOINT=http://authentik-server:9000/application/o/portabase/.well-known/openid-configurationAUTH_OIDC_AUTHENTIK_HOST=authentik-server:9000AUTH_OIDC_AUTHENTIK_SCOPES=openid profile emailAUTH_OIDC_AUTHENTIK_ALLOWED_GROUP=admin