18/12/2025

Cybersécurité

Installer Passbolt sur votre serveur avec Docker

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/mysql devient ./database_volume:/var/lib/mysql
  • gpg_volume:/etc/passbolt/gpg devient ./gpg_volume:/etc/passbolt/gpg
  • jwt_volume:/etc/passbolt/jwt devient ./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é.

Créer un admin Passbolt en ligne de commande

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 :

author avatar
Florian BURNEL Co-founder of IT-Connect
Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.