Connexion
Connexion

Comment Installer Bitwarden avec Docker

Comment Installer Bitwarden avec Docker
Hostman Team
Technical writer
Plateforme Docker
07.11.2025
Reading time: 7 min

Bitwarden est un gestionnaire de mots de passe gratuit et open source qui stocke les informations sensibles dans un coffre-fort chiffré. Il est développé en C# à l’aide de .NET Core et ASP.NET Core, et sa base de données repose sur T-SQL/SQL Server.

Bitwarden est un service cloud accessible via plusieurs applications clientes, ce qui le rend multiplateforme : via le web, des applications de bureau (Windows, macOS, Linux), des applications mobiles, des extensions de navigateur (Chrome, Firefox, Safari, Edge, Opera, Vivaldi, Brave, Tor), ou encore via l’interface en ligne de commande (CLI).

L’une des principales raisons d’utiliser Bitwarden est d’éviter les gestionnaires de mots de passe tiers, où les données sont stockées sur des serveurs externes. En le déployant sur votre propre serveur sécurisé, vous gardez un contrôle total sur vos informations.

Bitwarden repose sur un ensemble de conteneurs Docker, chacun contenant un composant fonctionnel distinct — comme la base de données ou le serveur web. Ainsi, l’installation et l’exécution de Bitwarden nécessitent un système de conteneurisation, en l’occurrence Docker.

Principales fonctionnalités de Bitwarden

  • Open source

  • Chiffrement des données via AES 256 bits

  • Prise en charge de l’authentification à deux facteurs (2FA)

  • Système d’audit et de vérification des mots de passe

  • Prise en charge de l’authentification biométrique

  • Possibilité d’héberger le serveur localement

  • Applications clientes multiplateformes sur tous les systèmes courants

Prérequis

Ce guide utilise des commandes pour les systèmes de type UNIX, notamment Debian/Ubuntu, fréquemment utilisés pour le déploiement d’applications serveur.

Avant d’installer et de configurer Bitwarden, assurez-vous que tous les paquets système sont à jour :

sudo apt update

sudo apt upgrade

Si votre serveur est neuf, installez quelques outils de base :

sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

Ensuite, assurez-vous que Docker et Docker Compose sont installés pour gérer les conteneurs Bitwarden.

Étape 1 : Installer Docker et ses composants

Ajoutez la clé GPG officielle de Docker, utilisée pour signer les paquets :

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Ajoutez ensuite le dépôt Docker pour obtenir la dernière version disponible :

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

Mettez à jour le système :

sudo apt update

Enfin, installez Docker et Docker Compose :

sudo apt install docker-ce docker-ce-cli containerd.io docker-compose

Étape 2 : Sécuriser l’installation de Bitwarden

Pour renforcer la sécurité, créez un utilisateur dédié avec des permissions limitées.

Créez le répertoire de Bitwarden :

sudo mkdir /opt/bitwarden

Créez l’utilisateur :

sudo adduser bitwarden

Attribuez les droits d’accès au répertoire :

sudo chmod -R 700 /opt/bitwarden

sudo chown -R bitwarden:bitwarden /opt/bitwarden

Autorisez l’utilisateur Bitwarden à exécuter des commandes Docker :

sudo usermod -aG docker bitwarden

Connectez-vous avec cet utilisateur :

su bitwarden

cd /opt/bitwarden

Étape 3 : Installer Bitwarden dans Docker et démarrer le serveur

Même sans connaissance approfondie de Docker, les développeurs de Bitwarden ont prévu un script d’installation automatisé.

Téléchargez-le et rendez-le exécutable :

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

Exécutez ensuite le script :

./bitwarden.sh install

Le script vous demandera plusieurs informations :

  • Le nom de domaine du serveur Bitwarden

  • Le nom de la base de données

  • Si vous souhaitez utiliser Let’s Encrypt pour obtenir un certificat SSL gratuit

Vous devrez également fournir un ID d’installation et une clé, que vous pouvez générer sur le site officiel de Bitwarden.

Étape 4 : Configurer un serveur de messagerie SMTP

Bien qu’optionnelle, la configuration d’un serveur SMTP est recommandée pour la gestion des connexions administratives. Modifiez le fichier ./bwdata/env/global.override.env et ajoutez-y les paramètres SMTP :

globalSettings__mail__smtp__host=smtp.gmail.com

globalSettings__mail__smtp__port=587

globalSettings__mail__smtp__ssl=true

globalSettings__mail__smtp__username=votre_email@gmail.com

globalSettings__mail__smtp__password=votre_mot_de_passe

adminSettings__admins=votre_email@gmail.com

Si vous maîtrisez Docker, vous pouvez utiliser un serveur mail conteneurisé, tel que docker-mailserver, particulièrement adapté à Bitwarden. Dans un scénario plus simple (mais moins sécurisé), vous pouvez également utiliser un service public comme Gmail :

globalSettings__mail__replyToEmail=votre_email@gmail.com

globalSettings__mail__smtp__host=smtp.gmail.com

globalSettings__mail__smtp__username=votre_email

globalSettings__mail__smtp__password=votre_mot_de_passe

globalSettings__mail__smtp__ssl=true

globalSettings__mail__smtp__port=587

globalSettings__mail__smtp__useDefaultCredentials=false

globalSettings__disableUserRegistration=true

Une fois configuré, Bitwarden enverra les notifications via votre compte Gmail. Assurez-vous d’activer l’option « autoriser les applications moins sécurisées » dans votre compte, sinon Google pourrait bloquer la connexion.

Si vous utilisez un autre fournisseur d’e-mails, renseignez ses paramètres SMTP (hôte, port, SSL, etc.) de manière similaire. En cas d’échec d’envoi, utilisez un outil de test SMTP en ligne pour vérifier et ajuster les paramètres.

Étape 5 : Démarrer le serveur et vérifier son fonctionnement

Démarrez le serveur à l’aide du même script :

./bitwarden.sh start

Accédez ensuite à l’adresse IP ou au domaine du serveur depuis un navigateur. Pour ouvrir le panneau d’administration, ajoutez /admin à la fin de l’URL.

La page vous demandera l’adresse e-mail renseignée dans le fichier global.override.env. Le serveur SMTP enverra un lien d’accès sans mot de passe à ce courriel.

Vous pouvez ensuite utiliser les applications Bitwarden (desktop, mobile ou web) pour vous connecter à votre serveur et gérer vos mots de passe en toute sécurité.

Arrêter et supprimer le serveur

En cas de dysfonctionnement ou si vous souhaitez réinstaller Bitwarden, arrêtez le service :

./bitwarden.sh stop

Supprimez le répertoire de données :

rm -r ~/bwdata

Puis réinstallez si nécessaire :

./bitwarden.sh install

Conclusion

L’installation de Bitwarden est simple grâce au script automatisé fourni par ses développeurs. Une fois configuré, vous pouvez sécuriser vos données sensibles avec ce puissant gestionnaire de mots de passe, en utilisant DNS, SSL et SMTP selon vos besoins. Pour aller plus loin, consultez la documentation officielle de Bitwarden, qui regorge de conseils et bonnes pratiques.

Plateforme Docker
07.11.2025
Reading time: 7 min

Similaire

Plateforme Docker

Configuration de registres Docker externes

Lorsque vous travaillez avec Docker, vous manipulez des images — des fichiers exécutables contenant tout ce qu’il faut pour exécuter une application : code source, bibliothèques et dépendances. Ces images sont stockées dans des dépôts spécialisés appelés registres, qui peuvent être privés ou publics. Le registre public le plus connu est Docker Hub, où vous pouvez trouver de nombreuses images officielles telles que Nginx, PostgreSQL, Alpine, Ubuntu, Node et MongoDB. Les utilisateurs peuvent créer un compte sur Docker Hub et y stocker leurs propres images ; par défaut, ils disposent d’un registre public et de trois registres privés. Docker Hub est le registre par défaut utilisé par Docker pour télécharger (pull) les images. Ce guide explique comment changer le registre par défaut de Docker pour en utiliser un autre. Utiliser des registres Docker externes Une méthode simple pour utiliser des registres externes consiste à recourir à ceux proposés par des fournisseurs tiers tels que Google ou Amazon. Voici une liste de registres publics que vous pouvez utiliser : URL du registre Fournisseur https://mirror.gcr.io Google https://public.ecr.aws Amazon https://quay.io Red Hat https://registry.access.redhat.com Red Hat https://registry.redhat.io Red Hat ⚠️ Remarque : l’utilisation de registres externes peut présenter des risques de sécurité. Procédez avec prudence. Suivez les étapes ci-dessous pour remplacer Docker Hub par un autre registre par défaut. Configuration sous Linux Ouvrez le fichier daemon.json avec un éditeur de texte. Si Docker est installé hors mode rootless, le fichier se trouve ici : /etc/docker/daemon.json S’il n’existe pas, créez-le avec : nano /etc/docker/daemon.json Pour Docker en mode rootless, le fichier se trouve dans le répertoire personnel de l’utilisateur : ~/.config/docker/daemon.json Créez-le si nécessaire : nano ~/.config/docker/daemon.json Ajoutez le paramètre suivant pour définir un nouveau registre par défaut (exemple : miroir Google) : {   "registry-mirrors": ["https://mirror.gcr.io"] } Enregistrez et fermez le fichier. Redémarrez ensuite le service Docker pour appliquer les changements : systemctl reload docker Désormais, Docker utilisera le nouveau registre pour les téléchargements.Par exemple, pour récupérer l’image Alpine depuis le miroir de Google : docker pull mirror.gcr.io/alpine Vous pouvez également spécifier une version précise : docker pull mirror.gcr.io/nginx:1.25.2 Configuration sous Windows (Docker Desktop) Ouvrez le fichier daemon.json, situé ici : C:\Users\<votre_nom_utilisateur>\.docker\daemon.json Ajoutez le paramètre suivant : {   "registry-mirrors": ["https://mirror.gcr.io"] } Enregistrez le fichier, puis redémarrez Docker. Faites un clic droit sur l’icône Docker dans la barre des tâches et sélectionnez Restart. Vous pouvez aussi effectuer cette configuration via l’interface graphique de Docker Desktop - allez dans Settings → Docker Engine, puis ajoutez : {   "registry-mirrors": ["https://mirror.gcr.io"] } Cliquez ensuite sur Apply & Restart pour appliquer les modifications. Après le redémarrage, Docker utilisera le nouveau registre pour les téléchargements. Par exemple, téléchargez une image curl : docker pull mirror.gcr.io/curlimages/curl Ou une version spécifique : docker pull mirror.gcr.io/node:21-alpine Utiliser Nexus comme registre Docker Il est également possible d’utiliser Nexus pour gérer vos images Docker. Nexus prend en charge les dépôts proxy, qui permettent de mettre en cache les images téléchargées depuis des registres externes comme Docker Hub. Ainsi, Nexus peut servir de registre proxy de mise en cache, pratique en cas d’indisponibilité d’un registre externe. Création d’un dépôt proxy dans Nexus Connectez-vous à Nexus avec un compte administrateur ou un utilisateur disposant des droits de création de dépôts. Accédez à Server Administration and Configuration → Repositories. Cliquez sur Create repository et sélectionnez le type docker (proxy). Renseignez les champs suivants : Name : donnez un nom unique au dépôt. Online : cochez cette option pour activer le dépôt. Proxy : si Nexus est derrière un proxy (comme Nginx), il n’est pas nécessaire de définir un port d’authentification.Sinon, attribuez un port unique pour HTTP ou HTTPS. Allow anonymous docker pull : cochez cette case pour autoriser le téléchargement d’images sans authentification.Si elle est décochée, une connexion sera requise. Remote storage : indiquez l’URL du registre externe, par exemple https://registry-1.docker.io pour Docker Hub. Une fois le dépôt créé, connectez-vous au registre Nexus si nécessaire : docker login <adresse_du_registre_nexus> Pour télécharger une image : docker pull <adresse_du_registre_nexus>/nom_image:tag Exemple : télécharger une image Python avec le tag 3.8.19-alpine : docker pull nexus-repo.com/python:3.8.19-alpine ⚠️ Conseil de sécurité : évitez d’utiliser le tag latest, car il peut contenir des bugs ou des vulnérabilités. Conclusion Cet article a présenté plusieurs méthodes pour télécharger et stocker des images Docker. L’utilisation de registres externes peut être utile lorsque Docker Hub est indisponible. Si vous ne faites pas confiance aux registres publics, vous pouvez toujours héberger votre propre registre Docker, privé ou public, via des solutions comme Nexus ou Harbor.
05 November 2025 · 5 min to read
Plateforme Docker

Exécuter Selenium avec Chrome dans Docker

Il est parfois utile d’exécuter Selenium en Python dans un conteneur Docker. Cela soulève plusieurs questions : quels sont les avantages de cette approche, comment assurer la compatibilité entre ChromeDriver et Chromium, et quelles sont les subtilités de la mise en œuvre ? Dans cet article, nous aborderons ces points essentiels et proposerons des solutions aux problèmes les plus fréquents. Pourquoi exécuter Selenium dans Docker ? L’exécution de Selenium dans un conteneur offre de nombreux avantages : 🧩 Portabilité – Vous pouvez facilement transférer votre environnement d’une machine à une autre sans conflit de versions ni dépendances spécifiques à un système d’exploitation. 🧱 Isolation – Le conteneur Selenium peut être remplacé ou mis à jour rapidement sans affecter d’autres composants du serveur. ⚙️ Compatibilité CI/CD – Une version conteneurisée de Selenium s’intègre parfaitement dans les pipelines CI/CD, permettant de recréer à chaque test un environnement propre et cohérent. Préparer un serveur Ubuntu pour Selenium avec Docker Avant de commencer, assurez-vous que Docker et Docker Compose sont installés : docker --version && docker compose version 💡 Dans certaines versions, la commande est docker-compose (avec un tiret) au lieu de docker compose. Si les outils sont installés, leurs versions s’afficheront. Sinon, installez-les avant de poursuivre. Exemple : exécuter Selenium dans Docker Lors du déploiement de Selenium dans des conteneurs Docker, il faut prendre en compte : l’architecture de l’hôte, les besoins fonctionnels, et la performance attendue. Les images officielles selenium/standalone-* sont prévues pour les processeurs AMD64 (x86_64), tandis que seleniarm/standalone-* sont adaptées aux architectures ARM (comme Apple Silicon ou les serveurs ARM64). Créez un fichier docker-compose.yml à la racine de votre projet : version: "3" services: app: build: . restart: always volumes: - .:/app depends_on: - selenium platform: linux/amd64 selenium: image: selenium/standalone-chromium:latest # For AMD64 # image: seleniarm/standalone-chromium:latest # For ARM64 container_name: selenium-container restart: unless-stopped shm_size: 2g ports: - "4444:4444" # Selenium WebDriver API - "7900:7900" # VNC Viewer environment: - SE_NODE_MAX_SESSIONS=1 - SE_NODE_OVERRIDE_MAX_SESSIONS=true - SE_NODE_SESSION_TIMEOUT=300 - SE_NODE_GRID_URL=http://localhost:4444 - SE_NODE_DETECT_DRIVERS=false Sélectionnez l’image adaptée à votre système en décommentant la bonne ligne. Le service app contiendra votre code Python principal. Voici un Dockerfile standard : # Use a minimal Python image FROM python:3.11-slim # Set working directory WORKDIR /app # Install Python dependencies COPY requirements.txt /app/ RUN pip install --no-cache-dir -r requirements.txt # Copy project files COPY . /app/ # Set environment variables (Chromium is in a separate container) ENV SELENIUM_REMOTE_URL="http://selenium:4444/wd/hub" # Run Python script CMD ["python", "main.py"] Cette configuration utilise une image Python minimale et installe automatiquement les dépendances requises. Script principal (main.py) import time # Used to create a delay for checking browser functionality import os from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.chrome.options import Options # WebDriver settings chrome_options = Options() chrome_options.add_argument("--no-sandbox") chrome_options.add_argument("--disable-dev-shm-usage") chrome_options.add_argument("--disable-gpu") chrome_options.add_argument("--disable-webrtc") chrome_options.add_argument("--hide-scrollbars") chrome_options.add_argument("--disable-notifications") chrome_options.add_argument("--start-maximized") SELENIUM_REMOTE_URL = os.getenv("SELENIUM_REMOTE_URL", "http://selenium:4444/wd/hub") driver = webdriver.Remote( command_executor=SELENIUM_REMOTE_URL, options=chrome_options ) # Open a test page driver.get("https://www.hostman.com") time.sleep(9999) # Shut down WebDriver driver.quit() requirements.txt attrs==25.1.0 certifi==2025.1.31 h11==0.14.0 idna==3.10 outcome==1.3.0.post0 PySocks==1.7.1 selenium==4.28.1 sniffio==1.3.1 sortedcontainers==2.4.0 trio==0.28.0 trio-websocket==0.11.1 typing_extensions==4.12.2 urllib3==2.3.0 websocket-client==1.8.0 wsproto==1.2.0 Lancer les conteneurs Démarrez les conteneurs : docker compose up -d Docker construira et lancera les conteneurs en arrière-plan. Pour vérifier leur état : docker compose ps Vous devriez voir deux conteneurs en cours d’exécution, indiquant que tout fonctionne correctement. Vous pouvez désormais interagir avec des sites web via le script Selenium. Déboguer Selenium dans Docker avec VNC Dans les images officielles Selenium (comme selenium/standalone-chrome ou seleniarm/standalone-chromium), l’accès direct au Chrome DevTools Protocol (CDP) est géré par Selenium Grid. Chaque session crée un nouveau port WebSocket, ce qui rend l’accès direct impossible depuis l’extérieur du conteneur. Les options telles que --remote-debugging-port=9229 sont donc ignorées ou remplacées. À la place, ces images incluent un serveur VNC (Virtual Network Computing) intégré, similaire à TeamViewer ou AnyDesk. ⚠️ Le mode headless doit être désactivé, car VNC diffuse l’écran réel du navigateur. Connectez-vous à l’interface web VNC via : http://<server_ip>:7900 Lors de la première connexion, un mot de passe sera demandé. Générez-le dans le conteneur Selenium : docker exec -it selenium-container bash x11vnc -storepasswd Entrez et confirmez le mot de passe, puis utilisez-le sur l’interface VNC. Vous pourrez alors visualiser et contrôler le navigateur géré par Selenium directement dans Docker. Cela permet d’ouvrir les DevTools, d’inspecter le DOM ou de suivre les requêtes réseau. Conclusion Exécuter Selenium dans des conteneurs Docker simplifie la gestion des environnements, réduit les conflits de versions et améliore la portabilité. Grâce à l’intégration de VNC, vous pouvez également effectuer des débogages visuels. Veillez simplement à : choisir l’image adaptée à votre architecture (AMD64 ou ARM64), et désactiver le mode headless si une interface graphique est nécessaire. Cette configuration offre une infrastructure de test flexible, stable et adaptée aux pipelines CI/CD modernes.
30 October 2025 · 6 min to read

Avez-vous des questions,
des commentaires ou
des préoccupations ?

Nos professionnels sont disponibles pour vous aider à tout moment,
que vous ayez besoin d'aide ou que vous ne sachiez pas par où commencer.
Envoyez-nous un e-mail
Hostman's Support