digitalboard.core/roles/garage/defaults/main.yml
Simon Bärlocher ce50bdb4d3
feat(drawio,garage): optional Authentik ForwardAuth in front of UIs
Add `*_authentik_forward_auth` + `*_authentik_forward_auth_url` knobs to
both roles. When enabled:

* drawio: traefik attaches a ForwardAuth middleware pointing at the
  authentik embedded outpost; unauthenticated requests get redirected
  to log in and downstream sees X-Authentik-* identity headers.

* garage WebUI: same ForwardAuth wiring, and `AUTH_USER_PASS` is dropped
  from the container env so authentik is the only gate. Tasks now key
  the htpasswd hash workflow off `_garage_webui_htpasswd_active`
  (`webui_enabled AND NOT authentik_forward_auth`); when authentik
  fronts the UI we skip hashing entirely. htpasswd hash is also now
  cached on disk and re-verified via `htpasswd -vbB` so unchanged
  passwords stop showing as `changed=true` on every run.

Both knobs default to `false`, preserving existing htpasswd/plain behaviour.
2026-05-27 23:12:23 +02:00

74 lines
No EOL
2.6 KiB
YAML

#SPDX-License-Identifier: MIT-0
---
# defaults file for garage
# Base directory configuration (inherited from base role or defined here)
docker_compose_base_dir: /etc/docker/compose
docker_volume_base_dir: /srv/data
# Garage-specific configuration
garage_service_name: garage
garage_docker_compose_dir: "{{ docker_compose_base_dir }}/{{ garage_service_name }}"
garage_docker_volume_dir: "{{ docker_volume_base_dir }}/{{ garage_service_name }}"
# Garage service configuration
garage_image: "dxflrs/garage:v2.1.0"
# FQDNs the garage S3 router accepts. The first entry is the canonical
# domain and is also used as the virtual-hosted-style root_domain in
# garage.toml; further entries cover internal *.int.* names.
garage_s3_domains:
- "storage.local.test"
garage_web_domain: "web.storage.local.test"
garage_webui_domain: "console.storage.local.test"
# Garage WebUI configuration
garage_webui_enabled: true
garage_webui_image: "khairul169/garage-webui:latest"
garage_webui_port: 3909
# WebUI basic auth credentials (plaintext, will be hashed automatically).
# Ignored when garage_webui_authentik_forward_auth is true — in that case
# authentik handles authentication via the ForwardAuth middleware below.
garage_webui_username: "admin"
garage_webui_password: "admin"
# Optional Authentik ForwardAuth in front of the WebUI. When true:
# - the AUTH_USER_PASS env-var is dropped from the container so htpasswd
# isn't enforced; authentik is the only gate.
# - traefik attaches a ForwardAuth middleware pointing at the URL below.
# Leave false to keep classic htpasswd protection.
garage_webui_authentik_forward_auth: false
garage_webui_authentik_forward_auth_url: ""
# Garage ports
garage_s3_api_port: 3900
garage_s3_web_port: 3902
garage_admin_port: 3903
garage_rpc_port: 3901
# Garage configuration
garage_replication_factor: 1
garage_compression_level: 1
garage_db_engine: "lmdb"
garage_s3_region: "us-east-1"
garage_rpc_secret: "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"
garage_admin_token: "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"
garage_metrics_token: "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"
# Traefik configuration
garage_traefik_network: "proxy"
garage_internal_network: "internal"
garage_use_ssl: true
# Optional: Garage cluster bootstrap configuration
garage_bootstrap_enabled: false
garage_bootstrap_zone: "dc1"
garage_bootstrap_capacity: "1G"
# Optional: S3 keys to create
# Example:
# garage_s3_keys:
# - name: "my-key"
# buckets:
# - name: "my-bucket"
# permissions: ["read", "write"]
garage_s3_keys: []