Héberger Vaultwarden sur un VPS infogéré : vos mots de passe sur votre serveur

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.

Simon Vasconcelos Lee Par Publié le 8 novembre 2026Lecture : 15 minutes

Tous les guides

L'essentiel

  1. La licence AGPL-3.0 permet de faire tourner Vaultwarden librement, en entreprise comme ailleurs ; si vous le modifiez, vous proposez le code de votre version à ceux qui l’utilisent.
  2. Installez-le avec Docker Compose : une image, un port publié en local et un dossier de données, derrière un proxy inverse.
  3. HTTPS est indispensable au coffre web : servez Vaultwarden sous son propre nom de domaine et renseignez ce nom dans DOMAIN.
  4. Créez votre compte, puis fermez les inscriptions avec 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.
  5. Sauvegardez chaque jour la base et les pièces jointes, testez la restauration, et mettez à jour avec docker compose pull.

Ce que fait Vaultwarden

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.

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.

Ce que permet la licence AGPL-3.0

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.

L'installation avec Docker Compose

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 :

compose.yaml
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
Terminal
docker compose up -d

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.

HTTPS et WebSocket : le proxy inverse

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.

Avec Caddy

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 :

Caddyfile
vault.example.com {
  reverse_proxy 127.0.0.1:8000 {
    header_up X-Real-IP {remote_host}
  }
}

Avec Nginx et Certbot

Ce bloc reprend l'exemple Nginx du wiki, réduit au port 80 pour laisser Certbot poser HTTPS :

Bloc Nginx
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 :

Terminal
sudo certbot --nginx

Vérifier WebSocket

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.

Fermer les inscriptions

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.

  1. Ouvrez votre adresse HTTPS et créez votre compte, puis reliez vos applications à cette adresse.
  2. Passez SIGNUPS_ALLOWED à "false" dans compose.yaml.
  3. Relancez avec docker compose up -d : une variable d’environnement est liée au conteneur, qui doit être recréé pour la prendre en compte.
compose.yaml, dans environment
SIGNUPS_ALLOWED: "false"

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 d'administration et son jeton

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.

Terminal
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 :

.env
VAULTWARDEN_ADMIN_TOKEN='$argon2id$...'
compose.yaml, dans environment
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 :

Terminal
docker compose config
docker compose up -d

Ce qui protège le coffre

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.

ProtectionCe qu’elle apporteOù elle se règle
Mot de passe maîtreGarde les données chiffrées, même si une copie de la base circuleChaque utilisateur le choisit, long et propre à ce coffre
Double authentificationSans elle, le wiki rappelle que deviner un mot de passe par force brute reste possible en théorieDans chaque compte ; une politique d’organisation peut l’exiger
HTTPSChiffre le trajet entre le client et le serveurLe proxy inverse
Inscriptions ferméesEmpêche un inconnu de se créer un compteSIGNUPS_ALLOWED
Indices de mot de passeAffichés sur la page, ils aideraient à deviner un mot de passe ; la version 1.37.5 les garde masqués par défautLaissez SHOW_PASSWORD_HINT à false ; PASSWORD_HINTS_ALLOWED les retire tout à fait
Limite des tentativesFreine les essais depuis une même adresse, connexion et /adminLOGIN_RATELIMIT_SECONDS et ADMIN_RATELIMIT_SECONDS
Fail2banBloque les adresses après trop d’échecs, ce que le wiki juge particulièrement important pour une instance publiqueSur 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é.

Trois réglages de plus, tirés du guide de durcissement

SQLite, MariaDB ou PostgreSQL

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.

BaseMise en placeSauvegarde
SQLiteAucune : un fichier, vw-data/db.sqlite3La commande /vaultwarden backup, ou la copie du dossier, service arrêté
MariaDB ou MySQLVotre serveur de base, et DATABASE_URL en mysql://Un export de la base, en plus du dossier vw-data
PostgreSQLVotre serveur de base, et DATABASE_URL en postgresql://Un export de la base, en plus du dossier vw-data
compose.yaml, dans environment (PostgreSQL)
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.

Les e-mails : la configuration SMTP

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 :

compose.yaml, dans environment
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}

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 :

Terminal
timeout 5 bash -c 'cat < /dev/null > /dev/tcp/smtp.example.com/587'; echo $?

Les sauvegardes

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émentCe qu’il gardeÀ sauvegarder
db.sqlite3La quasi-totalité des données : comptes, organisations, coffresObligatoire
attachments/Les pièces jointes, stockées hors de la baseObligatoire
config.jsonLa configuration de la page d’administration, dont des données sensibles en clairRecommandé, chiffré
rsa_key*Les clés qui signent les sessions ; les perdre déconnecte les utilisateursRecommandé, chiffré
sends/Les fichiers envoyés par Send, éphémères par natureFacultatif
icon_cache/Les icônes des sites, téléchargées à nouveau au besoinFacultatif

La base, service en marche

Depuis la version 1.32.1, Vaultwarden sait sauvegarder sa base SQLite lui-même, sans arrêt du service :

Terminal
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.

Tout le dossier, service arrêté

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 :

Terminal, dans le dossier du compose.yaml
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.

Restaurer

  1. Arrêtez Vaultwarden.
  2. Remplacez chaque fichier ou dossier de vw-data par sa version sauvegardée.
  3. Si la base vient de /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.
  4. Relancez, puis vérifiez que vous pouvez ouvrir le coffre.

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.

Les mises à jour

Le wiki donne deux commandes, depuis le dossier du compose.yaml. Le dossier de données reste en place :

Terminal
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.

Qui fait quoi sur un VPS infogéré

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.

SujetNos équipesVous
Le serveurMises à jour du système et de la sécurité, interventions sur le serveur comprisesLe moment qui convient à votre activité
La supervisionServeur suivi 24 h/24 et 7 j/7, avec intervention sans attendre votre appelLa lecture des journaux de votre instance
VaultwardenSuivi proactif : erreurs, lenteurs et espace disque repérés, correction recommandéeSon installation, ses mises à jour et ses réglages, que vous appliquez, vous ou votre assistant IA
Les comptes et le coffreLe serveur qui les porte, surveillé et sauvegardéLes utilisateurs, les invitations, les mots de passe maîtres et la double authentification
Les sauvegardesChaque nuit, chiffrées et gardées hors de la machine ; restauration compriseLes copies propres à Vaultwarden, et la demande de restauration, quand vous en avez besoin
La migrationVotre serveur actuel migré, offertLe 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.

Vaultwarden, sur un serveur tenu pour vous

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.

Découvrir les VPS infogérés

Questions fréquentes

Vaultwarden est-il gratuit pour une entreprise ?

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.

Vaultwarden fonctionne-t-il avec les applications Bitwarden ?

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é.

Comment installer Vaultwarden avec Docker Compose ?

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.

Comment désactiver les inscriptions sur Vaultwarden ?

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.

Comment configurer le jeton d'administration de Vaultwarden ?

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.

Qu'est-ce qui protège un coffre Vaultwarden ?

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.

Comment sauvegarder Vaultwarden ?

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-t-il Vaultwarden ?

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.

Sources et documentation officielle

Contactez-nous