Zum Hauptinhalt springen

Stefan Wüstner | WunderbarIT

Passbolt mit Docker Compose installieren und per Nginx absichern

Passbolt ist ein Open-Source-Passwortmanager für Teams, den du komplett selbst hosten kannst. Mit Docker Compose läuft die Community Edition (CE) samt Datenbank in wenigen Minuten. Voraussetzung: Docker und das Compose-Plugin sind installiert – siehe Docker unter Ubuntu installieren und Docker mit Docker-Compose. Offizielle Webseite: passbolt.com.

Voraussetzungen

  • Eine Domain (z. B. passbolt.example.de), die per DNS auf deinen Server zeigt
  • Ein funktionierender SMTP-Server – Passbolt verschickt Einladungen und Benachrichtigungen per E-Mail
  • Aktive Zeitsynchronisation (NTP), wichtig für die GPG-Schlüssel

Passbolt installieren

1.) Projektordner anlegen und hineinwechseln:

mkdir -p ~/passbolt && cd ~/passbolt

2.) Offizielle Compose-Datei und Prüfsumme herunterladen:

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

3.) Datei prüfen – die Ausgabe muss docker-compose-ce.yaml: OK lauten:

sha512sum -c docker-compose-ce-SHA512SUM.txt

4.) docker-compose-ce.yaml anpassen: Domain, ein eigenes Datenbank-Passwort (an beiden Stellen gleich) und deine SMTP-Daten eintragen:

services:
  db:
    image: mariadb:10.11
    restart: unless-stopped
    environment:
      MYSQL_RANDOM_ROOT_PASSWORD: "true"
      MYSQL_DATABASE: "passbolt"
      MYSQL_USER: "passbolt"
      MYSQL_PASSWORD: "EigenesDbPasswort"
    volumes:
      - database_volume:/var/lib/mysql

  passbolt:
    image: passbolt/passbolt:latest-ce
    restart: unless-stopped
    depends_on:
      - db
    environment:
      APP_FULL_BASE_URL: https://passbolt.example.de
      DATASOURCES_DEFAULT_HOST: "db"
      DATASOURCES_DEFAULT_USERNAME: "passbolt"
      DATASOURCES_DEFAULT_PASSWORD: "EigenesDbPasswort"
      DATASOURCES_DEFAULT_DATABASE: "passbolt"
      EMAIL_DEFAULT_FROM_NAME: "Passbolt"
      EMAIL_DEFAULT_FROM: "passbolt@example.de"
      EMAIL_TRANSPORT_DEFAULT_HOST: "smtp.example.de"
      EMAIL_TRANSPORT_DEFAULT_PORT: 587
      EMAIL_TRANSPORT_DEFAULT_USERNAME: "passbolt@example.de"
      EMAIL_TRANSPORT_DEFAULT_PASSWORD: "SmtpPasswort"
      EMAIL_TRANSPORT_DEFAULT_TLS: "true"
    volumes:
      - gpg_volume:/etc/passbolt/gpg
      - jwt_volume:/etc/passbolt/jwt
    command: ["/usr/bin/wait-for.sh", "-t", "0", "db:3306", "--", "/docker-entrypoint.sh"]
    ports:
      - 80:80
      - 443:443

volumes:
  database_volume:
  gpg_volume:
  jwt_volume:

5.) Container im Hintergrund starten und die Logs verfolgen, bis Passbolt bereit ist:

docker compose -f docker-compose-ce.yaml up -d
docker compose -f docker-compose-ce.yaml logs -f passbolt

Admin-Konto anlegen

6.) Den ersten Administrator registrieren – Mail-Adresse und Namen anpassen:

docker compose -f docker-compose-ce.yaml exec passbolt su -m -c "/usr/share/php/passbolt/bin/cake passbolt register_user -u admin@example.de -f Max -l Mustermann -r admin" -s /bin/sh www-data

7.) Den ausgegebenen Link im Browser öffnen, die Passbolt-Browsererweiterung installieren, eine sichere Passphrase festlegen und das Recovery Kit sicher aufbewahren. Weitere Benutzer lädst du danach bequem über die Weboberfläche ein.

Hinweis: Ohne Reverse Proxy nutzt der Container ein selbstsigniertes Zertifikat – der Browser zeigt deshalb eine Warnung. Für den Produktivbetrieb empfiehlt sich die folgende Nginx-Variante mit einem gültigen Zertifikat.

Optional: Passbolt hinter Nginx betreiben

Nginx übernimmt HTTPS mit deinem eigenen Zertifikat (z. B. von Let’s Encrypt) und leitet die Anfragen an Passbolt weiter. Passbolt selbst ist dann nicht mehr direkt von außen erreichbar. Mehr zu Nginx als Reverse Proxy findest du auch in NGINX mit NTLM für Exchange.

8.) Ordner anlegen und das Zertifikat bereitstellen (Beispiel mit Certbot):

mkdir -p ~/passbolt/nginx ~/passbolt/certs
sudo cp /etc/letsencrypt/live/passbolt.example.de/fullchain.pem ~/passbolt/certs/
sudo cp /etc/letsencrypt/live/passbolt.example.de/privkey.pem ~/passbolt/certs/

9.) Nginx-Konfiguration als nginx/passbolt.conf anlegen:

server {
    listen 80;
    server_name passbolt.example.de;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    http2 on;
    server_name passbolt.example.de;

    ssl_certificate     /etc/nginx/certs/fullchain.pem;
    ssl_certificate_key /etc/nginx/certs/privkey.pem;
    ssl_protocols       TLSv1.2 TLSv1.3;
    client_max_body_size 10M;

    location / {
        proxy_pass https://passbolt:443;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

10.) In der docker-compose-ce.yaml beim Dienst passbolt die ports entfernen und den Dienst nginx ergänzen:

  passbolt:
    # ... alles wie oben, aber den Block "ports:" entfernen

  nginx:
    image: nginx:alpine
    restart: unless-stopped
    depends_on:
      - passbolt
    ports:
      - 80:80
      - 443:443
    volumes:
      - ./nginx/passbolt.conf:/etc/nginx/conf.d/default.conf:ro
      - ./certs:/etc/nginx/certs:ro

11.) Stack neu starten und die Nginx-Konfiguration prüfen – Passbolt ist danach unter https://passbolt.example.de mit gültigem Zertifikat erreichbar:

docker compose -f docker-compose-ce.yaml up -d
docker compose -f docker-compose-ce.yaml exec nginx nginx -t

Offizielle Anleitung: Passbolt CE mit Docker installieren · passbolt_docker auf GitHub

#Passbolt #Docker #DockerCompose #Nginx #Passwortmanager #SelfHosted #Security

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Consent Management Platform von Real Cookie Banner