103 lines
3.4 KiB
YAML
103 lines
3.4 KiB
YAML
# /opt/stacks/authentik/docker-compose.yml
|
|
|
|
services:
|
|
|
|
# ── Base de dades PostgreSQL ─────────────
|
|
postgresql:
|
|
container_name: authentik-postgres
|
|
image: postgres:16-alpine
|
|
restart: unless-stopped
|
|
environment:
|
|
POSTGRES_PASSWORD: '${PG_PASS}'
|
|
POSTGRES_USER: authentik
|
|
POSTGRES_DB: authentik
|
|
volumes:
|
|
- pg_data:/var/lib/postgresql/data
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U authentik -d authentik"]
|
|
interval: 10s
|
|
timeout: 5s # Afegit
|
|
retries: 5
|
|
start_period: 30s # Afegit
|
|
networks: [authentik_net]
|
|
|
|
# ── Redis per a sessions ─────────────────
|
|
redis:
|
|
container_name: authentik-redis
|
|
image: redis:7.4-alpine
|
|
restart: unless-stopped
|
|
command: redis-server --requirepass '${REDIS_PASS}'
|
|
healthcheck:
|
|
test: ["CMD", "redis-cli", "-a", "${REDIS_PASS}", "ping"]
|
|
interval: 10s
|
|
timeout: 5s # Afegit
|
|
retries: 5
|
|
start_period: 15s # Afegit
|
|
networks: [authentik_net]
|
|
|
|
# ── Authentik Server (API + UI) ───────────
|
|
server:
|
|
container_name: authentik-server
|
|
image: ghcr.io/goauthentik/server:2026.5.3 # Actualitzat a darrera versió estable
|
|
restart: unless-stopped
|
|
command: server
|
|
environment:
|
|
# ⚠️ NO afegir TZ aquí — trenca OAuth/SAML (doc oficial)
|
|
AUTHENTIK_REDIS__HOST: redis
|
|
AUTHENTIK_REDIS__PASSWORD: '${REDIS_PASS}'
|
|
AUTHENTIK_POSTGRESQL__HOST: postgresql
|
|
AUTHENTIK_POSTGRESQL__USER: authentik
|
|
AUTHENTIK_POSTGRESQL__NAME: authentik
|
|
AUTHENTIK_POSTGRESQL__PASSWORD: '${PG_PASS}'
|
|
AUTHENTIK_SECRET_KEY: '${AUTHENTIK_SECRET_KEY}'
|
|
AUTHENTIK_ERROR_REPORTING__ENABLED: "false" # String, no booleà YAML
|
|
ports:
|
|
- "127.0.0.1:9000:9000" # HTTP (només local → via Nginx)
|
|
- "127.0.0.1:9443:9443" # HTTPS (només local → via Nginx)
|
|
volumes:
|
|
- authentik_media:/media
|
|
- authentik_templates:/templates
|
|
depends_on:
|
|
postgresql:
|
|
condition: service_healthy
|
|
redis:
|
|
condition: service_healthy
|
|
networks: [authentik_net, shared_net]
|
|
|
|
# ── Authentik Worker (tasques en segon pla) ──
|
|
worker:
|
|
container_name: authentik-worker
|
|
image: ghcr.io/goauthentik/server:2026.5.3 # Mateixa versió que server
|
|
restart: unless-stopped
|
|
command: worker
|
|
environment:
|
|
# ⚠️ NO afegir TZ aquí — trenca OAuth/SAML (doc oficial)
|
|
AUTHENTIK_REDIS__HOST: redis
|
|
AUTHENTIK_REDIS__PASSWORD: '${REDIS_PASS}'
|
|
AUTHENTIK_POSTGRESQL__HOST: postgresql
|
|
AUTHENTIK_POSTGRESQL__USER: authentik
|
|
AUTHENTIK_POSTGRESQL__NAME: authentik
|
|
AUTHENTIK_POSTGRESQL__PASSWORD: '${PG_PASS}'
|
|
AUTHENTIK_SECRET_KEY: '${AUTHENTIK_SECRET_KEY}'
|
|
volumes:
|
|
- authentik_media:/media
|
|
- authentik_templates:/templates # Afegit: worker també necessita templates
|
|
- /var/run/docker.sock:/var/run/docker.sock:ro # Gestió automàtica d'Outposts
|
|
depends_on:
|
|
postgresql:
|
|
condition: service_healthy
|
|
redis:
|
|
condition: service_healthy
|
|
networks: [authentik_net]
|
|
|
|
volumes:
|
|
pg_data:
|
|
authentik_media:
|
|
authentik_templates:
|
|
|
|
networks:
|
|
authentik_net:
|
|
driver: bridge
|
|
shared_net:
|
|
external: true
|
|
name: shared_net |