Files
server_cloud_ladkau_de/ansible/roles/vaultwarden/templates/docker-compose.yml.j2
T
ml 1c36b7bbcb Add Vaultwarden self-hosted password vault at vault.ladkau.de
- New vaultwarden role — Vaultwarden container with SQLite storage, admin
  panel protected by token, Keycloak SSO enabled on second deploy after
  the OIDC client secret is available (SSO_ENABLED conditionally set so
  first provisioning deploy works without Keycloak being configured yet)
- Traefik routes vault.ladkau.de with lax rate limiting (SPA loads many assets)
- vault.ladkau.de added to DNS table, check-services.sh, status dashboard,
  and check-vault.sh (admin token required; SSO secret is post-provisioning)
- Configuration runbook: step 2.6 for Keycloak client, section 6 for
  Vaultwarden setup including admin panel, SSO login, and client configuration
2026-06-28 15:39:42 +02:00

38 lines
1.4 KiB
Django/Jinja

# Managed by Ansible — do not edit manually
services:
vaultwarden:
image: vaultwarden/server:{{ vaultwarden_version }}
container_name: vaultwarden
restart: unless-stopped
environment:
DOMAIN: "https://{{ domain_vault }}"
# Admin panel at /admin/ — use a long random token
ADMIN_TOKEN: "{{ vaultwarden_admin_token }}"
# Disable public sign-up — accounts created via SSO or admin panel
SIGNUPS_ALLOWED: "false"
{% if vaultwarden_sso_client_secret | default('') %}
# SSO via Keycloak — enabled after Keycloak client is configured (step 2.6)
SSO_ENABLED: "true"
SSO_CLIENT_ID: "vaultwarden"
SSO_CLIENT_SECRET: "{{ vaultwarden_sso_client_secret }}"
SSO_AUTHORITY: "https://{{ domain_sso }}/realms/ladkau"
{% else %}
SSO_ENABLED: "false"
{% endif %}
volumes:
- {{ vaultwarden_data_dir }}/data:/data
networks:
- traefik_public
labels:
- "traefik.enable=true"
- "traefik.http.routers.vaultwarden.rule=Host(`{{ domain_vault }}`)"
- "traefik.http.routers.vaultwarden.entrypoints=websecure"
- "traefik.http.routers.vaultwarden.tls.certresolver=letsencrypt"
- "traefik.http.services.vaultwarden.loadbalancer.server.port=80"
# Lax rate limit — Vaultwarden SPA loads many assets on first visit
- "traefik.http.routers.vaultwarden.middlewares=rate-limit-lax@docker"
networks:
traefik_public:
external: true