services: postgresql: environment: POSTGRES_DB: authentik POSTGRES_PASSWORD: CHANGE_THIS_TO_A_SECURE_PASSWORD_1 POSTGRES_USER: authentik healthcheck: interval: 30s retries: 5 start_period: 20s test: - CMD-SHELL - pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER} timeout: 5s image: docker.io/library/postgres:16-alpine restart: unless-stopped volumes: - database:/var/lib/postgresql/data server: command: server depends_on: postgresql: condition: service_healthy environment: AUTHENTIK_POSTGRESQL__HOST: postgresql AUTHENTIK_POSTGRESQL__NAME: authentik AUTHENTIK_POSTGRESQL__PASSWORD: CHANGE_THIS_TO_A_SECURE_PASSWORD_1 AUTHENTIK_POSTGRESQL__USER: authentik AUTHENTIK_SECRET_KEY: CHANGE_THIS_TO_A_LONG_RANDOM_SECRET_KEY_AT_LEAST_50_CHARS image: ghcr.io/goauthentik/server:2025.10.3 ports: - 9000:9000 - 9443:9443 restart: unless-stopped volumes: - ./media:/media - ./custom-templates:/templates worker: command: worker depends_on: postgresql: condition: service_healthy environment: AUTHENTIK_POSTGRESQL__HOST: postgresql AUTHENTIK_POSTGRESQL__NAME: authentik AUTHENTIK_POSTGRESQL__PASSWORD: CHANGE_THIS_TO_A_SECURE_PASSWORD_1 AUTHENTIK_POSTGRESQL__USER: authentik AUTHENTIK_SECRET_KEY: CHANGE_THIS_TO_A_LONG_RANDOM_SECRET_KEY_AT_LEAST_50_CHARS image: ghcr.io/goauthentik/server:2025.10.3 restart: unless-stopped user: root volumes: - /var/run/docker.sock:/var/run/docker.sock - ./media:/media - ./certs:/certs - ./custom-templates:/templates volumes: database: driver: local