ANAVEM
Languageen
Comment déployer Bitwarden avec Docker pour la gestion de mots de passe auto-hébergée

Comment déployer Bitwarden avec Docker pour la gestion de mots de passe auto-hébergée

Déployez un gestionnaire de mots de passe Bitwarden prêt pour la production en utilisant des conteneurs Docker avec SSL, configuration de la base de données et renforcement de la sécurité pour un contrôle complet de vos identifiants.

Evan MaelEvan Mael
26 mars 2026 15 min
mediumbitwarden 10 étapes 15 min

Pourquoi déployer Bitwarden auto-hébergé avec Docker ?

L'auto-hébergement de Bitwarden vous donne un contrôle total sur votre infrastructure de gestion des mots de passe, garantissant que vos informations d'identification sensibles ne quittent jamais vos serveurs. Contrairement aux solutions basées sur le cloud, un déploiement auto-hébergé élimine les préoccupations d'accès aux données par des tiers tout en offrant les mêmes fonctionnalités robustes que l'offre commerciale de Bitwarden.

La conteneurisation Docker rend le déploiement de Bitwarden beaucoup plus gérable que les installations traditionnelles. La configuration officielle de Docker inclut la gestion automatisée des certificats SSL, l'orchestration de la base de données et la mise à l'échelle des services, le tout géré via une interface de script unique. Cette approche réduit la complexité de la configuration tout en maintenant une sécurité et une fiabilité de niveau production.

Qu'est-ce qui fait de Docker la méthode de déploiement préférée pour Bitwarden ?

L'implémentation Docker de Bitwarden utilise une architecture multi-conteneurs qui sépare efficacement les préoccupations. Le coffre-fort web, le serveur API, le fournisseur d'identité et la base de données fonctionnent chacun dans des conteneurs isolés, améliorant les limites de sécurité et rendant les mises à jour plus sûres. Le script officiel bitwarden.sh automatise toute l'orchestration de Docker Compose, gérant tout, des certificats SSL aux migrations de base de données.

L'approche conteneurisée simplifie également les procédures de sauvegarde et de récupération après sinistre. Les sauvegardes de base de données, les fichiers de configuration et les certificats SSL sont contenus dans des structures de répertoires prévisibles, ce qui facilite la mise en œuvre de stratégies de sauvegarde automatisées et de procédures de restauration.

Comment Bitwarden auto-hébergé se compare-t-il aux solutions cloud ?

Bitwarden auto-hébergé offre une fonctionnalité identique à la version cloud tout en offrant des contrôles de confidentialité supérieurs et des options de personnalisation. Vous pouvez implémenter des fournisseurs d'authentification personnalisés, intégrer des systèmes LDAP existants et maintenir des pistes d'audit complètes de toutes les tentatives d'accès. Le compromis est une responsabilité opérationnelle accrue : vous gérez les mises à jour, la surveillance et le renforcement de la sécurité plutôt que de compter sur l'infrastructure gérée de Bitwarden.

Guide de mise en oeuvre

Procédure complète

01

Créer un utilisateur système Bitwarden et une structure de répertoires

Tout d'abord, créez un utilisateur système dédié pour Bitwarden afin d'éviter de l'exécuter en tant que root. Cela suit les meilleures pratiques de sécurité et prévient les problèmes de permissions.

sudo useradd -r -m -d /opt/bitwarden -s /bin/false bitwarden
sudo mkdir -p /opt/bitwarden
sudo chown -R bitwarden:bitwarden /opt/bitwarden

Passez à l'utilisateur bitwarden et naviguez vers le répertoire d'installation :

sudo -u bitwarden -s /bin/bash
cd /opt/bitwarden
Avertissement : N'installez jamais Bitwarden en tant qu'utilisateur root. Cela crée des vulnérabilités de sécurité et des problèmes de permissions de fichiers difficiles à résoudre par la suite.

Vérifiez la configuration de l'utilisateur et du répertoire :

whoami
pwd
ls -la /opt/bitwarden

Vous devriez voir bitwarden comme utilisateur actuel et /opt/bitwarden comme répertoire actuel.

02

Télécharger et installer le script d'installation de Bitwarden

Téléchargez le script d'installation officiel de Bitwarden. Ce script automatise le processus de configuration et de mise en place de Docker Compose.

curl -Lso bitwarden.sh https://go.btwrdn.co/bw-sh
chmod 700 bitwarden.sh

Vérifiez que le script a été téléchargé correctement :

ls -la bitwarden.sh
head -5 bitwarden.sh

Vous devriez voir le fichier script avec les permissions d'exécution et le début du contenu du script shell.

Astuce pro : Vérifiez toujours les scripts téléchargés avant de les exécuter. Le script officiel de Bitwarden est signé et régulièrement mis à jour depuis la redirection go.btwrdn.co.
03

Obtenez l'ID d'installation et la clé de Bitwarden

Avant de lancer l'installation, vous devez enregistrer votre instance auto-hébergée avec Bitwarden pour obtenir un ID d'installation et une clé. Visitez https://bitwarden.com/host dans votre navigateur.

Remplissez le formulaire d'inscription :

  • Entrez votre adresse e-mail d'administrateur
  • Sélectionnez votre région (US ou EU)
  • Acceptez les conditions

Copiez l'ID d'installation et la clé d'installation qui sont générés. Vous en aurez besoin à l'étape suivante.

Avertissement : Gardez votre ID d'installation et votre clé en sécurité. Ceux-ci authentifient votre instance auto-hébergée avec les services de Bitwarden pour la validation de licence et les mises à jour.

Stockez temporairement ces valeurs dans des variables d'environnement pour un accès facile :

export BW_INSTALLATION_ID="your-installation-id-here"
export BW_INSTALLATION_KEY="your-installation-key-here"
04

Exécuter l'installation et la configuration initiales de Bitwarden

Exécutez le script d'installation pour configurer la configuration initiale :

./bitwarden.sh install

Le script vous demandera plusieurs valeurs de configuration :

  • Nom de domaine : Entrez votre domaine complet (par exemple, bitwarden.votredomaine.com)
  • Let's Encrypt SSL : Choisissez 'y' pour les certificats SSL automatiques
  • ID d'installation : Collez l'ID de l'étape 3
  • Clé d'installation : Collez la clé de l'étape 3
  • Base de données : Acceptez la valeur par défaut (MSSQL) ou spécifiez PostgreSQL

L'installation crée la structure de répertoires et télécharge les images Docker :

ls -la bwdata/
ls -la bwdata/env/

Vérifiez que l'installation a créé les fichiers nécessaires :

find bwdata/ -name "*.yml" -o -name "*.env" | head -10

Vous devriez voir des fichiers docker-compose et des fichiers de configuration d'environnement.

05

Configurer les variables d'environnement et les paramètres de la base de données

Modifiez la configuration de l'environnement global pour personnaliser votre déploiement :

nano bwdata/env/global.override.env

Ajoutez ou modifiez ces paramètres essentiels :

# Configuration du domaine
BW_DOMAIN=bitwarden.votredomaine.com

# Paramètres de la base de données (exemple PostgreSQL)
BW_DB_PROVIDER=postgresql
BW_DB_SERVER=db
BW_DB_DATABASE=bitwarden
BW_DB_USERNAME=bitwarden
BW_DB_PASSWORD=votre-mot-de-passe-fort-pour-la-base-de-données

# Identifiants d'installation
BW_INSTALLATION_ID=votre-id-d'installation
BW_INSTALLATION_KEY=votre-clé-d'installation

# Configuration SMTP pour les notifications par email
globalSettings__mail__smtp__host=smtp.votredomaine.com
globalSettings__mail__smtp__port=587
globalSettings__mail__smtp__ssl=false
globalSettings__mail__smtp__username=bitwarden@votredomaine.com
globalSettings__mail__smtp__password=votre-mot-de-passe-smtp

# Paramètres de sécurité
globalSettings__disableUserRegistration=true
globalSettings__requireHttps=true
Astuce pro : Utilisez PostgreSQL au lieu de MSSQL pour une meilleure utilisation des ressources et une gestion des sauvegardes plus facile. PostgreSQL utilise généralement 50% de mémoire en moins que MSSQL dans les déploiements Bitwarden.

Enregistrez le fichier et vérifiez la configuration :

cat bwdata/env/global.override.env | grep -E "BW_DOMAIN|BW_DB_PROVIDER"
06

Configurer les certificats SSL et le proxy inverse

Si vous utilisez Let's Encrypt (recommandé), assurez-vous que le DNS de votre domaine est correctement configuré et que les ports 80/443 sont accessibles. Le script d'installation gère automatiquement la génération des certificats.

Pour des certificats SSL personnalisés, placez-les dans le répertoire SSL :

mkdir -p bwdata/ssl/bitwarden.votredomaine.com/
# Copiez vos fichiers de certificat :
# cp votre-cert.crt bwdata/ssl/bitwarden.votredomaine.com/certificate.crt
# cp votre-private.key bwdata/ssl/bitwarden.votredomaine.com/private.key

Configurez les paramètres nginx si nécessaire :

nano bwdata/nginx/default.conf
Avertissement : Si vous utilisez Cloudflare, désactivez le proxy (réglez sur DNS uniquement) lors de la génération initiale du certificat SSL. Réactivez après l'émission des certificats pour éviter les échecs de validation de Let's Encrypt.

Testez que la configuration SSL fonctionnera :

openssl s_client -connect bitwarden.votredomaine.com:443 -servername bitwarden.votredomaine.com < /dev/null
07

Démarrer les services Bitwarden et vérifier le déploiement

Démarrez tous les services Bitwarden en utilisant le script de gestion :

./bitwarden.sh start

Surveillez le processus de démarrage et vérifiez l'état des conteneurs :

docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
docker logs bitwarden-api
docker logs bitwarden-web

Vérifiez que tous les conteneurs fonctionnent correctement :

docker ps | grep -E "bitwarden|postgres|mssql" | wc -l

Vous devriez voir 6 à 8 conteneurs en cours d'exécution (web, api, identity, admin, icons, notifications, events, database).

Testez l'interface web en visitant votre domaine :

curl -I https://bitwarden.yourdomain.com
echo "Visitez https://bitwarden.yourdomain.com dans votre navigateur"

La réponse devrait afficher HTTP 200 OK et vous devriez voir la page de connexion Bitwarden dans votre navigateur.

08

Créer un compte administrateur et configurer les paramètres de l'organisation

Accédez au panneau d'administration pour créer votre premier compte utilisateur. Naviguez vers https://bitwarden.yourdomain.com/admin dans votre navigateur.

Si l'enregistrement administrateur est désactivé, activez-le temporairement :

echo "globalSettings__disableUserRegistration=false" >> bwdata/env/global.override.env
./bitwarden.sh restart

Créez votre compte administrateur via l'interface web, puis désactivez immédiatement l'enregistrement :

sed -i 's/globalSettings__disableUserRegistration=false/globalSettings__disableUserRegistration=true/' bwdata/env/global.override.env
./bitwarden.sh restart

Vérifiez la création de votre compte et l'accès administrateur :

docker logs bitwarden-api | grep -i "user.*created"
docker logs bitwarden-identity | tail -20
Astuce pro : Configurez les politiques d'organisation immédiatement après la création du compte. Activez l'exigence d'authentification à deux facteurs et définissez des règles de complexité de mot de passe pour maintenir les normes de sécurité.

Testez la fonctionnalité de connexion en accédant au coffre et en créant une entrée de test pour vous assurer que tout fonctionne correctement.

09

Mettre en œuvre le renforcement de la sécurité et la stratégie de sauvegarde

Configurer fail2ban pour se protéger contre les attaques par force brute :

sudo apt install fail2ban -y
sudo nano /etc/fail2ban/jail.local

Ajouter la configuration de jail spécifique à Bitwarden :

[bitwarden]
enabled = true
port = 80,443
filter = bitwarden
logpath = /opt/bitwarden/bwdata/logs/api/*.txt
maxretry = 3
bantime = 3600
findtime = 600

Créer le filtre fail2ban :

sudo nano /etc/fail2ban/filter.d/bitwarden.conf
[Definition]
failregex = ^.*Invalid username or password.*.*$
ignoreregex =

Configurer les sauvegardes automatiques de la base de données et de la configuration :

mkdir -p /opt/bitwarden/backups
nano /opt/bitwarden/backup.sh
#!/bin/bash
BACKUP_DIR="/opt/bitwarden/backups"
DATE=$(date +%Y%m%d_%H%M%S)

# Sauvegarde de la base de données
docker exec bitwarden-db pg_dump -U bitwarden bitwarden > "$BACKUP_DIR/db_backup_$DATE.sql"

# Sauvegarde de la configuration
tar -czf "$BACKUP_DIR/config_backup_$DATE.tar.gz" -C /opt/bitwarden bwdata/env bwdata/ssl

# Conserver uniquement les sauvegardes des 7 derniers jours
find "$BACKUP_DIR" -name "*backup*" -mtime +7 -delete

Rendre le script de sauvegarde exécutable et l'ajouter à crontab :

chmod +x /opt/bitwarden/backup.sh
echo "0 2 * * * /opt/bitwarden/backup.sh" | crontab -

Vérifier la configuration de sécurité :

sudo fail2ban-client status bitwarden
ls -la /opt/bitwarden/backups/
10

Configurer les procédures de surveillance et de maintenance

Configurez la rotation des journaux pour éviter les problèmes d'espace disque :

sudo nano /etc/logrotate.d/bitwarden
/opt/bitwarden/bwdata/logs/*/*.txt {
    daily
    rotate 30
    compress
    delaycompress
    missingok
    notifempty
    copytruncate
}

Créez un script de vérification de l'état de santé pour surveiller le statut du service :

nano /opt/bitwarden/health-check.sh
#!/bin/bash
HEALTH_URL="https://bitwarden.yourdomain.com/alive"
STATUS=$(curl -s -o /dev/null -w "%{http_code}" "$HEALTH_URL")

if [ "$STATUS" != "200" ]; then
    echo "$(date): Échec de la vérification de l'état de santé de Bitwarden - HTTP $STATUS" >> /var/log/bitwarden-health.log
    # Optionnel : envoyer un email d'alerte ou redémarrer les services
    /opt/bitwarden/bitwarden.sh restart
else
    echo "$(date): Vérification de l'état de santé de Bitwarden réussie" >> /var/log/bitwarden-health.log
fi

Configurez la vérification de l'état de santé pour s'exécuter toutes les 5 minutes :

chmod +x /opt/bitwarden/health-check.sh
echo "*/5 * * * * /opt/bitwarden/health-check.sh" | crontab -

Configurez les notifications de mise à jour et créez une procédure de mise à jour :

nano /opt/bitwarden/update.sh
#!/bin/bash
echo "Démarrage du processus de mise à jour de Bitwarden..."
./bitwarden.sh updateself
./bitwarden.sh update
echo "Mise à jour terminée. Vérification du statut du service..."
docker ps --format "table {{.Names}}\t{{.Status}}"
echo "Journal de mise à jour : $(date)" >> /opt/bitwarden/update.log

Vérifiez la configuration de la surveillance :

chmod +x /opt/bitwarden/update.sh
tail -f /var/log/bitwarden-health.log &
./health-check.sh
kill %1
Astuce pro : Configurez une surveillance externe avec des outils comme Uptime Robot ou StatusCake pour recevoir des alertes lorsque votre instance Bitwarden tombe en panne. La surveillance interne ne sera pas utile si le serveur entier échoue.

Questions Fréquentes

Quelles sont les exigences système minimales pour Bitwarden auto-hébergé avec Docker ?+
Bitwarden nécessite un serveur Linux avec au moins 2 Go de RAM (4 Go recommandés pour la production), Docker Engine 20.10+ et les ports 80/443 accessibles depuis Internet. Le conteneur de base de données (PostgreSQL ou MSSQL) consomme généralement 1-2 Go de RAM, tandis que les conteneurs d'application nécessitent un autre 1-2 Go. Les exigences de stockage sont initialement minimales mais augmentent avec les données du coffre et les journaux.
Puis-je utiliser PostgreSQL au lieu de MSSQL avec le déploiement Docker de Bitwarden ?+
Oui, PostgreSQL est entièrement pris en charge et souvent préféré à MSSQL pour les déploiements auto-hébergés. Définissez BW_DB_PROVIDER=postgresql dans votre fichier global.override.env avec les identifiants de base de données appropriés. PostgreSQL utilise généralement moins de mémoire et offre de meilleures performances pour les déploiements plus petits tout en maintenant une compatibilité totale avec toutes les fonctionnalités de Bitwarden.
Comment sauvegarder et restaurer une installation Bitwarden Docker auto-hébergée ?+
La sauvegarde implique trois composants : le dump de la base de données, les fichiers de configuration et les certificats SSL. Utilisez docker exec pour exécuter pg_dump ou sqlcmd pour les sauvegardes de base de données, puis archivez les répertoires bwdata/env et bwdata/ssl. Pour la restauration, restaurez le dump de la base de données dans un nouveau conteneur de base de données et copiez les fichiers de configuration aux emplacements bwdata appropriés avant de démarrer les services.
Que se passe-t-il si je perds mon ID d'installation et ma clé Bitwarden ?+
L'ID d'installation et la clé authentifient votre instance auto-hébergée auprès des serveurs de licence de Bitwarden. En cas de perte, visitez https://bitwarden.com/host pour générer de nouvelles informations d'identification en utilisant la même adresse e-mail. Vous devrez mettre à jour les valeurs BW_INSTALLATION_ID et BW_INSTALLATION_KEY dans votre fichier global.override.env et redémarrer les services. Les données du coffre existantes restent inchangées.
Comment mettre à jour en toute sécurité un déploiement Docker Bitwarden auto-hébergé ?+
Utilisez les commandes de mise à jour intégrées : ./bitwarden.sh updateself met à jour le script de gestion, puis ./bitwarden.sh update récupère de nouvelles images de conteneurs et applique les modifications de configuration. Sauvegardez toujours votre base de données et votre configuration avant de mettre à jour. Le processus de mise à jour préserve les données et paramètres existants tout en appliquant automatiquement les correctifs de sécurité et les mises à jour de fonctionnalités.
Evan Mael
Écrit par

Evan Mael

Microsoft MCSA-certified Cloud Architect | Fortinet-focused. I modernize cloud, hybrid & on-prem infrastructure for reliability, security, performance and cost control - sharing field-tested ops & troubleshooting.

Discussion

Partagez vos réflexions et analyses

Connectez-vous pour participer