Bitwarden ist ein Online Passwort Dienst, den ihr selbst hosten könnt. Dies hat für euch den Vorteil, dass ihr genau wisst, wo eure Daten gespeichert sind.

Nun zeige ich euch, wie ihr dies in wenigen Minuten mit Docker realisiert. Traefik dient uns hier als Reverse Proxy und stellt später den Dienst verschlüsselt per TLS bereit.

Wer Traefik noch nicht installiert hat, findet hier eine Anleitung, wie ihr dies schnell tun könnt.

Als Grundlage meiner Anleitung dient die offizielle Bitwarden Anleitung für Docker.

1. Ordner anlegen

Zuerst legen wir uns passende Ordner-Strukturen an.

mkdir -p /opt/containers/bitwarden/data

2. Docker Compose anlegen

Nun legen wir die eigentliche Docker Datei an

cd /opt/containers/bitwarden/
nano docker-compose.yml
version: '3'

services:
  bitwarden:
    image: bitwardenrs/server:latest
    restart: unless-stopped
    volumes:
       - /opt/containers/bitwarden/data:/data
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.bitwarden.entrypoints=http"
      - "traefik.http.routers.bitwarden.rule=Host(`bitwarden.euredomain.de`)" ## Hier anpassen ##
      - "traefik.http.middlewares.bitwarden-https-redirect.redirectscheme.scheme=https"
      - "traefik.http.routers.bitwarden.middlewares=bitwarden-https-redirect"
      - "traefik.http.routers.bitwarden-secure.entrypoints=https"
      - "traefik.http.routers.bitwarden-secure.rule=Host(`bitwarden.euredomain.de`)" ## Hier anpassen ##
      - "traefik.http.routers.bitwarden-secure.tls=true"
      - "traefik.http.routers.bitwarden-secure.tls.certresolver=http"
      - "traefik.http.routers.bitwarden-secure.service=bitwarden"
      - "traefik.http.services.bitwarden.loadbalancer.server.port=80"
      - "traefik.docker.network=proxy"
      - "traefik.http.routers.bitwarden-secure.middlewares=secHeaders@file"

    networks:
      - proxy

networks:
  proxy:
    external: true

Notwendige Anpassungen:

  • 2x eure Domain bei Traefik anpassen (bitwarden.euredomain.de“)

Diese Docker Compose Datei funktioniert nur, wenn ich euch mittels meiner Anleitung hier Traefik installiert habt. Sonst heißen einige Traefik Variablen wohl anders. Diese müsst ihr dann dementsprechend bei euch anpassen.

3. Bitwarden Server starten

Den Server startet ihr wie gewohnt mit folgendem Befehl:

docker-compose -f /opt/containers/bitwarden/docker-compose.yml up -d

4. Quellen

https://hub.docker.com/r/bitwarden/server

Teile diesen Beitrag
Christian

Categories:

5 Kommentare

  1. Hi Christian,

    vorab dein Blog ist klasse, der hat mir sehr geholfen.
    aber zu dem bitwardenrs hier hab ich eine frage.
    das ist doch nur das webfrontend in rust (not official)… wie flunche ich denn da das richtige bitwarden ran ?

    das ist eine container composition aus vielen microservicen:
    installier bar hierrueber:
    https://github.com/bitwarden/server/blob/master/scripts/bitwarden.sh

    gruesse
    Matthias

    ps
    ich habs nun hinbekommen dort traefik als reverse zu nehmen. (ich hab die tage mein ganzes homelab von nginx/certbot (old but gold – es hat funktioniert) zu traefik migriert, so bin ich auf deinen blog hier aufmerksam geworden.

    • Hallo Christian,
      Hallo Matthias
      Hallo Dee

      auch mir war die abgespreckte Version aus einer in meinen Augen nicht ausreichend verifizierten Quelle, nicht ganz geheuer. Deshalb ich mich ein paar Abende damit beschäftig die Originalversion von Bitwarden unter Docker und Traefik zu installieren. Den größten Teil der Konfiguration habe ich aus diesen beiden Beiträgen bei Reddit

      https://www.reddit.com/r/Bitwarden/comments/dja93a/selfhosted_bitwarden_behind_traefik_v20_reverse/

      https://www.reddit.com/r/selfhosted/comments/8ekjjh/bitwarden_traefik_docker_installation/

      Meine daraus resoltierenden Konfigurationsdateien sehen wie folgt aus:

      /opt/containers/bitwarden/bwdata/config.yml

      ——————-

      #
      # Note: After making changes to this file you need to run the `rebuild` or `update`
      # command for them to be applied.
      #
      # Full URL for accessing the installation from a browser. (Required)
      url: https://bitwarden.DEINEDOMAIN.de ########## Domain ändern
      #
      # Auto-generate the `./docker/docker-compose.yml` config file.
      # WARNING: Disabling generated config files can break future updates. You will be
      # responsible for maintaining this config file.
      # Template: https://github.com/bitwarden/server/blob/master/util/Setup/Templates/DockerCompose.hbs
      generate_compose_config: true
      #
      # Auto-generate the `./nginx/default.conf` file.
      # WARNING: Disabling generated config files can break future updates. You will be
      # responsible for maintaining this config file.
      # Template: https://github.com/bitwarden/server/blob/master/util/Setup/Templates/NginxConfig.hbs
      generate_nginx_config: true
      #
      # Docker compose file port mapping for HTTP. Leave empty to remove the port mapping.
      # Learn more: https://docs.docker.com/compose/compose-file/#ports
      http_port: 8080
      #
      # Docker compose file port mapping for HTTPS. Leave empty to remove the port mapping.
      # Learn more: https://docs.docker.com/compose/compose-file/#ports
      https_port: 8443
      #
      # Docker compose file version. Leave empty for default.
      # Learn more: https://docs.docker.com/compose/compose-file/compose-versioning/
      compose_version:
      #
      # Configure Nginx for SSL.
      ssl: false
      #
      # SSL versions used by Nginx (ssl_protocols). Leave empty for recommended default.
      # Learn more: https://wiki.mozilla.org/Security/Server_Side_TLS
      ssl_versions:
      #
      # SSL ciphersuites used by Nginx (ssl_ciphers). Leave empty for recommended default.
      # Learn more: https://wiki.mozilla.org/Security/Server_Side_TLS
      ssl_ciphersuites:
      #
      # Installation uses a managed Let’s Encrypt certificate.
      ssl_managed_lets_encrypt: false
      #
      # The actual certificate. (Required if using SSL without managed Let’s Encrypt)
      # Note: Path uses the container’s ssl directory. The `./ssl` host directory is mapped to
      # `/etc/ssl` within the container.
      ssl_certificate_path:
      #
      # The certificate’s private key. (Required if using SSL without managed Let’s Encrypt)
      # Note: Path uses the container’s ssl directory. The `./ssl` host directory is mapped to
      # `/etc/ssl` within the container.
      ssl_key_path:
      #
      # If the certificate is trusted by a CA, you should provide the CA’s certificate.
      # Note: Path uses the container’s ssl directory. The `./ssl` host directory is mapped to
      # `/etc/ssl` within the container.
      ssl_ca_path:
      #
      # Diffie Hellman ephemeral parameters
      # Learn more: https://security.stackexchange.com/q/94390/79072
      # Note: Path uses the container’s ssl directory. The `./ssl` host directory is mapped to
      # `/etc/ssl` within the container.
      ssl_diffie_hellman_path:
      #
      # Communicate with the Bitwarden push relay service (push.bitwarden.com) for mobile
      # app live sync.
      push_notifications: true
      #
      # Use a docker volume (`mssql_data`) instead of a host-mapped volume for the persisted database.
      # WARNING: Changing this value will cause you to lose access to the existing persisted database.
      # Learn more: https://docs.docker.com/storage/volumes/
      database_docker_volume: false
      #
      # Defines „real“ IPs in nginx.conf. Useful for defining proxy servers that forward the
      # client IP address.
      # Learn more: https://nginx.org/en/docs/http/ngx_http_realip_module.html
      real_ips:

      ——————-

      /opt/containers/bitwarden/bwdata/docker/docker-compose.override.yml
      (Achtung: im Gegensatz zu den Anleitungen von Christian heißt das Traefik-Netzwerk bei mir „Traefik“)
      ——————-

      version: ‚3‘

      services:
      mssql:
      labels:
      – traefik.enable=false
      networks:
      – default

      web:
      labels:
      – traefik.enable=false
      networks:
      – default

      attachments:
      labels:
      – traefik.enable=false
      networks:
      – default

      api:
      labels:
      – traefik.enable=false
      networks:
      – default

      identity:
      labels:
      – traefik.enable=false
      networks:
      – default

      admin:
      labels:
      – traefik.enable=false
      networks:
      – default

      icons:
      labels:
      – traefik.enable=false
      networks:
      – default

      nginx:
      labels:
      – traefik.enable=true
      – traefik.docker.network=traefik
      – traefik.port=8080
      – traefik.backend=bitwarden-nginx
      – traefik.frontend.rule=Host:bitwarden.DEINEDOMAIN.de
      – traefik.http.routers.bitwarden.entryPoints=https
      – traefik.http.routers.bitwarden.rule=Host(„bitwarden.DEINEDOMAIN.de“)
      # – traefik.http.middlewares.strip.stripprefix.prefixes=/
      – traefik.http.routers.bitwarden.tls=true
      – traefik.http.routers.bitwarden.tls.certresolver=http
      – traefik.http.services.bitwarden.loadbalancer.server.port=8080

      networks:
      – traefik
      – default

      networks:
      traefik:
      external: true

      ——————-

      Ich hoffe es hilft. Vielleicht macht Christian ja noch eine richte Anleitung daraus.

      Gruß aus Hamburg

      Hein Mück

      • Hallo Hein, Christian,
        danke für die kurze Anleitung, aber leider komme ich damit nicht so richtig klar.

        @Christian,
        vielleicht könntest du eine Anleitung dafür erstellen?

  2. Hallo,

    vielen dank erstmal für die Anleitung. Ist leicht nachgestellt.

    Paar Fragen habe ich jedoch zu der Konfiguration:

    1. Kann ich das offizielle Bitwarden Image auch nutzen? Da ich bei RS einige Funktionen vermisse.

    2. Kann ich den Standard Port von Bitwarden in der Docker-Compose direkt beim installieren ändern?

  3. Hallo Christian,

    vielen Dank für die tollen Anleitungen! Alles topaktuell und es hat mir sehr weitergeholfen!

    Ich versuche nun, aus Ermangelung einer subdomain die Anwendung mit subdirectory zum Laufen zu bekommen.. also anstatt bitwarden.meinedomain.de meinedomain.de/bitwarden

    Weißt Du wie das geht?

    Vielen Dank vorab, viele Grüße

    Stefan

Schreibe einen Kommentar

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