Vaultwarden : héberger soi-même son gestionnaire de mots de passe

Coffre-fort numérique sécurisé accessible depuis plusieurs appareils

Vaultwarden est un serveur de mots de passe compatible avec Bitwarden, écrit en Rust et conçu pour tourner sur une toute petite machine : un Raspberry Pi, un NAS, un petit VPS. Vous utilisez les applications et extensions officielles Bitwarden, mais vos mots de passe sont stockés chez vous. Cet article explique comment l’installer avec Docker, ce qu’il faut sécuriser, et quand il vaut mieux s’en abstenir.

Vaultwarden ou Bitwarden : la différence

Bitwarden propose un service en ligne, gratuit pour l’essentiel, et un serveur officiel à héberger soi-même, plus lourd à installer. Vaultwarden est une réécriture non officielle de l’interface de programmation du serveur : il parle le même langage que les clients Bitwarden, mais consomme très peu de ressources, et offre gratuitement des fonctions qui sont payantes ailleurs (codes TOTP, pièces jointes, organisations multi-utilisateurs). Il n’est pas édité par Bitwarden Inc. : vous devez donc suivre vous-même ses mises à jour.

Bitwarden (service en ligne)Vaultwarden (auto-hébergé)
InstallationAucuneÀ faire soi-même
Où sont les mots de passeChez l’éditeur (chiffrés)Sur votre machine (chiffrés)
Mises à jour et sauvegardesGérées pour vousÀ votre charge
Fonctions avancéesCertaines payantesIncluses

Dans les deux cas, vos mots de passe sont chiffrés avant d’être envoyés au serveur, à partir de votre mot de passe maître.

Ce qu’il faut avant de commencer

  • Une machine allumée en permanence avec Docker et Docker Compose installés.
  • Un nom de domaine (ou sous-domaine) pointant vers cette machine, par exemple vault.exemple.fr.
  • Un moyen de servir le site en HTTPS : c’est obligatoire, car le coffre web utilise des fonctions de chiffrement que les navigateurs ne proposent que sur une connexion sécurisée.
Lire aussi :  Le protocole ARP expliqué : la table ARP et la commande arp -a

Installation avec Docker Compose

Créez un dossier vaultwarden et un fichier compose.yaml :

services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: unless-stopped
    environment:
      DOMAIN: "https://vault.exemple.fr"
      SIGNUPS_ALLOWED: "true"
    volumes:
      - ./vw-data:/data
    ports:
      - "127.0.0.1:8080:80"

Puis lancez docker compose up -d. Le conteneur écoute en local sur le port 8080 : c’est volontaire, car il ne doit pas être accessible directement depuis Internet sans HTTPS.

Le HTTPS avec un proxy inverse

Placez devant Vaultwarden un proxy inverse qui gère le certificat : Caddy (le plus simple, il obtient le certificat tout seul), Traefik ou Nginx. Avec Caddy, un fichier de deux lignes suffit :

vault.exemple.fr {
    reverse_proxy 127.0.0.1:8080
}

Si vous préférez ne pas exposer le service sur Internet, vous pouvez aussi le rendre accessible uniquement depuis vos appareils avec un réseau privé : voir notre guide Tailscale.

Créer son compte puis fermer les inscriptions

  1. Ouvrez https://vault.exemple.fr et cliquez sur Créer un compte.
  2. Choisissez un mot de passe maître long et unique : il ne peut pas être récupéré en cas d’oubli.
  3. Une fois votre compte créé (et ceux de vos proches), passez SIGNUPS_ALLOWED à "false" dans le fichier et relancez le conteneur : sans cela, n’importe qui trouvant l’adresse peut s’inscrire.

Utiliser les applications Bitwarden

Installez l’extension de navigateur ou l’application mobile Bitwarden officielle. Sur l’écran de connexion, ouvrez le sélecteur de serveur (l’icône de roue dentée ou « Auto-hébergé ») et saisissez l’adresse de votre serveur : https://vault.exemple.fr. Ensuite, la connexion fonctionne comme sur le service officiel.

La page d’administration

Vaultwarden dispose d’une interface d’administration à l’adresse /admin, désactivée par défaut. Pour l’activer, définissez la variable ADMIN_TOKEN. Ne mettez pas un simple mot de passe en clair : générez un condensé avec la commande intégrée (docker exec -it vaultwarden /vaultwarden hash) et collez-le comme valeur. Désactivez de nouveau cette page si vous n’en avez pas besoin au quotidien.

Les sauvegardes : le point qu’on oublie

Si votre serveur tombe sans sauvegarde, vous perdez vos mots de passe. Tout se trouve dans le dossier vw-data : la base db.sqlite3, les clés rsa_key* et les pièces jointes. Pour une copie cohérente de la base, utilisez la commande de sauvegarde SQLite (sqlite3 db.sqlite3 ".backup 'backup.sqlite3'") plutôt qu’une copie du fichier pendant que le service tourne. Copiez ensuite le tout hors de la machine (disque externe, autre serveur, stockage chiffré), et testez la restauration au moins une fois. Un export JSON chiffré depuis l’application Bitwarden est un complément utile.

Lire aussi :  Script en shell : comment créer et exécuter un script Bash sous Linux

Faut-il vraiment s’en occuper soi-même ?

L’auto-hébergement a du sens si vous aimez maîtriser vos données et que vous acceptez d’en assumer la maintenance : mises à jour, sauvegardes, surveillance. Si ce n’est pas le cas, le service Bitwarden en ligne ou un gestionnaire local comme KeePassXC est un meilleur choix. Pour commencer plus simplement, voyez aussi comment gérer les mots de passe enregistrés dans Firefox, avant de passer à un vrai coffre-fort.

Questions fréquentes

Vaultwarden est-il gratuit ?

Oui, c’est un logiciel libre. Seuls coûtent l’hébergement et votre temps.

Que se passe-t-il si j’oublie mon mot de passe maître ?

Il ne peut pas être récupéré : les données sont chiffrées avec lui. Notez-le dans un endroit sûr, ou enregistrez un export chiffré.

Peut-on l’installer sur un NAS Synology ?

Oui, via le gestionnaire de conteneurs (Docker), avec le même principe : image vaultwarden/server, dossier de données persistant et accès en HTTPS.

Faut-il l’exposer sur Internet ?

Pas obligatoirement. Beaucoup d’utilisateurs le gardent accessible uniquement via un VPN ou un réseau privé, et font tourner leurs applications avec l’adresse privée.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *