Aller au contenu principal

Vaultwarden Common — Configuration applicative partagée

Vaultwarden_Common est la couche applicative partagée de Vaultwarden. Elle n'est pas déployée seule ; elle fournit la configuration propre à Vaultwarden sur laquelle s'appuient à la fois Vaultwarden_GKE et Vaultwarden_CloudRun, afin que les deux variantes de plateforme se comportent de façon identique là où cela compte. Les utilisateurs finaux ne configurent jamais cette couche directement — elle n'a aucune entrée propre dans l'interface de déploiement — mais comprendre ce qu'elle fournit explique les valeurs par défaut que vous voyez dans la documentation des plateformes.

Pour l'infrastructure qui provisionne et exécute réellement Vaultwarden, consultez les guides des plateformes (Vaultwarden_GKE, Vaultwarden_CloudRun) et les guides du socle (App_GKE, App_CloudRun, App_Common).


1. Ce que fournit cette couche​

DomaineFourni par Vaultwarden_CommonOù cela apparaît
Image de conteneurÉpingle vaultwarden/server et le Dockerfile qui l'encapsule ; effectue le build d'une image personnalisée via Cloud BuildSortie container_image du déploiement de la plateforme
Moteur de base de donnéesDétecte si le moteur sélectionné est PostgreSQL ou MySQL et choisit en conséquence l'image de job db-init appropriéeSortie initialization_jobs
Amorçage de la base de donnéesDéfinit le job du premier déploiement qui crée la base de données, l'utilisateur et les droits — idempotent, prend en charge PostgreSQL 15 et MySQL 8.0Sortie initialization_jobs
Stockage d'objetsDéclare le bucket Cloud Storage vaultwarden-attachmentsSortie storage_buckets
Paramètres principauxTransmet au socle le port du conteneur, les limites de ressources, le nombre d'instances et les variables d'environnementComportement de l'application dans les guides des plateformes
Vérifications de santéFournit la sonde de démarrage/d'activité par défaut ciblant /aliveObservabilité dans les guides des plateformes
Aucun secret applicatifNe crée aucun secret Secret Manager — Vaultwarden gère lui-même son jeton d'administration et ses clés RSA dans le volume /dataMentionné dans la section Sécurité des guides des plateformes

2. Détection du moteur de base de données et amorçage​

Le job d'amorçage db-init de Vaultwarden_Common prend en charge PostgreSQL 15 (par défaut) et MySQL 8.0 — le moteur est détecté à partir de la variable database_type transmise par le module de plateforme :

database_typeImage du job d'initialisationdb-init.sh DB_ENGINE
POSTGRES_15 (ou toute valeur non MySQL)postgres:15-alpinepostgres
MYSQL_8_0 (ou toute valeur commençant par MYSQL)mysql:8.0-debianmysql

Cette détection ne couvre que le job d'amorçage. Le script entrypoint.sh d'exécution, qui assemble la DATABASE_URL de Vaultwarden à partir des valeurs injectées DB_HOST/DB_USER/ DB_PASSWORD/DB_NAME, n'a pas de branche DB_ENGINE/MySQL — il construit inconditionnellement une URL postgresql://, quelle que soit la valeur de database_type. Définir database_type = "MYSQL_8_0" amorce correctement une base de données et un utilisateur MySQL, mais le conteneur Vaultwarden en cours d'exécution tente ensuite une connexion au schéma Postgres sur cet hôte MySQL et ne parvient pas à se connecter. POSTGRES_15 est aujourd'hui le seul moteur qui fonctionne de bout en bout.

Lors du premier déploiement, le job db-init s'exécute automatiquement et de manière idempotente :

  1. Crée la base de données Vaultwarden (si elle n'existe pas).
  2. Crée l'utilisateur de l'application avec le mot de passe généré.
  3. Accorde à l'utilisateur tous les privilèges sur cette base de données.

Une fois terminé, le job envoie une requête POST à localhost:9091/quitquitquit pour arrêter proprement le sidecar Cloud SQL Auth Proxy. Inspectez directement la base de données avec :

# For PostgreSQL:
gcloud sql connect <instance-name> --user=vaultwarden --project "$PROJECT"

# For MySQL:
gcloud sql connect <instance-name> --user=vaultwarden --database-version=MYSQL \
--project "$PROJECT"

Les noms de l'instance, de la base de données et de l'utilisateur figurent dans les sorties du déploiement de la plateforme.


3. Image de conteneur​

Vaultwarden_Common effectue le build d'une image d'encapsulation personnalisée à partir du Dockerfile de son répertoire scripts/, en utilisant vaultwarden/server:<version> comme image de base. Le build s'exécute via Cloud Build et l'image obtenue est stockée dans Artifact Registry.

La variable application_version (par défaut 1.32.7) est transmise comme argument de build Docker (APP_VERSION), de sorte que la mise à niveau de Vaultwarden se résume à la modification d'une seule variable.

Inspectez l'image déployée :

gcloud artifacts docker images list <registry-region>-docker.pkg.dev/<project>/<repo> \
--project "$PROJECT"

4. Paramètres principaux de l'application​

Vaultwarden_Common assemble la configuration du conteneur afin que l'application démarre correctement dès le premier lancement. L'encapsuleur propre à la plateforme fusionne ensuite un petit ensemble de variables d'environnement supplémentaires avant de transmettre la configuration complète au socle :

Variable injectée par l'encapsuleurValeurRôle
ROCKET_PORTcontainer_port (par défaut 80)Port d'écoute HTTP Rocket de Vaultwarden
SIGNUPS_ALLOWEDsignups_allowed (par défaut false)Contrôle des inscriptions
WEB_VAULT_ENABLEDweb_vault_enabled (par défaut true)Activation de l'interface web
DATA_FOLDER/dataRépertoire de données de Vaultwarden
DOMAINvariable domain (uniquement si non vide)URL publique pour WebAuthn, TOTP et les liens des e-mails

Variables d'environnement par défaut incluses dans la transmission de Vaultwarden_Common :

VariableValeur par défautRôle
LOG_LEVELwarnNiveau de détail des journaux
SHOW_PASSWORD_HINTfalseDésactive les indices de mot de passe en production
SMTP_HOST""Serveur SMTP (vide = e-mail désactivé)
SMTP_PORT587Port SMTP
SMTP_FROMvaultwarden@example.comAdresse de l'expéditeur
SMTP_SSLtrueActive STARTTLS

Aucun jeton d'administration n'est généré automatiquement. Le panneau /admin, à l'adresse /admin, est désactivé par défaut. Fournissez ADMIN_TOKEN via environment_variables dans le module de plateforme pour l'activer. Utilisez une valeur aléatoire robuste (par exemple openssl rand -base64 48).


5. Comportement des sondes de santé​

Les sondes de démarrage et d'activité ciblent toutes deux /alive — le point de terminaison de santé léger dédié de Vaultwarden, qui renvoie OK lorsque le serveur fonctionne. Vaultwarden, binaire Rust compilé, démarre en quelques secondes ; les sondes utilisent donc un délai initial court de 30 s.

SondeCheminDélai initialDélai d'expirationPériodeSeuil d'échec
Démarrage/alive30 s5 s10 s6
Activité/alive30 s5 s30 s3

Les variantes GKE et Cloud Run utilisent toutes deux des sondes HTTP sur /alive. Contrairement à certaines applications PHP ou Java, Vaultwarden ne redirige pas le trafic HTTP des vérifications de santé ; aucun contournement par sonde TCP n'est donc nécessaire.


6. Stockage d'objets​

Un bucket Cloud Storage suffixé vaultwarden-attachments est déclaré ici et provisionné par le socle, qui accorde également l'accès au compte de service de la charge de travail. Ce bucket est destiné aux pièces jointes de Vaultwarden lorsqu'un stockage reposant sur GCS est utilisé. Listez-le avec :

gcloud storage buckets list --project "$PROJECT"

Aucun secret Secret Manager de niveau applicatif n'est créé ici. Le mot de passe de la base de données est généré et géré par le socle ; le nom de son secret figure dans les sorties du déploiement de la plateforme (database_password_secret). Consultez App_Common pour le modèle partagé de secrets et de Workload Identity.


Pour la configuration propre à Vaultwarden destinée aux utilisateurs (variables par groupe, sorties et manière d'explorer chaque service depuis la console et la CLI), consultez les guides des plateformes : Vaultwarden_GKE et Vaultwarden_CloudRun.

Need RAD to do something it does not do yet? Request it on the roadmap, or vote on what is already there.