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:
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 referenceALETYX_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.
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:- Identity & Access Management — Entra / Keycloak setup,
user/tower-approversroles, RBAC. - Database Configuration — Tower + Sidecar databases, schema migration, TLS.
- Container Configuration — full env reference and worked
docker runexamples. - Kubernetes & OpenShift Deployment — hardened manifests, OpenShift specifics, monitoring, troubleshooting.
- Supported Operating Environments — what we test, what is out of scope.