Aller au contenu

Guide d'installation Vaultwarden avec Docker et Apache

Ce guide décrit l'installation complète de Vaultwarden (gestionnaire de mots de passe auto-hébergé) sur Debian 12 avec Docker, Apache en reverse proxy et SSL.

📋 Prérequis

  • Serveur Debian 12
  • Accès root ou sudo
  • Nom de domaine configuré (ex: vault.domain.eu)
  • Ports 80 et 443 ouverts dans le pare-feu
  • Docker et Docker Compose installés

🔧 1. Installation des dépendances

# Mise à jour du système
apt update && apt upgrade -y

# Installation d'Apache et des modules nécessaires
apt install apache2 certbot python3-certbot-apache -y

# Activation des modules Apache
a2enmod proxy proxy_http ssl headers rewrite

# Redémarrage d'Apache
systemctl restart apache2

🐳 2. Installation de Docker et Docker Compose

Si Docker n'est pas déjà installé :

# Installation de Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh

# Installation de Docker Compose
apt install docker-compose -y

# Vérification
docker --version
docker-compose --version

📁 3. Création de la structure Vaultwarden

# Création du répertoire
mkdir -p /opt/vaultwarden
cd /opt/vaultwarden

🌐 4. Configuration DNS

Créez un enregistrement DNS A ou CNAME pointant vers votre IP publique :

vault.domain.eu → Votre_IP_Publique

Vérifiez avec :

dig vault.domain.eu
# ou
nslookup vault.domain.eu

Attendez que la propagation DNS soit complète avant de continuer.

🔐 5. Génération du certificat SSL avec Certbot

Étape 1 : Créer un vhost Apache temporaire

nano /etc/apache2/sites-available/vault.domain.eu.conf

Contenu du vhost temporaire :

<VirtualHost *:80>
    ServerName vault.domain.eu
    ServerAdmin admin@domain.eu
    DocumentRoot /var/www/html

    ErrorLog ${APACHE_LOG_DIR}/vault-error.log
    CustomLog ${APACHE_LOG_DIR}/vault-access.log combined
</VirtualHost>

Étape 2 : Activer le site et générer le certificat

# Activer le site
a2ensite vault.domain.eu.conf

# Tester la configuration
apachectl configtest

# Recharger Apache
systemctl reload apache2

# Générer le certificat SSL avec Certbot
certbot --apache -d vault.domain.eu

Certbot va vous poser quelques questions : - Email pour les notifications : indiquez votre email - Accepter les conditions : Oui - Redirection HTTPS automatique : Oui (recommandé)

🔧 6. Configuration Apache complète (reverse proxy)

Maintenant que le certificat est créé, remplacez le vhost par la configuration complète :

nano /etc/apache2/sites-available/vault.domain.eu.conf

Contenu complet du vhost :

<VirtualHost *:80>
    ServerName vault.domain.eu
    ServerAdmin admin@domain.eu

    # Redirection automatique vers HTTPS
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]

    ErrorLog ${APACHE_LOG_DIR}/vault-error.log
    CustomLog ${APACHE_LOG_DIR}/vault-access.log combined
</VirtualHost>

<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName vault.domain.eu
    ServerAdmin admin@domain.eu

    # ========== CONFIGURATION SSL ==========
    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/vault.domain.eu/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/vault.domain.eu/privkey.pem
    Include /etc/letsencrypt/options-ssl-apache.conf

    # ========== HEADERS DE SÉCURITÉ ==========

    # Force HTTPS pendant 1 an
    Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"

    # Empêche l'intégration dans une iframe
    Header always set X-Frame-Options "DENY"

    # Empêche le navigateur de deviner le type de contenu
    Header always set X-Content-Type-Options "nosniff"

    # Ne pas envoyer de referrer vers d'autres sites
    Header always set Referrer-Policy "same-origin"

    # Désactive les fonctionnalités inutiles du navigateur
    Header always set Permissions-Policy "geolocation=(), microphone=(), camera=(), payment=(), usb=(), magnetometer=(), gyroscope=(), accelerometer=()"

    # Content Security Policy - stricte pour Vaultwarden
    Header always set Content-Security-Policy "default-src 'self'; script-src 'self' 'wasm-unsafe-eval'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https://haveibeenpwned.com; connect-src 'self' https://api.pwnedpasswords.com https://api.2fa.directory https://2fa.directory; frame-ancestors 'none'; base-uri 'self'; form-action 'self';"

    # Supprime les headers qui révèlent des infos serveur
    Header always unset X-Powered-By
    Header always unset Server

    # ========== CONFIGURATION REVERSE PROXY ==========

    ProxyPreserveHost On
    ProxyRequests Off

    # Transmet l'IP réelle du client
    RequestHeader set X-Real-IP %{REMOTE_ADDR}s
    RequestHeader set X-Forwarded-For %{REMOTE_ADDR}s
    RequestHeader set X-Forwarded-Proto https

    # Proxy vers le conteneur Docker Vaultwarden
    ProxyPass / http://127.0.0.1:8080/
    ProxyPassReverse / http://127.0.0.1:8080/

    # Support WebSocket (notifications en temps réel)
    RewriteEngine On
    RewriteCond %{HTTP:Upgrade} websocket [NC]
    RewriteCond %{HTTP:Connection} upgrade [NC]
    RewriteRule ^/?(.*) "ws://127.0.0.1:8080/$1" [P,L]

    # ========== LOGS ==========

    ErrorLog ${APACHE_LOG_DIR}/vault-ssl-error.log
    CustomLog ${APACHE_LOG_DIR}/vault-ssl-access.log combined
</VirtualHost>
</IfModule>

Tester et appliquer la configuration

# Tester la configuration Apache
apachectl configtest

# Si "Syntax OK", recharger Apache
systemctl reload apache2

# Vérifier le statut
systemctl status apache2

🔒 7. Configuration de la sécurité globale Apache

Pour améliorer la sécurité globale du serveur Apache :

nano /etc/apache2/conf-enabled/security.conf

Modifiez ou ajoutez ces lignes :

ServerTokens Prod
ServerSignature Off

Rechargez Apache :

systemctl reload apache2

🔑 8. Génération du token admin sécurisé

Étape 1 : Créer un mot de passe robuste

Choisissez un mot de passe mémorisable et robuste. Recommandations : - Au moins 16 caractères - Mélange de majuscules, minuscules, chiffres - Caractères spéciaux : @, !, -, _, . (préférez ces caractères) - Évitez si possible : $, `, ", ', \ (compliquent l'échappement)

Exemples : - Admin@Vault2024!Secure - MonVault-Super.Securise2024! - Gestionnaire!MotsDePasse@2024

⚠️ TRÈS IMPORTANT : Sauvegardez ce mot de passe dans un endroit sûr ! Vous en aurez besoin pour accéder à l'interface admin (/admin).

Étape 2 : Générer le hash Argon2

Il existe plusieurs méthodes pour générer le hash :

Méthode 1 : Via un conteneur Docker temporaire (avant le lancement)

docker run --rm -it vaultwarden/server:latest sh -c '/vaultwarden hash'

La commande vous demandera de taper votre mot de passe deux fois.

Méthode 2 : Via le conteneur en cours (après le lancement)

docker exec -it vaultwarden sh -c '/vaultwarden hash'

Méthode 3 : Avec argon2 installé sur le système

echo -n "VotreMotDePasse" | argon2 "$(openssl rand -base64 32)" -e -id -k 65540 -t 3 -p 4

Exemple de hash obtenu :

$argon2id$v=19$m=65540,t=3,p=4$bXBGMENkdGR5RnZHN01BMQ$T1uQCvbn/9MNl8aXqNnP7mF6rMYBMlXPBxBiDONqrZM

Copiez ce hash complet (il commence par $argon2id$v=19$...)

🐳 9. Configuration Docker Compose

Créer le fichier docker-compose.yml

cd /opt/vaultwarden
nano docker-compose.yml

Contenu du docker-compose.yml :

version: '3.8'

services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: unless-stopped
    environment:
      - DOMAIN=https://vault.domain.eu
      - SIGNUPS_ALLOWED=true
      - ADMIN_TOKEN=${VAULTWARDEN_ADMIN_TOKEN}
    volumes:
      - ./vw-data:/data
    ports:
      - "127.0.0.1:8080:80"

Explications : - DOMAIN : Votre domaine complet avec https:// - SIGNUPS_ALLOWED=true : Permet les inscriptions (à désactiver après votre première inscription) - ADMIN_TOKEN=${VAULTWARDEN_ADMIN_TOKEN} : Référence la variable définie dans le fichier .env - 127.0.0.1:8080:80 : Le port 8080 n'est accessible que localement (seul Apache peut y accéder) - ./vw-data:/data : Les données sont sauvegardées dans le dossier local vw-data

Créer le fichier .env

nano /opt/vaultwarden/.env

Contenu du fichier .env :

VAULTWARDEN_ADMIN_TOKEN='$argon2id$v=19$m=65540,t=3,p=4$bXBGMENkdGR5RnZHN01BMQ$T1uQCvbn/9MNl8aXqNnP7mF6rMYBMlXPBxBiDONqrZM'

⚠️ POINTS CRITIQUES : - Utilisez des guillemets simples '...' (pas de guillemets doubles) - Utilisez des $ simples (ne doublez PAS les $) - Remplacez par votre propre hash Argon2 complet - Le hash doit commencer par $argon2id$v=19$...

Pourquoi cette méthode ?

Contrairement à mettre le token directement dans docker-compose.yml, le fichier .env ne nécessite pas de doubler les $. C'est la méthode recommandée dans la documentation officielle de Vaultwarden car elle évite les problèmes d'échappement.

🚀 10. Lancement de Vaultwarden

cd /opt/vaultwarden

# Lancer Vaultwarden en arrière-plan
docker-compose up -d

Vérifier les logs

# Voir les logs en temps réel
docker-compose logs -f

# Ou voir juste les dernières lignes
docker-compose logs | tail -30

Vérifications importantes : - ✅ Aucun warning "You are using a plain text ADMIN_TOKEN" - ✅ Le serveur démarre sur le port 80 (interne au conteneur) - ✅ Aucune erreur visible

Vérifier que le conteneur tourne

docker-compose ps

Vous devriez voir :

NAME            IMAGE                          STATUS
vaultwarden     vaultwarden/server:latest     Up X minutes

✅ 11. Test et première connexion

11.1 Test de l'accès HTTPS

Ouvrez votre navigateur : https://vault.domain.eu

Vous devriez voir : - ✅ Certificat SSL valide (cadenas vert) - ✅ Page de connexion/inscription Vaultwarden - ✅ Aucune erreur de certificat

11.2 Accès à l'interface admin

Allez sur : https://vault.domain.eu/admin

Pour vous connecter : - Utilisez votre mot de passe en clair (celui que vous avez tapé pour générer le hash) - NE PAS utiliser le hash Argon2 - Exemple : si vous avez tapé Admin@Vault2024!Secure lors de la génération du hash, c'est ce mot de passe que vous utilisez ici

Si la connexion échoue : 1. Vérifiez que vous utilisez bien le mot de passe en clair, pas le hash 2. Vérifiez qu'il n'y a pas de fichier config.json qui override la configuration :

ls -la /opt/vaultwarden/vw-data/config.json

Si ce fichier existe et contient un ancien token, supprimez-le :

rm /opt/vaultwarden/vw-data/config.json
docker-compose restart

11.3 Créer votre premier compte utilisateur

  1. Retournez sur https://vault.domain.eu
  2. Cliquez sur "Créer un compte"
  3. Renseignez votre email et un mot de passe maître très robuste
  4. Validez et connectez-vous

⚠️ IMPORTANT : Le mot de passe maître ne peut PAS être récupéré. Si vous le perdez, vous perdez l'accès à toutes vos données. Sauvegardez-le dans un endroit sûr !

🔒 12. Sécurisation post-installation

12.1 Désactiver les inscriptions publiques

Une fois votre compte créé, désactivez les inscriptions pour éviter que n'importe qui puisse créer un compte :

nano /opt/vaultwarden/docker-compose.yml

Modifiez la ligne :

- SIGNUPS_ALLOWED=false

Redémarrez Vaultwarden :

docker-compose up -d

12.2 Configurer les paramètres dans l'interface admin

Connectez-vous à https://vault.domain.eu/admin et configurez :

Paramètres généraux : - Domain URL : vérifiez que c'est bien https://vault.domain.eu - Disable icon downloads : Si vous voulez économiser de la bande passante

Paramètres SMTP (optionnel mais recommandé) : - Permet d'envoyer des emails de vérification et d'invitation - Configurez avec votre serveur SMTP ou un service comme Gmail, Mailgun, etc.

Paramètres de sécurité : - Enable Two-Factor authentication : Activé par défaut (recommandé) - Invitations : Gérez qui peut inviter de nouveaux utilisateurs

N'oubliez pas de cliquer sur "Save" après chaque modification !

12.3 Tester les headers de sécurité

Vérifiez que votre installation est bien sécurisée :

  • SecurityHeaders.com : https://securityheaders.com/?q=vault.domain.eu
  • Mozilla Observatory : https://observatory.mozilla.org/

Vous devriez obtenir une note A ou A+.

12.4 Renouvellement automatique du certificat SSL

Certbot configure automatiquement un timer systemd pour renouveler les certificats. Vérifiez :

# Vérifier que le timer est actif
systemctl status certbot.timer

# Tester le renouvellement (dry-run)
certbot renew --dry-run

Le certificat sera renouvelé automatiquement tous les 60 jours.

🔧 13. Commandes utiles pour la gestion quotidienne

Gestion du conteneur Docker

cd /opt/vaultwarden

# Voir les logs en temps réel
docker-compose logs -f

# Voir les dernières lignes des logs
docker-compose logs --tail=50

# Arrêter Vaultwarden
docker-compose stop

# Démarrer Vaultwarden
docker-compose start

# Redémarrer Vaultwarden
docker-compose restart

# Arrêter et supprimer le conteneur (les données restent dans ./vw-data)
docker-compose down

# Mettre à jour Vaultwarden vers la dernière version
docker-compose pull
docker-compose up -d

# Voir l'état du conteneur
docker-compose ps

# Voir les statistiques de ressources (CPU, RAM)
docker stats vaultwarden

Gestion d'Apache

# Voir les logs Apache
tail -f /var/log/apache2/vault-ssl-error.log
tail -f /var/log/apache2/vault-ssl-access.log

# Tester la configuration
apachectl configtest

# Recharger Apache (sans interruption)
systemctl reload apache2

# Redémarrer Apache
systemctl restart apache2

# Voir l'état d'Apache
systemctl status apache2

Accès au shell du conteneur

# Ouvrir un shell dans le conteneur
docker exec -it vaultwarden /bin/sh

# Une fois dans le shell, vous pouvez explorer
ls -la /data/
exit

💾 14. Sauvegardes

14.1 Sauvegarde manuelle

# Arrêtez Vaultwarden avant la sauvegarde (recommandé)
cd /opt/vaultwarden
docker-compose stop

# Sauvegardez le répertoire data avec compression
tar -czf vaultwarden-backup-$(date +%Y%m%d-%H%M%S).tar.gz vw-data/

# Sauvegardez également les fichiers de configuration
cp docker-compose.yml docker-compose.yml.backup
cp .env .env.backup

# Redémarrez Vaultwarden
docker-compose start

# Déplacez la sauvegarde dans un endroit sûr
mv vaultwarden-backup-*.tar.gz /chemin/vers/sauvegardes/

14.2 Script de sauvegarde automatique

Créez un script de sauvegarde :

nano /opt/vaultwarden/backup.sh

Contenu :

#!/bin/bash

# Configuration
BACKUP_DIR="/var/backups/vaultwarden"
VAULTWARDEN_DIR="/opt/vaultwarden"
RETENTION_DAYS=30

# Créer le répertoire de sauvegarde s'il n'existe pas
mkdir -p "$BACKUP_DIR"

# Date actuelle
DATE=$(date +%Y%m%d-%H%M%S)

# Arrêter Vaultwarden
cd "$VAULTWARDEN_DIR"
docker-compose stop

# Créer la sauvegarde
tar -czf "$BACKUP_DIR/vaultwarden-backup-$DATE.tar.gz" vw-data/

# Redémarrer Vaultwarden
docker-compose start

# Supprimer les sauvegardes de plus de X jours
find "$BACKUP_DIR" -name "vaultwarden-backup-*.tar.gz" -mtime +$RETENTION_DAYS -delete

# Afficher un message
echo "Sauvegarde terminée : $BACKUP_DIR/vaultwarden-backup-$DATE.tar.gz"

Rendre le script exécutable :

chmod +x /opt/vaultwarden/backup.sh

Automatiser avec cron (sauvegarde quotidienne à 3h du matin) :

crontab -e

Ajoutez cette ligne :

0 3 * * * /opt/vaultwarden/backup.sh >> /var/log/vaultwarden-backup.log 2>&1

14.3 Restauration d'une sauvegarde

# Arrêter Vaultwarden
cd /opt/vaultwarden
docker-compose down

# Sauvegarder l'état actuel (au cas où)
mv vw-data vw-data.old

# Restaurer depuis la sauvegarde
tar -xzf /chemin/vers/vaultwarden-backup-YYYYMMDD-HHMMSS.tar.gz

# Redémarrer Vaultwarden
docker-compose up -d

# Vérifier les logs
docker-compose logs -f

🛡️ 15. Sécurité additionnelle avec Fail2ban

Fail2ban protège contre les attaques par force brute en bannissant les IP qui tentent trop de connexions échouées.

Installation

apt install fail2ban -y

Configuration du filtre Vaultwarden

nano /etc/fail2ban/filter.d/vaultwarden.conf

Contenu :

[INCLUDES]
before = common.conf

[Definition]
failregex = ^.*Username or password is incorrect\. Try again\. IP: <ADDR>\. Username:.*$
ignoreregex =

Configuration de la jail

nano /etc/fail2ban/jail.d/vaultwarden.local

Contenu :

[vaultwarden]
enabled = true
port = 80,443
filter = vaultwarden
action = iptables-allports[name=vaultwarden]
logpath = /opt/vaultwarden/vw-data/vaultwarden.log
maxretry = 5
bantime = 14400
findtime = 14400

Explications : - maxretry = 5 : 5 tentatives échouées maximum - bantime = 14400 : Bannissement de 4 heures (en secondes) - findtime = 14400 : Fenêtre de temps de 4 heures

Activer Fail2ban

# Redémarrer Fail2ban
systemctl restart fail2ban

# Vérifier le statut
systemctl status fail2ban

# Voir les jails actives
fail2ban-client status

# Voir les détails de la jail Vaultwarden
fail2ban-client status vaultwarden

🔄 16. Mise à jour de Vaultwarden

Vérifier la version actuelle

docker exec vaultwarden /vaultwarden --version

Mettre à jour vers la dernière version

cd /opt/vaultwarden

# Arrêter le conteneur
docker-compose down

# Sauvegarder les données (recommandé)
tar -czf vaultwarden-backup-avant-maj-$(date +%Y%m%d).tar.gz vw-data/

# Télécharger la dernière image
docker-compose pull

# Redémarrer avec la nouvelle version
docker-compose up -d

# Vérifier les logs
docker-compose logs -f

Revenir à une version précédente (rollback)

Si la mise à jour pose problème :

cd /opt/vaultwarden
docker-compose down

# Spécifier une version précise dans docker-compose.yml
nano docker-compose.yml

Modifiez :

image: vaultwarden/server:1.30.0  # Remplacez par la version souhaitée

Puis :

docker-compose up -d

🧪 17. Tests et diagnostic

Test de connexion au port 8080 (local)

curl http://127.0.0.1:8080

Vous devriez voir du HTML de la page Vaultwarden.

Test de connexion HTTPS

curl -I https://vault.domain.eu

Vérifiez : - Code HTTP 200 - Présence des headers de sécurité (HSTS, X-Frame-Options, etc.)

Vérifier les certificats SSL

openssl s_client -connect vault.domain.eu:443 -servername vault.domain.eu

Diagnostic Apache

# Lister les modules activés
apache2ctl -M | grep proxy
apache2ctl -M | grep ssl
apache2ctl -M | grep headers

# Vérifier les sites activés
ls -la /etc/apache2/sites-enabled/

# Tester la configuration
apachectl configtest

Diagnostic Docker

# Voir tous les conteneurs
docker ps -a

# Voir l'utilisation des ressources
docker stats vaultwarden

# Inspecter le conteneur
docker inspect vaultwarden

# Voir les variables d'environnement
docker exec vaultwarden env | grep ADMIN
docker exec vaultwarden env | grep DOMAIN

⚠️ 18. Problèmes courants et solutions

Problème : "Invalid admin token"

Causes possibles : 1. Vous utilisez le hash au lieu du mot de passe en clair 2. Un fichier config.json override la configuration

Solutions :

# Vérifier s'il existe un config.json
ls -la /opt/vaultwarden/vw-data/config.json

# Si oui, le supprimer
rm /opt/vaultwarden/vw-data/config.json
docker-compose restart

# Vérifier que la variable est bien passée au conteneur
docker exec vaultwarden env | grep ADMIN_TOKEN

Problème : "502 Bad Gateway"

Causes possibles : 1. Vaultwarden n'est pas démarré 2. Mauvaise configuration du proxy 3. Port 8080 déjà utilisé

Solutions :

# Vérifier que Vaultwarden tourne
docker-compose ps

# Vérifier les logs
docker-compose logs

# Vérifier que le port 8080 est bien écouté
netstat -tlnp | grep 8080

# Redémarrer tout
docker-compose restart
systemctl reload apache2

Problème : Warnings Docker Compose sur les variables

WARNING: The argon2id variable is not set. Defaulting to a blank string.

Cause : Les $ dans le hash ne sont pas correctement échappés dans docker-compose.yml.

Solution : Utilisez un fichier .env avec des guillemets simples et des $ simples (comme expliqué dans ce guide).

Problème : Certificat SSL invalide

Solutions :

# Renouveler le certificat manuellement
certbot renew --force-renewal

# Vérifier les certificats
certbot certificates

# Reconfigurer le domaine
certbot --apache -d vault.domain.eu

Problème : Impossibilité de se connecter après mise à jour

Solution :

# Vider le cache du navigateur (Ctrl+Shift+R)
# Ou essayer en navigation privée

# Vérifier les logs Vaultwarden
docker-compose logs -f

# Revenir à la version précédente si nécessaire
docker-compose down
# Modifier docker-compose.yml avec l'ancienne version
docker-compose up -d

📚 19. Ressources et documentation

Documentation officielle

  • Wiki Vaultwarden : https://github.com/dani-garcia/vaultwarden/wiki
  • Repository GitHub : https://github.com/dani-garcia/vaultwarden
  • Forum communautaire : https://github.com/dani-garcia/vaultwarden/discussions

Applications clientes Bitwarden

Vaultwarden est compatible avec tous les clients officiels Bitwarden :

  • Web : https://vault.domain.eu
  • Bureau : Windows, macOS, Linux - https://bitwarden.com/download/
  • Mobile : Android, iOS - Disponibles sur les stores
  • Extensions navigateur : Chrome, Firefox, Safari, Edge, etc.
  • CLI : Ligne de commande - https://bitwarden.com/help/cli/

Configuration des clients

Pour utiliser votre instance auto-hébergée :

  1. Ouvrez l'application cliente
  2. Avant de vous connecter, cliquez sur l'icône ⚙️ (paramètres)
  3. Dans "Serveur", entrez : https://vault.domain.eu
  4. Connectez-vous avec vos identifiants

Sécurité et bonnes pratiques

  • OWASP Top 10 : https://owasp.org/www-project-top-ten/
  • Mozilla SSL Configuration Generator : https://ssl-config.mozilla.org/
  • Let's Encrypt documentation : https://letsencrypt.org/docs/

📝 20. Checklist finale

Avant de considérer l'installation comme terminée, vérifiez :

  • DNS configuré et résolu correctement
  • Certificat SSL valide et auto-renouvelable
  • Apache configuré avec headers de sécurité
  • Vaultwarden démarre sans erreur
  • Accès HTTPS fonctionnel
  • Interface admin accessible avec le bon mot de passe
  • Compte utilisateur créé et fonctionnel
  • Inscriptions publiques désactivées (SIGNUPS_ALLOWED=false)
  • Token admin hashé avec Argon2
  • Sauvegarde automatique configurée
  • Fail2ban configuré (optionnel mais recommandé)
  • Tests de sécurité effectués (SecurityHeaders, Mozilla Observatory)
  • Documentation sauvegardée
  • Mots de passe admin et maître sauvegardés en lieu sûr

🎯 21. Points d'attention importants

Mot de passe admin vs mot de passe maître

Ne confondez pas : - Token admin : Pour accéder à /admin (interface d'administration du serveur) - Mot de passe maître : Pour accéder à votre coffre-fort personnel

Fichier config.json

Le fichier /opt/vaultwarden/vw-data/config.json est généré automatiquement quand vous sauvegardez des paramètres via l'interface admin. Les valeurs dans ce fichier ont priorité sur les variables d'environnement.

Si vous modifiez le fichier docker-compose.yml ou .env et que les changements ne sont pas pris en compte, vérifiez si config.json existe et override vos paramètres.

Sauvegardes critiques

Ce qui doit être sauvegardé absolument : - /opt/vaultwarden/vw-data/ : Toutes vos données - /opt/vaultwarden/docker-compose.yml : Configuration Docker - /opt/vaultwarden/.env : Variables d'environnement - Votre mot de passe admin (pour accéder à /admin) - Votre mot de passe maître (pour accéder à votre coffre)

HTTPS obligatoire

N'exposez jamais Vaultwarden sans HTTPS. Les mots de passe transitent en clair sur HTTP !

Mises à jour

  • Testez toujours les mises à jour sur une instance de test avant de les appliquer en production
  • Faites une sauvegarde avant toute mise à jour
  • Lisez les notes de version (changelog) avant de mettre à jour

🎉 Conclusion

Félicitations ! Votre instance Vaultwarden est maintenant opérationnelle et sécurisée.

Vous disposez maintenant d'un gestionnaire de mots de passe professionnel, auto-hébergé, compatible avec tous les clients Bitwarden, et totalement sous votre contrôle.

Profitez de votre nouveau coffre-fort numérique ! 🔐


Document créé le : $(date +%Y-%m-%d)
Version : 1.0
Auteur : Guide d'installation Vaultwarden
Testé sur : Debian 12, Docker 24.x, Apache 2.4.x