services: ########## # Database ########## postgresql: environment: POSTGRES_DB: ${PG_DB} POSTGRES_PASSWORD: ${PG_PASS} POSTGRES_USER: ${PG_USER} 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 ########## server: command: server depends_on: postgresql: condition: service_healthy environment: AUTHENTIK_POSTGRESQL__HOST: postgresql AUTHENTIK_POSTGRESQL__NAME: ${PG_DB} AUTHENTIK_POSTGRESQL__PASSWORD: ${PG_PASS} AUTHENTIK_POSTGRESQL__USER: ${PG_USER} AUTHENTIK_SECRET_KEY: ${AUTHENTIK_SECRET_KEY} image: ghcr.io/goauthentik/server:${AUTHENTIK_TAG} ports: - 9000:9000 - 9443:9443 restart: unless-stopped shm_size: 512mb volumes: - ./data:/data - ./custom-templates:/templates networks: - proxy-net ########## # Worker ########## worker: command: worker depends_on: postgresql: condition: service_healthy environment: AUTHENTIK_POSTGRESQL__HOST: postgresql AUTHENTIK_POSTGRESQL__NAME: ${PG_DB:-authentik} AUTHENTIK_POSTGRESQL__PASSWORD: ${PG_PASS} AUTHENTIK_POSTGRESQL__USER: ${PG_USER:-authentik} AUTHENTIK_SECRET_KEY: ${AUTHENTIK_SECRET_KEY:?secret key required} image: ghcr.io/goauthentik/server:${AUTHENTIK_TAG} restart: unless-stopped shm_size: 512mb user: root volumes: #- /var/run/docker.sock:/var/run/docker.sock - ./data:/data - ./certs:/certs - ./custom-templates:/templates networks: - socket-net networks: socket-net: external: true proxy-net: external: true volumes: database: driver: local