Zum Inhalt springen

Bitwarden Server unter Debian 11 installieren

Beitragsbild fuer "Bitwarden Server unter Debian 11 installieren"

Herzlich Willkommen zu diesem Tutorial. Hier zeige ich dir, wie du einen eigenen Bitwarden Server unter Debian 11 installieren kannst.

Installation der Voraussetzungen

Anfangs muss sudo, iptables und weitere Abhängigkeiten installiert werden, um Docker installieren zu können. Außerdem aktualisieren wir die Paketquellen des Debian Servers und installieren alle anstehende Updates:

apt-get update
apt-get upgrade
apt-get install sudo iptables ca-certificates curl gnupg lsb-release

Installation von Docker

Im nächsten Schritt werden wir die Paketquellen von Docker sowie Docker selbst installieren:

curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

apt-get update
apt-get install docker-ce docker-ce-cli containerd.io

Installation von Bitwarden

Nun können wir die Vorbereitungen zur Installation von Bitwarden treffen. Hierfür erstellen wir zuerst einen neuen Nutzer “bitwarden”, mit welchem der Dienst später ausgeführt werden soll. Außerdem werden wir den neu erstellten Benutzer in die Gruppe “docker” hinzufügen:

sudo adduser bitwarden --system --no-create-home
sudo usermod -aG docker bitwarden

Jetzt kann der Bitwarden Server installiert werden. Hierfür wird ein neues Verzeichnis erstellt und der neu erstellte Benutzer auf dieses berechtigt:

mkdir /opt/bitwarden
chmod -R 700 /opt/bitwarden
chown -R bitwarden:bitwarden /opt/bitwarden

Danach können die Installationsdateien heruntergeladen und Bitwarden installiert werden:

cd /opt/bitwarden
curl -Lso bitwarden.sh https://go.btwrdn.co/bw-sh
chmod 700 bitwarden.sh
./bitwarden.sh install

Während der Installation werden mehrere Parameter abgefragt. Hier zeige ich dir meine Best Practice Antworten:

  • Domain Name: Sollte möglichst der selbe Name sein, unter welcher Adresse der Server später erreicht werden soll. Selbst wenn der Server hinter einem Reverseproxy steht. Zum Biespiel: lab1.unknownworkspace.de oder bitwardensrv1.lan.
  • Soll ein Let’s Encrypt Zertifikat erstellt werden?: Wenn der Server von außerhalb erreicht werden soll und eine Domain sowie eine Portweiterleitung auf diesen Server existiert: Ja. Wenn der Server hinter einem Reverseproxy steht oder dieser nur im eigenen Heimnetzwerk verfügbar sein soll: Nein. Um den Server trotzdem abzusichern erstellen wir später ein Self Signed Certificate.
  • Installation-ID: Diese kann unter https://bitwarden.com/host/ angefordert werden und ist nicht optional.
  • Installation-Key: Dieser kann unter https://bitwarden.com/host/ angefordert werden und ist nicht optional.
  • Ist ein SSL Zertifikat vorhanden?: Wenn du bereits ein SSL Zertifikat z.B. von einer offiziellen Stelle oder ein Self Signed Zertifikat besitzt, kannst du diese Frage mit Ja beantworten. Ansonsten wähle hier bitte Nein.
  • Möchtest du ein Self Signed Zertifikat erstellen?: Ich habe dir bereits in einem anderen Beitrag gezeigt wie du dir selbst eine PKI aufbauen kannst. Ich würde hier in jedem Fall mit Nein antworten. Das Zertifikat werden wir im nächsten Schritt noch erstellen und einpflegen.

Erstellen und einspielen eines Self Signed Zertifikates

Da ich meinen Bitwarden Server von überall aus erreichen möchte, erstelle ich mir zuerst ein Self Signed Zertifikat. Wie das funktioniert, habe ich dir bereits in folgendem Beitrag gezeigt: KLICK

Für die Konfiguration werden folgende Dateien benötigt:

  • Serverzertifikat: /opt/bitwarden/bwdata/ssl/deine-domain/certificate.crt
  • Private Key: /opt/bitwarden/bwdata/ssl/deine-domain/private.key
  • CA Zertifikat: /opt/bitwarden/bwdata/ssl/deine-domain/ca.crt

Diese Dateien generieren wir nun also und verschieben sie in die entsprechenden Ordner. Damit kann der Server später im Heimnetzwerk sicher aufgerufen werden. Außerdem kann eine sichere Verbindung zwischen Reverseproxy und dem Bitwarden Server aufgebaut werden.

Um SSL auf dem Bitwarden Server aktivieren zu können, musst du folgende Datei editieren:

nano /opt/bitwarden/bwdata/config.yml

Hier musst du folgende Zeilen entsprechend anpassen:

ssl: true
ssl_certificate_path: /etc/ssl/deine-domain/certificate.crt
ssl_key_path: /etc/ssl/deine-domain/private.key
ssl_ca_path: /etc/ssl/deine-domain/ca.crt

Konfiguration von Bitwarden

Um den Mailversand (optional) oder alternative Administratoren (optional) konfigurieren zu können müssen wir nun folgende Datei editieren:

nano /opt/bitwarden/bwdata/env/global.override.env

Hier musst du für die Mailkonfiguration folgende Parameter anpassen. Die Daten findest du bei deinem Mail Provider.

globalSettings__mail__smtp__host=
globalSettings__mail__smtp__port=
globalSettings__mail__smtp__ssl=
globalSettings__mail__smtp__username=
globalSettings__mail__smtp__password=

Außerdem kann ein Account als Administrator eingetragen werden. Hierfür musst du die E-Mail Adresse, mit welcher du dich später registrierst eintragen:

adminSettings__admins=

Nachdem du dich einmalig registriert hast, kannst du folgenden Parameter setzen, um zu verhindern das sich weitere Nutzer registrieren können:

globalSettings__disableUserRegistration=true

Starten des Bitwarden Servers

Um die Konfigurationen des Bitwarden Servers zu übernehmen führe bitte folgenden Befehl aus:

/opt/bitwarden/bitwarden.sh rebuild
/opt/bitwarden/bitwarden.sh start

Um den Server später aktualisieren zu können, kannst du folgende Befehle nutzen:

/opt/bitwarden/bitwarden.sh updateself
/opt/bitwarden/bitwarden.sh update

Konfiguration Firewall

Folgende Firewall Regeln wende ich für den Betrieb des Servers an:

# Konfiguration aller Routen, Traffic zu akzeptieren
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT

# Akzeptieren von SSH Verbindungen
sudo iptables -A INPUT -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

# Akzeptieren von Bitwarden Server Verbindungen über Reverseproxy (optional). Ändere bitte den Parameter -s ab oder lasse diesen komplett weg. Dieser zeigt auf meinen eigenen Reverseproxy.
# Webserver
sudo iptables -A INPUT -p tcp -s 10.10.2.22 --dport 8443 -m state --state NEW,ESTABLISHED -j ACCEPT

# Akzeptieren von bereits aufgebauten Verbindungen
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Konfiguration der INPUT Route, Traffic zu blockieren
sudo iptables -P INPUT DROP

Zum speichern der Firewall-Regeln kannst du iptables-persistent installieren. Während der Installation muss der Dialog „Save current IPv4 rules“ und „Save current IPv6 Rules“ mit Yes bestätigt werden:

apt-get install iptables-persistent

Schlusswort

Herzlichen Glückwunsch, du hast erfolgreich einen Bitwarden Server erstellt. Um sich auf diesen zu verbinden kannst du nun die angegebene Domain oder die IP-Adresse des Linux Servers im Webbrowser eingeben. Eventuell musst du den Port (:8443) hinzufügen. Um den Server nach außen zu publizieren kann ein Portforwarding im Router angelegt werden (Alles natürlich auf eigene Gefahr). Außerdem unterscheidet sich diese von Router zu Router. Ich persönlich veröffentliche den Server über einen Reverseproxy. Wie ich diesen konfiguriert habe, erfährst du in folgendem Beitrag: Klick.

Vielen Dank fürs lesen und viel Spaß!