Héberger Vaultwarden sur un VPS infogéré, c'est garder vos mots de passe et ceux de votre équipe sur une machine à vous, que nos équipes tiennent à jour et supervisent jour et nuit. Vaultwarden est un logiciel libre sous licence AGPL-3.0. Ce guide suit sa documentation officielle : l'installation avec Docker Compose, HTTPS, la fermeture des inscriptions, le jeton d'administration, ce qui protège le coffre, la base de données, les e-mails, les sauvegardes et les mises à jour.
Par Simon Vasconcelos Lee
Publié le 8 novembre 2026Lecture : 15 minutes
DOMAIN.SIGNUPS_ALLOWED : par défaut, toute personne qui atteint l’instance peut s’inscrire. Un mot de passe maître solide et la double authentification protègent ensuite le coffre.docker compose pull.Vaultwarden est un serveur de gestion de mots de passe écrit en Rust, conçu pour l'auto-hébergement. Son wiki le destine aux particuliers, aux familles et aux organisations à taille humaine. Le coffre web est livré dans ses images Docker.
Il met en œuvre une API compatible avec les clients officiels Bitwarden, sur le navigateur, l'ordinateur et le téléphone. Le README précise que le projet n'est pas associé à Bitwarden ni à Bitwarden, Inc., et il demande de lui signaler directement tout problème, quel que soit le client utilisé, plutôt qu'aux canaux d'assistance officiels.
/admin pour les réglages, les comptes et le diagnostic.Le wiki liste aussi ce qui manque par rapport au serveur officiel, comme la connexion par clé d'accès, les rôles personnalisés et certaines politiques d'entreprise. Il précise que les fonctions surtout utiles aux grandes organisations ne sont pas une priorité du projet : lisez cette liste si vous en avez besoin.
Vaultwarden est publié sous GNU Affero General Public License, version 3. Le texte affirme une permission illimitée de faire tourner le programme non modifié. Vous pouvez donc utiliser l'image publiée par le projet pour votre entreprise et votre équipe, sans licence à acheter.
L'article 13 ajoute une condition propre à l'AGPL : si vous modifiez le programme, votre version doit offrir à tous ceux qui l'utilisent à distance, par le réseau, le moyen d'obtenir gratuitement son code source.
Le README recommande les images de conteneur. Sur un serveur où Docker est installé, créez un dossier et placez-y ce compose.yaml, tiré du README et du wiki :
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: unless-stopped
environment:
DOMAIN: "https://vault.example.com"
SIGNUPS_ALLOWED: "true"
volumes:
- ./vw-data/:/data/
ports:
- 127.0.0.1:8000:80
docker compose up -d
127.0.0.1 : comme dans le README, Vaultwarden s'atteint par le seul proxy inverse, posé sur le même serveur.DOMAIN : l'adresse de base de votre instance, en https. Le wiki prévient que des fonctions cassent sans cela, dont les pièces jointes et les liens d'invitation.vw-data sur un disque local : il garde toutes les données. Le wiki signale les ennuis de SQLite sur un volume CIFS ou Samba, qui ne gère pas le verrouillage.latest suit la dernière version publiée, et le wiki la recommande à la plupart des usages. Une étiquette comme 1.37.5 fixe une version, et latest-alpine donne la même chose sur une base Alpine.Votre nom de domaine pointe vers le serveur avec des enregistrements A et AAAA, et les visiteurs arrivent sur les ports 80 et 443. Tant que le proxy inverse n'est pas en place, le coffre web reste inutilisable : passez directement à la section suivante.
Le projet ne chiffre ni la mémoire ni le processeur ; il se présente seulement comme une solution pour les cas où le service officiel, gourmand en ressources, ne convient pas. La taille dépend du nombre de comptes et du volume des pièces jointes. Sur un VPS infogéré, décrivez-nous votre usage et nous vous recommandons la taille qui convient.
Le coffre web s'appuie sur l'API Web Crypto, que les navigateurs réservent aux contextes sécurisés : le README indique qu'il ne fonctionne qu'une fois HTTPS activé, et le wiki juge HTTPS « pretty much required », à peu près obligatoire. Le projet recommande un proxy inverse devant Vaultwarden, et déconseille le TLS intégré à son framework Rocket.
Prenez un certificat reconnu, comme ceux de Let's Encrypt, que le wiki recommande : avec un certificat auto-signé, certaines plateformes refusent la connexion. Le certificat doit porter sa chaîne complète, sans quoi les appareils Android ne se connectent pas.
Les notifications WebSocket, actives par défaut, préviennent le navigateur, l'application de bureau et l'extension qu'une entrée a changé. Elles passent par le port HTTP principal, et le proxy doit transmettre les en-têtes Upgrade et Connection. Les applications mobiles utilisent les notifications natives de leur système, qui se configurent à part.
Le wiki conseille de regarder Caddy en premier si vous n'avez pas de préférence : il active HTTPS de lui-même, obtient le certificat Let's Encrypt et prend en charge WebSocket. Le réglage du wiki transmet aussi l'adresse réelle du visiteur à Vaultwarden, pour ses journaux :
vault.example.com {
reverse_proxy 127.0.0.1:8000 {
header_up X-Real-IP {remote_host}
}
}
Ce bloc reprend l'exemple Nginx du wiki, réduit au port 80 pour laisser Certbot poser HTTPS :
upstream vaultwarden-default {
zone vaultwarden-default 64k;
server 127.0.0.1:8000;
keepalive 2;
}
map $http_upgrade $connection_upgrade {
default upgrade;
'' "";
}
server {
listen 80;
listen [::]:80;
server_name vault.example.com;
client_max_body_size 525M;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
location / {
proxy_pass http://vaultwarden-default;
}
}
Certbot pose ensuite le certificat et se charge de le renouveler :
sudo certbot --nginx
Ouvrez les outils de développement du navigateur, onglet réseau, filtre WS, puis reconnectez-vous au coffre : une réponse 101 sur /notifications/hub confirme la connexion. Autre test du wiki : ouvrez le coffre dans deux navigateurs, renommez une entrée dans l'un, et le changement paraît aussitôt dans l'autre.
Par défaut, toute personne qui atteint votre instance peut y créer un compte. C'est utile pour votre premier compte, et le wiki recommande de fermer ensuite, pour empêcher un attaquant d'en créer un.
SIGNUPS_ALLOWED à "false" dans compose.yaml.docker compose up -d : une variable d’environnement est liée au conteneur, qui doit être recréé pour la prendre en compte.SIGNUPS_ALLOWED: "false"
INVITATIONS_ALLOWED à "false" retire cette possibilité, et le wiki laisse ce choix selon la confiance que vous accordez à vos utilisateurs.SIGNUPS_DOMAINS_WHITELIST limite l'inscription à certains domaines d'e-mail, et SIGNUPS_VERIFY à true impose alors de vérifier l'adresse. Quand cette liste est posée, SIGNUPS_ALLOWED est ignorée.Dès que vous enregistrez la configuration depuis la page d'administration, un fichier config.json naît dans le dossier de données et l'emporte sur les variables d'environnement. Les réglages concernés se changent alors depuis cette page : modifier compose.yaml ne suffit plus.
La page /admin sert à configurer Vaultwarden, à voir et supprimer les comptes et les organisations, à retirer la double authentification d'un utilisateur, à inviter et à lire le diagnostic. Sans ADMIN_TOKEN, elle reste désactivée : si vous n'en avez pas l'usage, laissez-la ainsi.
Le wiki recommande vivement d'activer HTTPS avant cette page. Le jeton sert de mot de passe, et il peut être gardé sous forme hachée, en argon2id, plutôt qu'en clair dans la configuration. Vaultwarden fournit la commande : elle demande le mot de passe deux fois, puis rend une chaîne PHC.
docker run --rm -it vaultwarden/server /vaultwarden hash
Placez cette chaîne dans un fichier .env, à côté de compose.yaml, entre apostrophes, puis appelez-la depuis le service :
VAULTWARDEN_ADMIN_TOKEN='$argon2id$...'
ADMIN_TOKEN: ${VAULTWARDEN_ADMIN_TOKEN}
Vérifiez le résultat, relancez, puis connectez-vous sur /admin avec votre mot de passe, et non avec la chaîne PHC :
docker compose config
docker compose up -d
ADMIN_SESSION_LIFETIME. Une session ouverte reste valide après un changement de jeton. Pour toutes les couper, supprimez rsa_key.pem du dossier de données et redémarrez, ce qui déconnecte aussi les utilisateurs et annule les invitations en cours./admin qu'à certaines adresses, ou y ajouter une authentification HTTP.DISABLE_ADMIN_TOKEN retire tout contrôle : il est prévu pour une couche d'authentification séparée placée devant, et le wiki le réserve à ceux qui savent ce qu'ils font.La première protection est le mot de passe maître. Les données du coffre sont chiffrées avec des clés personnelles ou d'organisation : qui obtient une copie de la base ou force une session doit encore casser ce mot de passe pour les lire. Sa solidité compte donc avant tout. Une session d'administration elle-même permet de supprimer un compte ou de retirer une double authentification, sans donner accès aux données du coffre.
| Protection | Ce qu’elle apporte | Où elle se règle |
|---|---|---|
| Mot de passe maître | Garde les données chiffrées, même si une copie de la base circule | Chaque utilisateur le choisit, long et propre à ce coffre |
| Double authentification | Sans elle, le wiki rappelle que deviner un mot de passe par force brute reste possible en théorie | Dans chaque compte ; une politique d’organisation peut l’exiger |
| HTTPS | Chiffre le trajet entre le client et le serveur | Le proxy inverse |
| Inscriptions fermées | Empêche un inconnu de se créer un compte | SIGNUPS_ALLOWED |
| Indices de mot de passe | Affichés sur la page, ils aideraient à deviner un mot de passe ; la version 1.37.5 les garde masqués par défaut | Laissez SHOW_PASSWORD_HINT à false ; PASSWORD_HINTS_ALLOWED les retire tout à fait |
| Limite des tentatives | Freine les essais depuis une même adresse, connexion et /admin | LOGIN_RATELIMIT_SECONDS et ADMIN_RATELIMIT_SECONDS |
| Fail2ban | Bloque les adresses après trop d’échecs, ce que le wiki juge particulièrement important pour une instance publique | Sur le serveur, à partir d’un journal LOG_FILE |
Préparez l'oubli du mot de passe maître avant qu'il n'arrive : activez l'accès d'urgence de votre compte et, dans une organisation, la récupération de compte, qui demande l'e-mail configuré.
root par défaut, et le wiki juge préférable de lui donner le minimum de droits. Ajoutez user: 1000:1000 au service, avec un dossier vw-data qui appartient à cet utilisateur.access_token. Si votre proxy garde ses journaux ou les envoie à un service extérieur, le wiki recommande d'y masquer cette valeur./var/run/docker.sock.La même image prend en charge les trois bases. Le wiki décrit SQLite comme la plus utilisée et la plus testée, et la recommande à la plupart des usages, sauf besoin précis d'une autre.
| Base | Mise en place | Sauvegarde |
|---|---|---|
| SQLite | Aucune : un fichier, vw-data/db.sqlite3 | La commande /vaultwarden backup, ou la copie du dossier, service arrêté |
| MariaDB ou MySQL | Votre serveur de base, et DATABASE_URL en mysql:// | Un export de la base, en plus du dossier vw-data |
| PostgreSQL | Votre serveur de base, et DATABASE_URL en postgresql:// | Un export de la base, en plus du dossier vw-data |
DATABASE_URL: "postgresql://user_name:user_password@db_host:5432/vaultwarden"
Créez une base vide et son utilisateur : au démarrage, Vaultwarden y pose lui-même son schéma. Un mot de passe qui porte des caractères spéciaux s'écrit en encodage pourcent dans cette adresse.
Faites ce choix avant de remplir le coffre. Le wiki décrit un passage de SQLite à PostgreSQL avec pgloader, en précisant que cette voie n'est pas prise en charge par le projet, qu'elle se fait à vos risques et qu'elle commence par une sauvegarde.
Vaultwarden démarre sans e-mail, mais plusieurs fonctions en dépendent : les invitations, la vérification des adresses, l'envoi des indices de mot de passe, la double authentification par e-mail et la récupération de compte.
Sur un VPS Simafri, l'envoi passe par un relais SMTP authentifié, sur le port 587 : l'adresse d'un compte de messagerie que vous avez déjà, ou Simafri Suite. Le mot de passe se place dans le fichier .env, comme le jeton d'administration :
SMTP_HOST: "smtp.example.com"
SMTP_FROM: "vault@example.com"
SMTP_PORT: "587"
SMTP_SECURITY: "starttls"
SMTP_USERNAME: "vault@example.com"
SMTP_PASSWORD: ${VAULTWARDEN_SMTP_PASSWORD}
DOMAIN, et restent valides 5 jours.No compatible authentication mechanism was found.config.json.Si rien ne part, le wiki propose de tester la connexion au relais depuis le serveur. La commande rend 0 quand le relais répond :
timeout 5 bash -c 'cat < /dev/null > /dev/tcp/smtp.example.com/587'; echo $?
Le README rappelle que le projet ne peut être tenu responsable d'une perte de données et recommande vivement des sauvegardes régulières. Le wiki les conseille automatiques, avec au moins une copie ailleurs. Voici ce que contient le dossier de données avec SQLite :
| Élément | Ce qu’il garde | À sauvegarder |
|---|---|---|
db.sqlite3 | La quasi-totalité des données : comptes, organisations, coffres | Obligatoire |
attachments/ | Les pièces jointes, stockées hors de la base | Obligatoire |
config.json | La configuration de la page d’administration, dont des données sensibles en clair | Recommandé, chiffré |
rsa_key* | Les clés qui signent les sessions ; les perdre déconnecte les utilisateurs | Recommandé, chiffré |
sends/ | Les fichiers envoyés par Send, éphémères par nature | Facultatif |
icon_cache/ | Les icônes des sites, téléchargées à nouveau au besoin | Facultatif |
Depuis la version 1.32.1, Vaultwarden sait sauvegarder sa base SQLite lui-même, sans arrêt du service :
docker exec -it vaultwarden /vaultwarden backup
La commande écrit un fichier db_AAAAMMJJ_HHMMSS.sqlite3 à côté de la base, dans vw-data. L'image ne contient ni sqlite3 ni cron : le wiki conseille de planifier la tâche sur le serveur, au moins une fois par jour. Retirez alors -it, car une tâche planifiée n'a pas de terminal, et faites le tri parmi ces fichiers, qui s'accumulent.
Quand la base n'est pas utilisée, une simple copie de tous ses fichiers suffit. C'est la méthode à service arrêté que le wiki donne en exemple pour Docker, et elle emporte aussi les pièces jointes :
docker compose down
tar -czf vaultwarden-$(date +%F).tar.gz vw-data
docker compose up -d
Le wiki juge une couche de chiffrement utile, surtout quand la sauvegarde porte le jeton d'administration et les accès SMTP, et il cite rclone, restic et rustic pour envoyer les copies au loin. Avec MariaDB ou PostgreSQL, ajoutez un export de la base au dossier vw-data.
Le wiki demande de ne pas s'en remettre aux seuls instantanés de disque, plus délicats à restaurer. Gardez donc ces copies propres à l'application : posées sur le disque du serveur, elles entrent aussi dans ses sauvegardes de nuit.
vw-data par sa version sauvegardée./vaultwarden backup, nommez-la db.sqlite3 et supprimez d’abord tout fichier db.sqlite3-wal existant : un journal qui ne correspond pas peut corrompre la base. Si elle vient d’une copie directe, restaurez ensemble db.sqlite3 et son db.sqlite3-wal.Le wiki conseille de répéter cet exercice de temps en temps, en gardant une copie des données en place : c'est ainsi que vous vérifiez qu'une sauvegarde fonctionne.
Le wiki donne deux commandes, depuis le dossier du compose.yaml. Le dossier de données reste en place :
docker compose pull
docker compose up -d
Ces mises à jour comptent plus qu'ailleurs. Les applications mobiles et les extensions de navigateur se mettent à jour d'elles-mêmes, et le wiki prévient qu'un écart de version avec le serveur peut provoquer des pannes soudaines. Le coffre web, livré dans l'image, reste toujours accordé à son serveur.
Le projet n'a pas de calendrier de versions : suivez ses notes de version, et lancez une sauvegarde juste avant chaque mise à jour. Certaines portent des correctifs de sécurité, comme la 1.37.5 du 1er novembre 2026, dont les notes recommandent de mettre à jour au plus vite. Ces notes préviennent aussi que, depuis la 1.37.5, une valeur de configuration invalide empêche Vaultwarden de démarrer : relisez votre fichier d'environnement avant de mettre à jour. La page de diagnostic de /admin indique si une version plus récente existe.
L'auto-hébergement demande de tenir le serveur en plus de l'application. Sur un VPS infogéré, nos équipes prennent le serveur en main et suivent votre instance de manière proactive ; Vaultwarden reste votre logiciel, avec ses réglages et ses données.
| Sujet | Nos équipes | Vous |
|---|---|---|
| Le serveur | Mises à jour du système et de la sécurité, interventions sur le serveur comprises | Le moment qui convient à votre activité |
| La supervision | Serveur suivi 24 h/24 et 7 j/7, avec intervention sans attendre votre appel | La lecture des journaux de votre instance |
| Vaultwarden | Suivi proactif : erreurs, lenteurs et espace disque repérés, correction recommandée | Son installation, ses mises à jour et ses réglages, que vous appliquez, vous ou votre assistant IA |
| Les comptes et le coffre | Le serveur qui les porte, surveillé et sauvegardé | Les utilisateurs, les invitations, les mots de passe maîtres et la double authentification |
| Les sauvegardes | Chaque nuit, chiffrées et gardées hors de la machine ; restauration comprise | Les copies propres à Vaultwarden, et la demande de restauration, quand vous en avez besoin |
| La migration | Votre serveur actuel migré, offert | Le moment de la bascule |
Si vous préférez que nos équipes interviennent dans l'application elle-même, cette prestation se facture à l'heure ou au forfait, avec un chiffrage communiqué avant l'intervention.
Avec un VPS infogéré Simafri, nos équipes tiennent à jour le serveur de votre instance Vaultwarden, le surveillent jour et nuit et interviennent sans attendre votre appel ; elles suivent aussi votre instance de manière proactive et vous recommandent les corrections utiles, que vous appliquez, vous ou votre assistant IA. Les sauvegardes sont chiffrées chaque nuit et gardées hors de la machine, leur restauration est comprise, et la migration de votre serveur actuel est offerte.
Oui. Vaultwarden est sous licence AGPL-3.0 : vous pouvez le faire tourner en entreprise sans licence à acheter. Si vous le modifiez, votre version doit offrir son code source à ceux qui l'utilisent par le réseau. Reste le coût du serveur qui le fait tourner.
Oui. Le README présente Vaultwarden comme compatible avec les clients officiels Bitwarden, tout en précisant que le projet n'est pas associé à Bitwarden ni à Bitwarden, Inc. Un problème se signale donc au projet Vaultwarden, quel que soit le client utilisé.
Créez un compose.yaml avec l'image vaultwarden/server, un dossier de données et le port publié sur 127.0.0.1, puis lancez docker compose up -d. Placez ensuite un proxy inverse en HTTPS devant : sans HTTPS, le coffre web ne fonctionne pas. Renseignez aussi votre adresse dans DOMAIN.
Une fois votre compte créé, passez SIGNUPS_ALLOWED à false dans compose.yaml, puis relancez docker compose up -d. Les organisations peuvent encore inviter : INVITATIONS_ALLOWED à false retire cette possibilité. Si la page d'administration a déjà enregistré sa configuration, faites ce réglage depuis elle.
Lancez la commande vaultwarden hash, qui rend une chaîne argon2id, puis placez-la dans ADMIN_TOKEN, depuis un fichier .env avec Docker Compose. Vous vous connectez ensuite sur /admin avec votre mot de passe. Sans ADMIN_TOKEN, la page reste désactivée.
D'abord le mot de passe maître : les données sont chiffrées, et une copie de la base ne se lit qu'en le cassant. S'y ajoutent la double authentification, HTTPS, les inscriptions fermées, un jeton d'administration haché et des sauvegardes chiffrées.
Avec SQLite, lancez chaque jour la commande /vaultwarden backup dans le conteneur, et copiez aussi le dossier attachments, config.json et les fichiers rsa_key. Avec MariaDB ou PostgreSQL, ajoutez un export de la base. Testez régulièrement la restauration.
Un VPS infogéré couvre le serveur : système, sécurité, supervision et sauvegardes. Nos équipes suivent aussi votre instance de manière proactive et vous recommandent les corrections utiles, que vous appliquez. Une intervention dans l'application se facture à l'heure ou au forfait.
Simafri
Parlons de votre projet
Dites-nous en deux mots ce qu'il vous faut : on revient vers vous rapidement.
Merci ! Votre demande a bien été envoyée. Nous vous répondrons rapidement.
Vous préférez l'email ? Écrivez-nous à support@simafri.com.