# Authentik on Ubuntu — official stack (PostgreSQL + server + worker) # Usage: # cp .env.authentik.example .env # nano .env # mkdir -p data certs custom-templates # docker compose -f docker-compose.authentik.yml --env-file .env up -d name: authentik services: postgresql: image: docker.io/library/postgres:16-alpine restart: unless-stopped env_file: - .env environment: POSTGRES_DB: ${PG_DB:-authentik} POSTGRES_PASSWORD: ${PG_PASS:?set PG_PASS in .env} POSTGRES_USER: ${PG_USER:-authentik} healthcheck: test: - CMD-SHELL - pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER} interval: 30s retries: 5 start_period: 20s timeout: 5s volumes: - database:/var/lib/postgresql/data server: image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2026.2.3} restart: unless-stopped command: server shm_size: 512mb depends_on: postgresql: condition: service_healthy env_file: - .env environment: AUTHENTIK_SECRET_KEY: ${AUTHENTIK_SECRET_KEY:?set AUTHENTIK_SECRET_KEY in .env} AUTHENTIK_POSTGRESQL__HOST: postgresql AUTHENTIK_POSTGRESQL__NAME: ${PG_DB:-authentik} AUTHENTIK_POSTGRESQL__USER: ${PG_USER:-authentik} AUTHENTIK_POSTGRESQL__PASSWORD: ${PG_PASS} # Public URL for OAuth redirects (set in .env, e.g. http://YOUR_UBUNTU_IP:9000) AUTHENTIK_HOST: ${AUTHENTIK_HOST:?set AUTHENTIK_HOST in .env} ports: - ${COMPOSE_PORT_HTTP:-9000}:9000 - ${COMPOSE_PORT_HTTPS:-9443}:9443 volumes: - ./data:/data - ./custom-templates:/templates worker: image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2026.2.3} restart: unless-stopped command: worker user: root shm_size: 512mb depends_on: postgresql: condition: service_healthy env_file: - .env environment: AUTHENTIK_SECRET_KEY: ${AUTHENTIK_SECRET_KEY:?set AUTHENTIK_SECRET_KEY in .env} AUTHENTIK_POSTGRESQL__HOST: postgresql AUTHENTIK_POSTGRESQL__NAME: ${PG_DB:-authentik} AUTHENTIK_POSTGRESQL__USER: ${PG_USER:-authentik} AUTHENTIK_POSTGRESQL__PASSWORD: ${PG_PASS} AUTHENTIK_HOST: ${AUTHENTIK_HOST} volumes: - /var/run/docker.sock:/var/run/docker.sock - ./data:/data - ./certs:/certs - ./custom-templates:/templates volumes: database: driver: local