Installer Passbolt sur votre serveur avec Docker
Sommaire
I. Présentation
Ce tutoriel explique comment déployer le gestionnaire de mots de passe Passbolt à l'aide de Docker. Que ce soit sur Linux ou Windows (avec WSL / Docker Desktop), vous pouvez utiliser ces instructions pour déployer Passbolt avec Docker.
Pour une prise en main complète de Passbolt, je vous invite à lire cet article :
Pour une autre méthode d'installation, consultez ces autres tutoriels :
II. Installer Passbolt avec Docker
Avant de commencer, assurez-vous que Docker est installé sur votre machine. Pour ma part, je vais utiliser une machine sous Debian 13 sur laquelle Docker a été installé (ce n'est qu'un exemple, vous pouvez utiliser un autre système). Si vous avez besoin d'aide pour l'installation, suivez ce tutoriel :
A. Créer les répertoires pour les conteneurs
La première étape consiste à préparer le serveur pour stocker les données de Passbolt. Comme j'en ai l'habitude, un répertoire avec le nom de la stack sera créé sous /opt/docker-compose/.
Exécutez la commande suivante pour créer le dossier passbolt sous ce répertoire, ainsi que tous les sous-répertoires nécessaires pour le stockage persistant des informations (le dossier certs est facultatif - voir ci-après).
sudo mkdir -p /opt/docker-compose/passbolt/{gpg_volume,jwt_volume,certs,database_volume}
Vous obtenez cette arborescence :
/opt/docker-compose/passbolt/
├── certs/
├── database_volume/
├── gpg_volume/
└── jwt_volume/
Quelques mots sur l'usage de ces répertoires :
certs: il sert à stocker le certificat et la clé privée associée pour les accès HTTPS à Passbolt. Il est en réalité facultatif si vous décidez de publier l'application via un reverse proxy, le certificat ne sera pas porté à ce niveau-là.database_volume: il sert à stocker les données de la base de données MariaDB.gpg_volume: il sert à stocker la paire de clés GPG du serveur Passbolt.jwt_volume: il sert à stocker des informations sur les jetons JWT.
Vous devez ensuite ajuster les permissions sur les deux répertoires, sinon Passbolt ne pourra pas écrire.
sudo chown www-data:www-data gpg_volume/
sudo chown www-data:www-data jwt_volume/
En fait, si vous ne modifiez pas les permissions, l'erreur suivante sera retournée :
passbolt-1 | gpg: revocation certificate stored as '/var/lib/passbolt/.gnupg/openpgp-revocs.d/8D5E3DE4C75094DE287873842B4CBEDCBAE4D379.rev'
passbolt-1 | -bash: line 1: /etc/passbolt/gpg/serverkey_private.asc: Permission denied
Quand c'est fait, passez à la suite.
B. Préparer le fichier Docker Compose
Nous allons récupérer le fichier Docker Compose mis à disposition par Passbolt, ce qui évite de partir de zéro. Nous en profiterons pour récupérer aussi un fichier contenant la somme de contrôle SHA512 du fichier, afin de vérifier son intégrité.
Positionnez-vous dans le répertoire /opt/docker-compose/passbolt/ et lancez ces deux commandes :
curl -LO https://download.passbolt.com/ce/docker/docker-compose-ce.yaml
curl -LO https://github.com/passbolt/passbolt_docker/releases/latest/download/docker-compose-ce-SHA512SUM.txt
Puis, exécutez la commande ci-dessous pour vérifier l'intégrité du fichier docker-compose-ce.yaml. Même si c'est plutôt rare, il n'est pas à exclure qu'un fichier soit corrompu (ou éventuellement altéré) lors du téléchargement : en vérifiant l'intégrité, on s'assure que ce n'est pas le cas. Le message Checksum OK s'affiche si tout est OK.
sha512sum -c docker-compose-ce-SHA512SUM.txt && echo "Checksum OK" || (echo "Bad checksum. Aborting" && rm -f docker-compose-ce.yaml)
Bien que le fichier soit, en principe, prêt à l'emploi, nous allons y apporter quelques modifications. Éditez le fichier :
sudo nano docker-compose-ce.yaml
Pour que les conteneurs utilisent les répertoires que nous avons créés précédemment, nous devons ajuster les directives sous volumes pour les deux conteneurs. Vous devez rajouter ./ devant chaque chemin local (partie de gauche).
database_volume:/var/lib/mysqldevient./database_volume:/var/lib/mysqlgpg_volume:/etc/passbolt/gpgdevient./gpg_volume:/etc/passbolt/gpgjwt_volume:/etc/passbolt/jwtdevient./jwt_volume:/etc/passbolt/jwt
Ce qui donne :

Puis, vous devez spécifier l'URL d'accès à l'application Passbolt en adaptant la variable d'environnement APP_FULL_BASE_URL. La valeur par défaut est : APP_FULL_BASE_URL: https://passbolt.local. Mon serveur sera accessible via cette adresse : https://passbolt.it-connect.local. Donc :
APP_FULL_BASE_URL: https://passbolt.it-connect.local
Note : en fonction de vos besoins et du contexte d'utilisation, vous pouvez définir un nom de domaine local ou public.
Ensuite, dans le bloc environment, à la suite des autres variables, déclarez les variables permettant de configurer l'envoi de mails. Vous devez donc spécifier le serveur SMTP, le numéro de port, l'adresse de l'expéditeur et les identifiants. Voici un exemple à réadapter dans votre contexte.
EMAIL_DEFAULT_FROM_NAME: "Passbolt - IT-Connect"
EMAIL_DEFAULT_FROM: "[email protected]"
EMAIL_TRANSPORT_DEFAULT_HOST: "smtp.it-connect.fr"
EMAIL_TRANSPORT_DEFAULT_PORT: "587"
EMAIL_TRANSPORT_DEFAULT_USERNAME: "[email protected]"
EMAIL_TRANSPORT_DEFAULT_PASSWORD: "MotDePasseCompte"
EMAIL_TRANSPORT_DEFAULT_TLS: "tls"
Ce qui donne :

Enregistrez le fichier et fermez-le pour le moment.
C. La gestion du certificat TLS
Compte tenu de la criticité de l'application Passbolt, il est essentiel d'accéder à l'application via une connexion HTTPS associée à un certificat valide. Vous pouvez tout à fait utiliser un reverse proxy pour publier l'application, et donc c'est le reverse proxy qui gérera le certificat et son renouvellement.
Si vous souhaitez faire sans, vous devez obtenir un certificat et l'associer au conteneur Passbolt. Dans cet exemple, le certificat pour passbolt.it-connect.local est délivré par une autorité de certification d'entreprise AD CS. La méthode utilisée est décrite dans cet article :
Que le certificat soit émis par une CA d'entreprise ou une CA publique, peu importe. L'essentiel étant de pousser les fichiers correspondant à la clé privée et au certificat numérique dans le répertoire /opt/docker-compose/passbolt/certs/.
sudo mv /home/flo/passbolt.it-connect.local.key /opt/docker-compose/passbolt/certs/
sudo mv /home/flo/passbolt.it-connect.local.cer /opt/docker-compose/passbolt/certs/
Puis, dans le fichier Docker Compose, vous devez ajouter deux entrées de volumes pour le conteneur Passbolt. Soit :
- ./certs/passbolt.it-connect.local.cer:/etc/ssl/certs/certificate.crt:ro
- ./certs/passbolt.it-connect.local.key:/etc/ssl/certs/certificate.key:ro
Ce qui donne :

Enregistrez et fermez le fichier.
D. Construire la stack Passbolt
Tout est prêt ! Désormais, lancez la commande suivante pour lancer la construction des conteneurs. Les images seront téléchargées et les conteneurs créés puis lancés.
docker compose -f docker-compose-ce.yaml up -d
Lancez dans la foulée cette seconde commande pour afficher les logs :
sudo docker compose -f docker-compose-ce.yaml logs -f
Vous devriez voir des journaux similaires à ceux-ci :

Patientez un instant, puis à l'aide d'un navigateur, tentez une connexion à Passbolt. Vous devriez obtenir une page telle que celle ci-dessous. Ne faites rien, retournez dans la ligne de commande...

E. Créer l'administrateur Passbolt
À l'aide de la console, nous allons exécuter une commande dans le conteneur passbolt pour créer un premier administrateur sur notre instance. Ce sera aussi le premier compte de l'instance. Vous devez préciser l'adresse e-mail, le prénom et le nom. Voici la commande complète (en une seule ligne) :
sudo docker compose -f docker-compose-ce.yaml exec passbolt su -m -c "/usr/share/php/passbolt/bin/cake passbolt register_user -u [email protected] -f Florian -l BURNEL -r admin" -s /bin/sh www-data
Ou sur plusieurs lignes pour une meilleure lisibilité :
sudo docker compose -f docker-compose-ce.yaml \
exec passbolt su -m -c "/usr/share/php/passbolt/bin/cake \
passbolt register_user \
-u [email protected] \
-f Florian \
-l BURNEL \
-r admin" -s /bin/sh www-data
Le message vert User saved successfully confirme la création du compte. Une URL est aussi précisée juste en dessous. Copiez cette URL et ouvrez-la avec votre navigateur préféré.

Vous ne serez pas redirigé vers une interface d'administration. Non, vous devez installer l'extension Passbolt dans votre navigateur. La page vous invite d'ailleurs à effectuer cette action dès maintenant.

Vous devez spécifier le mot de passe maître de votre compte Passbolt. C'est la seule information que vous devez mémoriser et que vous ne devez surtout pas perdre !
- Ce mot de passe (passphrase) sera utilisé pour chiffrer la clé privée générée juste après.
Sinon, vous ne pourrez plus accéder aux données de votre compte, même si vous avez la main sur le serveur, cela ne changera rien. Indiquez un mot de passe robuste et poursuivez.

Un fichier nommé passbolt-recovery-kit.txt est téléchargé sur votre PC. Il correspond à votre clé privée PGP. Elle est personnelle, doit être conservée et sauvegardée, et surtout, elle ne doit pas être partagée.

Vous devez ensuite choisir une couleur et définir une valeur basée sur trois caractères. Ces informations sont spécifiques à cet appareil et elles seront visibles lors d'une reconnexion, sur ce même appareil, à votre compte Passbolt. En fait, si vous ne voyez pas cette couleur et ce texte lors de la connexion, c'est qu'il y a potentiellement un risque pour la sécurité (phishing, par exemple).

Voilà, vous avez désormais accès à votre compte Passbolt !
D'une part, vous pouvez ajouter de premières informations dans votre coffre-fort, et d'autre part, vous pouvez administrer votre organisation puisque c'est un compte d'administration.

III. Conclusion
En suivant ce tutoriel, vous devriez être en mesure d'installer Passbolt avec Docker. Si vous souhaitez en savoir plus sur l'utilisation de Passbolt, consultez cet article :
Vous pouvez aussi consulter la documentation officielle :

