0 Votes

Code source wiki de Passbolt

Modifié par john le 2026/09/18 23:06

Masquer les derniers auteurs
john 1.1 1 Gestionnaire de mots de passe (édition communautaire). Les secrets sont chiffrés côté navigateur avec la clé OpenPGP de chaque utilisateur : le serveur ne peut pas les lire.
2
3 == Architecture ==
4
5 |=Conteneur|=Rôle
6 |passbolt|Application
7 |passbolt-db|Base MariaDB 10.11
8
9 La base est sur un réseau interne dédié (##passbolt-internal##), inaccessible aux autres conteneurs.
10
11 == Variables d'environnement ==
12
13 |=Variable|=Rôle
14 |##PB_DB_PASS##, ##PB_DB_ROOT_PASS##|Mots de passe de la base
15 |##PB_SMTP_FROM##, ##PB_SMTP_HOST##, ##PB_SMTP_PORT##|Envoi des courriels
16 |##PB_SMTP_USER##, ##PB_SMTP_PASS##, ##PB_SMTP_TLS##|Authentification SMTP
17
18 == Stack ==
19
20 {{code language="yaml"}}
21 services:
22 passbolt-db:
23 image: mariadb:10.11
24 container_name: passbolt-db
25 restart: unless-stopped
26 command: >
27 --character-set-server=utf8mb4
28 --collation-server=utf8mb4_unicode_ci
29 environment:
30 MARIADB_DATABASE: passbolt
31 MARIADB_USER: passbolt
32 MARIADB_PASSWORD: ${PB_DB_PASS}
33 MARIADB_ROOT_PASSWORD: ${PB_DB_ROOT_PASS}
34 volumes:
35 - <APPDATA>/passbolt/db:/var/lib/mysql
36 networks:
37 - passbolt-internal
38
39 passbolt:
40 image: passbolt/passbolt:latest-ce
41 container_name: passbolt
42 restart: unless-stopped
43 depends_on:
44 - passbolt-db
45 environment:
46 TZ: Europe/Paris
47 APP_FULL_BASE_URL: <URL_PASSBOLT>
48 DATASOURCES_DEFAULT_HOST: passbolt-db
49 DATASOURCES_DEFAULT_USERNAME: passbolt
50 DATASOURCES_DEFAULT_PASSWORD: ${PB_DB_PASS}
51 DATASOURCES_DEFAULT_DATABASE: passbolt
52 PASSBOLT_SECURITY_PROXIES_ACTIVE: "true"
53 PASSBOLT_SSL_FORCE: "true"
54 EMAIL_DEFAULT_FROM_NAME: Passbolt
55 EMAIL_DEFAULT_FROM: ${PB_SMTP_FROM}
56 EMAIL_TRANSPORT_DEFAULT_HOST: ${PB_SMTP_HOST}
57 EMAIL_TRANSPORT_DEFAULT_PORT: ${PB_SMTP_PORT}
58 EMAIL_TRANSPORT_DEFAULT_USERNAME: ${PB_SMTP_USER}
59 EMAIL_TRANSPORT_DEFAULT_PASSWORD: ${PB_SMTP_PASS}
60 EMAIL_TRANSPORT_DEFAULT_TLS: ${PB_SMTP_TLS}
61 PASSBOLT_GPG_SERVER_KEY_FINGERPRINT: <EMPREINTE_CLE_SERVEUR>
62 PASSBOLT_GPG_SERVER_KEY_PUBLIC: /etc/passbolt/gpg/serverkey.asc
63 PASSBOLT_GPG_SERVER_KEY_PRIVATE: /etc/passbolt/gpg/serverkey_private.asc
64 extra_hosts:
65 - "<DOMAINE_PASSBOLT>:host-gateway"
66 volumes:
67 - <APPDATA>/passbolt/gpg:/etc/passbolt/gpg
68 - <APPDATA>/passbolt/jwt:/etc/passbolt/jwt
69 - <APPDATA>/passbolt/gnupg:/var/lib/passbolt/.gnupg
70 - <APPDATA>/passbolt/logs:/var/log/passbolt
71 networks:
72 - passbolt-internal
73 - proxy
74
75 networks:
76 passbolt-internal:
77 driver: bridge
78 proxy:
79 external: true
80 {{/code}}
81
82 * ##PASSBOLT_SECURITY_PROXIES_ACTIVE## : Passbolt fait confiance aux en-têtes de SWAG pour connaître l'IP et le protocole du client.
83 * ##extra_hosts## : le domaine de Passbolt pointe vers l'hôte depuis le conteneur, pour que Passbolt puisse s'appeler lui-même par son URL publique (vérifications internes) malgré l'absence de hairpin NAT.
84 * Base en ##utf8mb4## : obligatoire pour les caractères spéciaux et les émojis dans les secrets.
85
86 == Fichiers critiques ==
87
88 |=Dossier|=Contenu
89 |##passbolt/gpg##|Clé OpenPGP du serveur (publique et privée)
90 |##passbolt/jwt##|Clés de signature des jetons de l'application mobile
91 |##passbolt/gnupg##|Trousseau GnuPG du serveur
92
93 {{warning}}
94 Sans la clé privée du serveur et son empreinte, une base restaurée est inutilisable. Chaque utilisateur doit aussi conserver son propre kit de récupération (sa clé privée et sa phrase secrète) : ni le serveur ni une sauvegarde ne permettent de retrouver ses secrets sans lui.
95 {{/warning}}
96
97 == Commandes ==
98
99 Les commandes d'administration s'exécutent avec l'utilisateur ##www-data## :
100
101 {{code language="bash"}}
102 # Diagnostic complet (configuration, base, clés, SSL, courriel)
103 docker exec passbolt su -s /bin/bash -c "/usr/share/php/passbolt/bin/cake passbolt healthcheck" www-data
104
105 # Créer un administrateur (envoie un lien d'inscription)
106 docker exec passbolt su -s /bin/bash -c "/usr/share/php/passbolt/bin/cake passbolt register_user -u <EMAIL> -f <PRENOM> -l <NOM> -r admin" www-data
107
108 # Tester l'envoi de courriel
109 docker exec passbolt su -s /bin/bash -c "/usr/share/php/passbolt/bin/cake passbolt send_test_email --recipient=<EMAIL>" www-data
110 {{/code}}
111
112 Après chaque mise à jour de l'image, lancer le ##healthcheck## : toutes les lignes doivent être au vert.
113
114 == Sauvegarde ==
115
116 * Base : dump SQL de ##passbolt-db## par le script de [[Sauvegarde>>Wiki Batcave John.Infrastructure.Sauvegarde.WebHome]].
117 * Clés et configuration : ##<APPDATA>/passbolt##, sauvegardé tel quel.