Skip to main content
Copy-paste quickstart. Tower requires a companion Sidecar — both are deployed together, with their own PostgreSQL databases. For production hardening, OIDC providers, RBAC tuning, and operational diagnostics, follow the per-topic chapters in the nav.

Local — Container

Tower + Sidecar + 2 Postgres (one per component) on the same host. Substitute <your-registry> and tags for the images you pull from. First, generate a shared callback secret. Tower and the Sidecar must hold the same value — any sufficiently-random string works. A 32-byte hex string is plenty:
Then bring up the stack:
Open http://localhost:8080. ALETYX_OIDC_PROVIDER=none bypasses authentication for local diagnostics. For real OIDC, see Identity & Access Management.

Kubernetes — minimal manifest

Tower + Sidecar in one file: Namespace, ConfigMaps, Secrets, Deployments, Services, Ingress for Tower. The Sidecar stays in-cluster (no Ingress). The two Secrets below reference ALETYX_OIDC_CALLBACK_SECRET — Tower and the Sidecar verify each other’s callbacks with this value, so it must be identical on both. Generate one with openssl rand -hex 32 and paste the same string into each. ALETYX_OIDC_INTERNAL_SECRET (Tower Secret) follows the same shape — same random string on Tower and on every Decision Control instance Tower aggregates. openssl rand -hex 32 again.
Apply and wait:
Then register https://<your-tower-host>/auth/callback as a Redirect URI on your Entra App Registration (or Keycloak client).

Next

Use the chapters in the nav for the production-shaped path: