T’as combien de mots de passe dans ton navigateur en ce moment? Et combien de comptes gaming, Steam, Epic, GOG, Xbox, PSN, Battle.net, qui traînent avec des mots de passe réutilisés depuis dix ans? Si l’idée de perdre l’accès à ta bibliothèque Steam ou de voir ton compte Epic se faire vider par un bot te file des sueurs froides, il est temps de passer à un coffre-fort chiffré. Pas celui d’un service cloud qui te dit “fais-nous confiance”. Le tien. Auto-hébergé. C’est là que Vaultwarden entre en piste, comme un boss optionnel qui te nargue depuis un recoin de la carte. Dur à battre. Mais une fois que t’as son loot, tu te demandes comment t’as fait avant.

Vaultwarden, le forgeron de ton coffre-fort

Vaultwarden, c’est une alternative à Bitwarden écrite en Rust. La différence majeure: il est conçu pour tourner sur une petite machine, là où le serveur officiel Bitwarden demande plusieurs Go de RAM et un backend.NET. Le projet a commencé comme un fork nommé Bitwarden_RS, avant de prendre son nom actuel. La philosophie derrière, c’est de garder la compatibilité complète avec les clients Bitwarden (extension navigateur, app mobile, app bureau) tout en te laissant le contrôle total de tes données. Concrètement, tu installes Vaultwarden sur ton serveur, tu pointes ton client Bitwarden vers ton domaine, et tout fonctionne comme si t’étais chez Bitwarden, sauf que c’est toi l’admin. Pas de limite de mots de passe. Pas d’abonnement. Pas de boîte noire qui peut fermer demain.

Même interface, même chiffrement AES 256 bits, même mécanisme de partage de mots de passe en équipe. La compatibilité avec les applications Bitwarden est totale, et ça change tout. Tu peux héberger les identifiants de ta famille, de ta team esport, d’un serveur Discord de dev, sans jamais confier ces secrets à un tiers.

Pourquoi auto-héberger, c’est pas réservé aux sysadmins

Bitwarden propose un cloud gratuit, très bien foutu. Mais il impose des limites sur le partage, les pièces jointes chiffrées, et surtout, tes données sont chez eux. Si Bitwarden tombe ou se fait gober, est-ce que tu récupères ton coffre? Probablement. Mais rien ne te le garantit. Avec Vaultwarden, tu sais où sont tes données. Sur ton VPS, ton NAS, ton Raspberry Pi qui ronronne sous le bureau. La base de données est chiffrée via ton mot de passe maître, donc même en cas de vol physique du serveur, un attaquant ne peut rien en faire sans ta passphrase.

Il y a d’autres alternatives auto-hébergées. Keepass, via des fichiers kdbx partagés, impose une gymnastique pour la synchronisation. Passbolt cible plutôt les équipes professionnelles et demande un setup PostgreSQL, pas idéal pour un usage perso ou petite famille. Vaultwarden tape dans le mille pour un joueur qui veut garder la main sur ses comptes sans s’infliger une config d’entreprise. C’est le bon équilibre: une seule base de données légère (SQLite par défaut), une image Docker qui pèse moins de 50 Mo, et une compatibilité clientel que t’as déjà installée sur ton téléphone.

Le matériel et les outils pour faire tourner la bête

Avant de te jeter dans le fichier de config, assure-toi d’avoir les bons ingrédients. Pas besoin d’une machine de guerre: un VPS à 5 euros par mois ou un vieux PC sous Debian suffit. Les joueurs qui ont déjà un guide de progression en tête pour dompter un boss comprendront l’importance de préparer son stuff avant d’y aller.

Il te faut:

  • Un serveur avec une distribution Linux (Debian, Ubuntu, Fedora, ce que tu veux).
  • Docker et Docker Compose installés.1
  • Traefik comme reverse proxy pour gérer automatiquement les certificats HTTPS. Si tu débutes, Traefik, c’est un peu le boss de fin de niveau: il fait peur, mais une fois que tu piges son fichier de config, il te mâche tout le Let’s Encrypt sans effort.
  • Un nom de domaine que tu possèdes, pointé vers ton serveur (par exemple vault.mondomaine.fr).

Si t’as déjà survécu à un soft-lock dans un jeu de FromSoftware, la mise en place d’un reverse proxy te paraîtra presque familière: tu recommences, tu ajustes, et au bout de la troisième tentative, ça passe.

L’installation pas à pas, sans raccourci

On y va. La section la plus dense du guide, celle où tu ne dois pas sauter une étape. Le setup qu’on décrit ici repose sur Docker Compose et Traefik. C’est la stack la plus propre pour exposer Vaultwarden sur ton domaine, en HTTPS, avec renouvellement automatique des certificats.

Docker et l’art de ne pas flooder son serveur

Si Docker n’est pas encore là, installe-le depuis le dépôt officiel de ta distribution. Pareil pour Compose. Une fois prêt, crée un dossier dédié, par exemple /opt/vaultwarden. À l’intérieur, tu mettras un fichier docker-compose.yml.

Le service Vaultwarden lui-même se configure simplement. L’image officielle est vaultwarden/server. Tu montes un volume pour persister les données: typiquement ./vw-data:/data. Pas de volumes montés, pas de survie après un redémarrage du conteneur.

Pour la partie Traefik, le principe est de définir des labels dans le service Vaultwarden qui indiquent à Traefik comment router le trafic et où récupérer le certificat. Tu auras besoin d’un réseau commun entre les deux conteneurs. L’exemple minimal qui tourne tient en une trentaine de lignes.

Un point à garder en tête: le port interne de Vaultwarden est le 80. Traefik s’occupe de faire le pont entre ce port et le monde extérieur via HTTPS sur le port 443. Pas besoin d’ouvrir le port du service au monde. C’est l’une des raisons de passer par un reverse proxy: réduire la surface d’attaque.

Le fichier compose, ou comment ne pas se louper

Un squelette ressemblerait à ça:

version: '3.8'
services:
 vaultwarden:
 image: vaultwarden/server:latest
 restart: always
 volumes:
 -./vw-data:/data
 environment:
 - SIGNUPS_ALLOWED=false
 - ADMIN_TOKEN=${ADMIN_TOKEN}
 networks:
 - traefik
 labels:
 - "traefik.enable=true"
 - "traefik.http.routers.vaultwarden.rule=Host(`vault.mondomaine.fr`)"
 - "traefik.http.routers.vaultwarden.entrypoints=websecure"
 - "traefik.http.routers.vaultwarden.tls.certresolver=letsencrypt"

 traefik:
 image: traefik:latest
 restart: always
 command:
 - "--api.insecure=false"
 - "--providers.docker=true"
 - "--entrypoints.websecure.address=:443"
 - "--certificatesresolvers.letsencrypt.acme.email=tonmail@example.com"
 - "--certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json"
 - "--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web"
 ports:
 - "80:80"
 - "443:443"
 volumes:
 - "/var/run/docker.sock:/var/run/docker.sock:ro"
 - "./letsencrypt:/letsencrypt"
 networks:
 - traefik

networks:
 traefik:
 external: true

La variable ADMIN_TOKEN te permet de créer un mot de passe d’accès à l’interface d’administration. Génère-le avec openssl rand -base64 32 et stocke-le en dehors du fichier compose, dans un fichier .env par exemple. Ça évite de le commit par erreur sur un dépôt public.

La config avancée qui fait la différence

Une fois que Vaultwarden tourne et que tu accèdes à l’interface via ton domaine, passe en mode admin. L’URL est https://vault.mondomaine.fr/admin. Tu te connectes avec le token généré tout à l’heure. C’est de là que tu vas décider des politiques d’inscription, des quotas de mots de passe, et du monitoring.

Porte d’entrée de l’admin et paramètres critiques

Dès le premier login, désactive les inscriptions publiques. La variable SIGNUPS_ALLOWED=false dans le compose empêche quiconque de se créer un compte sur ton instance. Si tu veux ajouter des utilisateurs (famille, amis), fais-le manuellement depuis l’interface admin. Ensuite, configure un serveur SMTP pour les emails de vérification et de réinitialisation de mot de passe. Sans SMTP, toute réinitialisation devra passer par toi, l’admin, en pur manuel. Autant éviter.

Tu peux aussi basculer la base de données de SQLite vers PostgreSQL si ton instance commence à servir plus de quinze utilisateurs. Pour un usage perso ou familial, SQLite tient la charge sans broncher. La migration est documentée mais demande une sauvegarde préalable et un temps d’arrêt. Ça ressemble au moment où tu switch de build après une MAJ qui a nerf ta classe favorite: mieux vaut tout sauvegarder avant.

Les sauvegardes, parce qu’un jour ton serveur va tomber

Si tu retiens une seule chose de cet article, c’est celle-là. Une instance Vaultwarden, c’est une base de données SQLite (ou PostgreSQL) et des pièces jointes dans vw-data. Sans sauvegarde externe régulière, une corruption du volume ou une fausse manipulation de ta part, et tout ton coffre disparaît. Pas de rollback. Pas de second chance. Un vrai hardcore mode.

Automatise une sauvegarde quotidienne. Un simple script shell qui archive le dossier /opt/vaultwarden/vw-data et l’envoie vers un stockage distant (rsync vers un autre serveur, vers un bucket S3 compatible, ou même une copie chiffrée vers un NAS chez toi). L’important, c’est de dupliquer hors du serveur qui fait tourner Vaultwarden. Si ton VPS brûle, ta sauvegarde survit.

Une restauration consiste à remettre le dossier data en place et à relancer le conteneur. Teste-la au moins une fois, quand tout fonctionne encore. La retrouver à chaud, en panique, c’est le meilleur moyen de faire une bêtise.

Clients et utilisateurs: comment se connecter sans friction

Une fois l’instance opérationnelle, tu installes l’application Bitwarden sur ton téléphone, ton navigateur, ton PC. Au moment de te connecter, tu changes l’URL du serveur pour pointer vers https://vault.mondomaine.fr. C’est la seule manipulation. Les applications sont les mêmes que pour Bitwarden classique. Tu retrouves l’auto-complétion, le générateur de mots de passe, le partage d’identifiants.

Pour gérer des profils multiples (compte perso, compte dédié à une asso de joueurs, un compte pour ton gamin), l’interface admin te permet de créer des organisations. Chaque membre voit exactement ce que tu décides de partager. Pas besoin de multiplier les instances.

Sécuriser l’instance sans t’arracher les cheveux

HTTPS via Traefik, c’est bien, mais tu peux aller plus loin. Le fichier config.json de Vaultwarden permet d’affiner la sécurité, notamment en interdisant certaines fonctionnalités avancées (envoi de fichiers, par exemple) si tu ne t’en sers pas. La documentation officielle liste toutes les options, de la rotation des logs à la désactivation des invitations.

Protège le panneau /admin par une règle Traefik supplémentaire, genre une IP whitelist, pour qu’il ne soit accessible que depuis ton réseau local ou ton VPN Wireguard. Comme pour un intranet lycéen verrouillé à double tour, restreindre l’accès aux pages sensibles, c’est le b.a.-ba.

L’autre point critique, c’est le mot de passe maître. Celui qui déchiffre ton coffre côté client. Si tu le perds, tous tes identifiants sont définitivement inaccessibles. Aucune backdoor, aucun recovery côté serveur. C’est le principe du chiffrement de bout en bout. Choisis un mot de passe robuste et stocke-le à part, sur un support physique, dans un endroit sûr. Pas sur le serveur.

Questions fréquentes

Quelle est la différence entre Bitwarden et Vaultwarden?

Bitwarden propose un service cloud et un serveur auto-hébergé officiel, mais ce dernier est lourd et complexe à déployer. Vaultwarden est une réécriture légère, compatible avec les mêmes clients. Tu gagnes les mêmes fonctionnalités sans la surcouche technique, le tout sur une machine modeste.

Quelles sont les limites de Bitwarden en version gratuite?

La version gratuite de Bitwarden (cloud) limite les partages d’organisation, les pièces jointes chiffrées et l’accès aux rapports de sécurité avancés. Vaultwarden lève entièrement ces restrictions puisque c’est toi l’opérateur: pas de palier payant, pas de bridage logiciel.

Vaultwarden est-il une bonne alternative à KeePass?

Pour un usage multi-appareils avec synchronisation automatique, oui. KeePass repose sur un fichier kdbx que tu dois synchroniser manuellement ou via un cloud tiers. Vaultwarden demande un serveur mais offre une expérience client beaucoup plus fluide, similaire à un gestionnaire SaaS, tout en restant auto-hébergé.

Faut-il absolument Traefik ou un autre reverse proxy suffit?

Non, Traefik n’est pas obligatoire. Nginx Proxy Manager, Caddy ou un simple proxy_set_header avec Nginx classique fonctionnent aussi. L’avantage de Traefik, c’est l’intégration native avec Docker et le renouvellement automatique des certificats sans configuration supplémentaire. Pour un premier run, il simplifie énormément le chemin vers HTTPS.

Footnotes

  1. Note: l’installation de Docker sort du périmètre de ce guide, la doc officielle fait bien le taf.

Quiz personnalisé

Votre recommandation sur vaultwarden

Quelques questions rapides pour adapter la recommandation à votre cas.

Q1Votre situation sur vaultwarden ?
Q2Votre priorité ?
Q3Votre horizon ?