Première stack migrée vers le nouveau modèle. Le nom du dossier est
conservé à l'identique : il détermine le nom du projet Compose
(vaultopytexorg) et donc le préfixe des volumes, ce qui permet de
reprendre les données existantes.
- env_file : les 22 variables non sensibles, en clair et diffables
- secrets.env.yaml : ADMIN_TOKEN et SSO_CLIENT_SECRET, chiffrés
- env_file: .env supprimé ; les deux secrets passent par ${VAR:?} pour
échouer franchement si `sops exec-env` est oublié
Corrections au passage :
- priority=10 sur le router principal. Sans elle Traefik la déduisait de
la longueur de la règle (23), contre 26 sur le router /admin : trois
caractères de marge avant que /admin ne perde le forward auth.
- backup.enable sur le volume, qui n'était couvert par aucune sauvegarde.
À compléter dans MANUAL_VOLUMES : un label n'agit pas sur un volume
déjà créé.
- version d'image figée (1.35.7) au lieu de latest, détectable par Renovate
- security_opt: no-new-privileges
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
55 lines
1.9 KiB
Plaintext
55 lines
1.9 KiB
Plaintext
# =============================================================================
|
|
# VAULTWARDEN — configuration NON sensible
|
|
# =============================================================================
|
|
# Versionné en clair, volontairement : cette configuration doit rester
|
|
# relisible et diffable sans déchiffrer quoi que ce soit.
|
|
#
|
|
# Les deux valeurs sensibles (ADMIN_TOKEN, SSO_CLIENT_SECRET) sont dans
|
|
# secrets.env.yaml et injectées par `sops exec-env`.
|
|
#
|
|
# Ce fichier ne contient QUE ce que le conteneur consomme. Ce qui pilote le
|
|
# compose lui-même — version d'image, règles Traefik — est écrit en dur dans
|
|
# docker-compose.yml : `env_file:` n'alimente pas l'interpolation ${...}, et
|
|
# une version en dur est directement détectée par Renovate.
|
|
# =============================================================================
|
|
|
|
# --- Domaine ---
|
|
DOMAIN=https://vault.opytex.org
|
|
|
|
# --- Inscriptions ---
|
|
# false = seuls les comptes invités via admin peuvent s'inscrire
|
|
SIGNUPS_ALLOWED=false
|
|
SIGNUPS_VERIFY=true
|
|
|
|
# --- SSO OpenID Connect (Authentik) ---
|
|
# SSO_ONLY=true : désactive le login natif Bitwarden, tout passe par Authentik
|
|
SSO_ENABLED=true
|
|
SSO_ONLY=true
|
|
SSO_AUTHORITY=https://sso.opytex.org/application/o/vaultwarden/
|
|
SSO_CLIENT_ID=KGGkButSscxfnbo6KDAH5aj7VHMOcvwtELSehGPl
|
|
SSO_SCOPES=email profile offline_access
|
|
SSO_PKCE=true
|
|
|
|
# Pour faire marcher avec le sso
|
|
SSO_ORGANIZATIONS_INVITE=true
|
|
SSO_ORGANIZATIONS_ALL_COLLECTIONS=true
|
|
|
|
# --- Base de données ---
|
|
# SQLite dans le volume vaultwarden_data. Pas de service db, pas de dump :
|
|
# la sauvegarde repose entièrement sur celle du volume.
|
|
DATABASE_URL=/data/db.sqlite3
|
|
|
|
# --- SMTP (relais interne, réseau `smtp`) ---
|
|
SMTP_HOST=postfix
|
|
SMTP_FROM=noreply@opytex.org
|
|
SMTP_FROM_NAME=Vaultwarden
|
|
SMTP_SECURITY=off
|
|
SMTP_PORT=25
|
|
|
|
# --- Logs & sécurité ---
|
|
LOG_LEVEL=warn
|
|
EXTENDED_LOGGING=true
|
|
IP_HEADER=X-Forwarded-For
|
|
LOGIN_RATELIMIT_MAX_BURST=5
|
|
LOGIN_RATELIMIT_SECONDS=60
|