Vaultwarden : votre propre Bitwarden auto-hébergé
Un serveur Bitwarden compatible, écrit en Rust, qui tourne sur 30 Mo de RAM et débloque toutes les fonctionnalités premium gratuitement.
Un gestionnaire de mots de passe cloud, c'est un point de défaillance unique. LastPass s'est fait voler ses coffres chiffrés en 2022. Le serveur officiel Bitwarden reste solide, mais dépendre d'une infrastructure tierce pour l'objet le plus sensible qu'on possède — la clé de tous ses comptes — ne m'a jamais mis à l'aise. Vaultwarden résout ça : c'est le serveur Bitwarden, réécrit, hébergé chez vous.
Vaultwarden n'est pas un fork de Bitwarden. C'est une réimplémentation complète de l'API serveur en Rust, compatible avec les clients officiels — extension navigateur, apps mobiles, app desktop. Vous pointez ces clients vers votre propre serveur au lieu de bitwarden.com, et rien ne change côté usage. Ce qui change : les données restent chez vous, et les fonctionnalités payantes de Bitwarden (partage d'organisation, 2FA avancé, envoi de fichiers) sont débloquées gratuitement.
Installation avec Docker
docker run -d \
--name vaultwarden \
--restart=always \
-e DOMAIN="https://vault.mondomaine.fr" \
-e SIGNUPS_ALLOWED=false \
-v /vw-data:/data \
-p 8080:80 \
vaultwarden/server:latestSIGNUPS_ALLOWED=false coupe les inscriptions publiques une fois vos comptes créés — sur un serveur exposé à Internet, c'est la première chose à désactiver. -v /vw-data:/data persiste la base SQLite qui contient les coffres chiffrés.
Pour du vrai déploiement, passez par Docker Compose avec un reverse proxy devant :
services:
vaultwarden:
image: vaultwarden/server:latest
restart: always
environment:
DOMAIN: "https://vault.mondomaine.fr"
SIGNUPS_ALLOWED: "false"
WEBSOCKET_ENABLED: "true"
volumes:
- ./vw-data:/data
networks:
- proxy
networks:
proxy:
external: trueWEBSOCKET_ENABLED active la synchronisation temps réel entre appareils — sans ça, les clients pollent l'API à intervalle régulier au lieu de recevoir les mises à jour instantanément.
HTTPS obligatoire
Les clients Bitwarden refusent de se connecter à un serveur en HTTP simple (sauf en local sur localhost). Un certificat valide est non négociable. La combinaison la plus simple : Nginx en reverse proxy avec Let's Encrypt devant Vaultwarden.
server {
listen 443 ssl http2;
server_name vault.mondomaine.fr;
ssl_certificate /etc/letsencrypt/live/vault.mondomaine.fr/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/vault.mondomaine.fr/privkey.pem;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location /notifications/hub {
proxy_pass http://127.0.0.1:3012;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}Le second location route le WebSocket vers le port dédié aux notifications temps réel. Sans ça, la synchro fonctionne quand même, juste avec un délai.
Migrer depuis Bitwarden ou un autre gestionnaire
Bitwarden exporte les coffres en JSON chiffré ou déchiffré depuis les paramètres du compte. L'import se fait ensuite depuis l'interface web de Vaultwarden (https://vault.mondomaine.fr/#/tools/import), qui supporte le format Bitwarden nativement — mais aussi les exports LastPass, 1Password, Dashlane, Chrome, et une trentaine d'autres formats.
Le point d'attention : un export non chiffré transite en clair sur le disque le temps de l'import. Faites-le sur une machine de confiance, et supprimez le fichier juste après.
Ce que Vaultwarden débloque gratuitement
| Fonctionnalité | Bitwarden Free | Bitwarden Premium (10$/an) | Vaultwarden |
|---|---|---|---|
| Coffre illimité | Oui | Oui | Oui |
| Partage d'organisation | Non | Oui | Oui |
| Envoi de fichiers (Send) | Limité | Illimité | Illimité |
| Rapports de sécurité | Non | Oui | Oui |
| TOTP intégré | Non | Oui | Oui |
| Emergency access | Non | Oui | Oui |
Sur un serveur personnel, toutes ces fonctions sont actives par défaut — c'est une conséquence directe de comment Vaultwarden a été construit, pas un contournement de licence caché. Le projet est un logiciel indépendant qui parle le même protocole.
Organisations : partager des mots de passe en famille ou en équipe
Une organisation Vaultwarden permet de créer des coffres partagés — utile pour une famille (Netflix, box internet, wifi) ou une petite équipe (accès serveurs, API keys). Chaque membre garde son coffre personnel séparé, et voit en plus les items de l'organisation selon ses permissions (lecture seule, édition, admin).
Créer une organisation se fait depuis l'interface web, section Organizations. Les invitations s'envoient par email — configurez SMTP_HOST et les variables associées dans le container pour que ça fonctionne, sinon l'admin doit copier le lien d'invitation manuellement.
Sauvegardes
Le coffre entier tient dans le dossier /data : la base SQLite (db.sqlite3), les pièces jointes, la clé RSA du serveur. Une sauvegarde, c'est copier ce dossier.
# Sauvegarde simple avec rotation
tar czf vw-backup-$(date +%F).tar.gz /vw-data
find /backups -name "vw-backup-*.tar.gz" -mtime +30 -deleteTestez la restauration au moins une fois. Un gestionnaire de mots de passe dont vous ne pouvez pas restaurer la sauvegarde, c'est pire qu'aucune sauvegarde — ça donne un faux sentiment de sécurité.
Sécuriser le serveur lui-même
Vaultwarden auto-hébergé déplace la surface de risque : au lieu de faire confiance à l'infrastructure Bitwarden, vous devenez responsable de la sécurité du serveur. Trois réflexes indispensables :
# Restreindre l'accès SSH au serveur qui héberge le coffre
sudo ufw allow from VOTRE_IP to any port 22
sudo ufw deny 22
# Fail2ban contre le bruteforce sur l'interface admin
# ADMIN_TOKEN doit être un secret long, jamais le mot de passe par défautADMIN_TOKEN protège le panneau /admin qui donne accès à la gestion globale du serveur — utilisateurs, organisations, config. Un token faible ici compromet tous les coffres. Générez-le avec openssl rand -base64 48 et stockez-le dans un fichier .env, jamais en clair dans le docker-compose.yml versionné.
Vaultwarden ne convient pas à tout le monde — ça demande un serveur, un domaine, un certificat, et la discipline de le maintenir à jour. Mais pour qui gère déjà un VPS avec Docker et un minimum de pare-feu UFW, c'est vingt minutes d'installation pour ne plus jamais confier ses mots de passe à un tiers. Le vrai gain n'est pas le prix — c'est de savoir exactement où vivent ces données.