Afficher les derniers auteurs
| author | version | line-number | content |
|---|---|---|---|
| 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. |