Bitwarden in Docker betreiben - Setup Schritt fĂĽr Schritt

This page is also available in English

Bitwarden ist ein webbasierter Passwort-Manager, ähnlich LastPass, aber Open Source und der Möglichkeit diesen selbst zu betreiben (hosten). Wie sich Bitwarden im Vergleich zu anderen Passwort-Managern einordnet, habe ich auf folgender Seite überlegt: Passwort-Manager sicher? KeePass vs. LastPass vs. Bitwarden. Um einen mit Bitwarden kompatiblen Server zu betreiben, bietet sich Vaultwarden an. Vaultwarden ist eine alternative Umsetzung von Bitwarden und dank der geringeren Systemanforderungen perfekt geeignet für ein selbst Hosting.

Docker Basics

Docker ermöglicht es, Services oder Applikationen per Befehl in einem sogenannten Container zu starten.
Ein Container ist eine vom Betriebssystem (OS) unabhängige isolierte Umgebung:
Beim ersten Start eines Containers, lädt Docker selbstständig alle notwendigen Quellen
aus dem Internet.
Docker kann unter Windows, macOS oder einer Linux-Distribution installiert werden,
siehe auch: Docker

Damit Vaultwarden sicher vom Internet erreicht werden kann, setze ich einen Let's Encrypt Reverse-Proxy ein. Zuerst habe ich Nginx als Reverse-Proxy verwendet, diesen aber später mit Traefik ersetzt. Der Reverse-Proxy stellt eine verschlüsselte HTTPS-Verbindung zur Verfügung und ermöglicht es mehrere Websites auf einem Server zu betreiben.

Schritt fĂĽr Schritt Vaultwarden mit Docker inkl. Zugriff vom Internet

Hardwareanforderung:
  1. Für die Docker-Installation kann eine nahezu beliebige Hardware verwendet werden: Zum Beispiel ein virtueller Server eines Providers, oder für zu Hause: ein PC, Notebook, Raspberry PI, MAC, eine NAS: QNAP, Synology oder eine beliebige andere Hardware auf der sich Windows oder Linux installieren lässt.
Voraussetzungen fĂĽr den Internetzugriff:
  1. Bei einem gemieteten Server eines Providers vergibt dieser eine IP-Adresse. Wer einen Server im eigenen Heimnetzwerk betreiben will, benötigt ein Port-Forwarding.
  2. Der Aufruf aus dem Internet erfolgt am besten über eine Domain mit einem DNS-Eintrag auf die öffentliche IP-Adresse, siehe Domain und dessen Verwaltung.
  3. Für die Zertifikatsverwaltung und den sicheren Zugriff auf die Webservices verwende ich einen Reverse Proxy und Let's Encrypt-Zertifikate. 
Container fĂĽr Vaultwarden:
  1. docker-compose.yml anlegen und anpassen
  2. Container starten und 
  3. Einrichten

Vaultwarden docker-compose.yml

Um Bitwarden mittels docker compose zu starten, kann das Docker-Image mit einer simplen docker-compose.yml Datei heruntergeladen, erstellt und gestartet werden. Die Datei kann mit einem beliebigen Texteditor wie folgt befüllt und dann angepasst werden:

Dateiname: docker-compose.yml, Inhalt:

[+]
# docker-compose.yml
version: '3'

services:
  bitwarden:
    image: vaultwarden/server
    restart: always
    expose:
       - "80"   
    #FĂĽr einen direkten Test-Zugriff, in den folgenden 2 Zeilen "#" entfernen. Aufruf: http://localhost:83 oder http://ServerIP:83
    #ports:   
      #- "83:80" 
    volumes:
      - bw-data:/data
    environment:
      WEBSOCKET_ENABLED: 'true' # Required to use websockets
      SIGNUPS_ALLOWED: 'true'   # set to false to disable signups
      ADMIN_TOKEN: "mytoken2change"

   #Labels fĂĽr ReverseProxy, siehe: https://www.libe.net/traefik
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.home.rule=Host(`bitwarden.domain.tld`)"      
      - "traefik.http.routers.home.entrypoints=web"
      - "traefik.http.routers.home.entrypoints=websecure"
      - "traefik.http.routers.home.tls.certresolver=myresolver"
      - "traefik.http.services.home.loadbalancer.server.port=80"
volumes:
  bw-data:

#Ohne dem Einsatz eines Reverse Proxy (https://www.libe.net/traefik) fehlt voraussichtlich das Netzwerk webproxy 
#und die folgenden Zeilen können entfernt oder auskommentiert werden. Alternativ kann das Netzwerk mit "docker network create webproxy" erstellt werden
networks:
  default:
    external:
      name: webproxy

Natürlich sollte vor dem Start die Domäne und der ADMIN_TOKEN angepasst werden. 

Für einen direkten Zugriff über die IP-Adresse oder localhost - auch ohne Reverse Proxy, DNS oder öffentlicher IP - kann die auskommentierte Port-Einstellung für Testzwecke aktiviert werden, indem „#“ vor „ports:“ und „-"83:80"“ entfernt wird. Sollte der Reverse Proxy nicht eingesetzt werden, wird das Netzwerk webproxy nicht benötigt und der Bereich networks: .. kann entfernt werden.

Für den Internetzugriff über den Traefik Reverse Proxy, muss in den Labels die Domäne mit den zuvor erstellten DNS-Einträgen ersetzt werden (im Beispiel: bitwarden.domain.tld).

Das Beispiel verwendet Docker Volumes und keine Bind-Mounts fĂĽr das permanente Speichern der Daten. Siehe: Docker Daten speichern: Docker Volumes vs. Host-Ordner

Container starten

Der Start erfolgt aus dem Ordner der docker-compose.yml-Datei mit dem Befehl „docker-compose up“:

docker-compose up -d

Nach dem Start des Containers meldet sich Bitwarden auf der angegebenen Domäne.

Konto erstellen

FĂĽr die Verwendung wird natĂĽrlich ein Benutzerkonto vorausgesetzt:

Als Speicher wird fĂĽr Bitwarden eine SQLite-DB verwendet, diese befindet sich nach dem Starten im Ordner bw-data.

Admin-Portal

Einstellungen zum Setup können im Admin-Portal erfolgen. Für den Zugriff wird der in der docker-compose.yml-Datei festgelegte Admin-Token und die URL "/admin" verwendet:

Damit ich bestimmen kann, wer den Passwort-Manager verwenden kann, habe ich die Signups deaktiviert.

Eingeladene Benutzer können den Passwort-Manager dennoch verwenden. Sollte sich eine unbekannte Person registrieren, wird der folgende Fehler angezeigt:

Ein Fehler ist aufgetreten. Registration not allowed or user already exists. 

SMTP-Settings

FĂĽr das Versenden von Mails habe ich folgende Einstellungen verwendet.

Als Mailserver verwende ich dafĂĽr folgendes Setup: Docker Mailserver selbst betreiben | ein Erfahrungsbericht

positive Bewertung({{pro_count}})
Beitrag bewerten:
{{percentage}} % positiv
negative Bewertung({{con_count}})

DANKE fĂĽr deine Bewertung!

Aktualisiert: 14.10.2022 von Bernhard đź””


Top-Artikel in diesem Bereich


ioBroker installieren - Docker
Mit ioBroker können verschiedene Automatisierungslösungen oder Geräte in einem System zusammengefasst werden. Um bestimmte Gateways oder Geräte ansprechen zu können, werden in ioBroker verschiedene Adapter verwendet.

Home-Assistant Docker Conbee 2 und Zigbee2MQTT / deCONZ
Dank zahlreicher Integrationsmöglichkeiten ist Home-Assistant eine einfache Plattform für das Steuern verschiedenster Smart-Home Geräte. Im Vergleich zu ioBroker ist mir der Start mit Home Assistant wesentlich einfacher gefallen. Während ich für ioBroker noch am Suchen war, welches Frontend ich für meine Dashboards verwenden könnte, hatte ich mit Home-Assistant out of the box ein fertig eingerichtetes System. Die Lovelance Dashboards von Home Assistant können einfach in der GUI zusammengeklickt...

KeePass synchronisieren mit der Cloud: Der ultimative Guide
In dem Artikel „Wie verwaltest du deine Passwörter?“ habe ich einige Gedanken zum sicheren Umgang mit Passwörtern beschrieben. Ein möglicher Lösungsansatz, um den Umgang mit Passwörtern sicherer zu gestalten, ist das Verwenden eines Passwortmanagers wie KeePass. KeePass ist freie Software und kann daher völlig kostenlos auf allen möglichen Geräten verwendet werden. 

Fragen / Kommentare


(sortiert nach Bewertung / Datum) [alle Kommentare(neueste zuerst)]

✍anonym
21.04.2022 10:03
Man sieht immer viele Docker Guides, aber niemand nimmt sich des Themas Backup an.
Wie sichere ich den die Daten von bitwarden, wenn ich es im docker betreibe?

Durch die weitere Nutzung der Seite stimmst du der Verwendung von Cookies zu Mehr Details