Vaultwarden est une implémentation alternative et non officielle du serveur Bitwarden, écrite en Rust.
Elle permet d'héberger soi-même un gestionnaire de mots de passe complet, compatible avec tous les clients officiels Bitwarden (extension navigateur, application mobile, application de bureau).
Pourquoi Vaultwarden ?
Le serveur officiel Bitwarden est open source mais nécessite des ressources importantes (basé sur .NET + MSSQL). Vaultwarden résout ce problème en proposant une implémentation légère et performante, idéale pour un usage personnel ou en petite équipe sur un serveur modeste (Raspberry Pi, VPS entrée de gamme, NAS…).
Fonctionnalités principales
- Stockage de mots de passe avec organisation en dossiers et collections
- Générateur de mots de passe intégré
- Authentification à deux facteurs (2FA) — TOTP, FIDO2/WebAuthn, Duo
- Partage sécurisé entre utilisateurs via des organisations
- Bitwarden Send — partage de fichiers ou textes chiffrés de manière temporaire
- Coffre-fort d'urgence — accès délégué en cas d'urgence
- Synchronisation multi-appareils via les clients Bitwarden officiels
- Chiffrement de bout en bout — les données sont chiffrées côté client avant d'être transmises
Vaultwarden est la solution idéale pour quiconque souhaite reprendre le contrôle de ses mots de passe sans dépendre d'un service cloud tiers, tout en bénéficiant de l'écosystème riche et mature de Bitwarden.
Installation :
Nous supposons ici que docker est déja maitrisé un minimum 😉
J'ai choisi docker compose pour l'installer car je trouve ça plus simple.
L'installation ce fera (dans mon cas tout du moins) sur une machine tournant sous Débian 12.
- Creez un répertoire (ou vous voulez)
mkdir vaultwarden
cd vaultwarden
creez un fichier compose.yaml et inserez ceci :
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: unless-stopped
environment:
DOMAIN: "https://vw.domain.tld"
volumes:
- ./vw-data/:/data/
ports:
- 127.0.0.1:8000:80
Modifiez :
DOMAIN : avec votre ndd
Lancez Vaultwarden :
docker compose up -d
Nous supposons également que la partie certificat (let's encrypt) est acquise.
Voici le Vhost que j'ai utilisé avec let's encrypt :
D'abord pour le port 80 (qui redirigera vers le https:
<VirtualHost *:80>
ServerName vw.ndd.fr
Redirect permanent / https://vw.ndd.fr/
RewriteEngine on
RewriteCond %{SERVER_NAME} =vw.ndd.fr
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
Puis le 443 :
<VirtualHost *:443>
ServerName vw.ndd.fr
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/vw.ndd.fr/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/vw.ndd.fr/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
ProxyPreserveHost On
ProxyRequests Off
RequestHeader set X-Forwarded-Proto "https"
ProxyTimeout 300
Timeout 300
SetEnv proxy-nokeepalive 1
RewriteEngine On
RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteRule /(.*) ws://127.0.0.1:8001/$1 [P,L]
ProxyPass / http://127.0.0.1:8001/
ProxyPassReverse / http://127.0.0.1:8001/
ErrorLog ${APACHE_LOG_DIR}/vw_error.log
CustomLog ${APACHE_LOG_DIR}/vw_access.log combined
</VirtualHost>
Rendez vous à : https://vw.ndd.fr