Bitwarden-rs unter Docker im Proxmox LXC Container

Moin!

Bitwarden-rs wurde umbennant in Vaultwarden. Eine neue Anleitung auf Basis von Docker-compose findet ihr in meinem Archiv!

Heute schauen wir uns das Thema Bitwarden-rs an. Da Bitwarden in seiner Grundinstallation von 8bit Solutions verhältnismäßig viele Resourcen benötigt, gibt es eine Alternative die auf der API von Bitwarden basiert. Sie ist in Rust programmiert und verwendet keine WinSQL Datenbank. Ein weiterer Punkt ist, dass die Premium Features die bei Bitwarden erworben werden müssen hier schon kostenfrei integriert sind.

Ihr benötigt dazu:

Ich starte persönlich immer gerne mit einem neuen LXC Container auf Basis von Debian 10 mit installierten sudo, Docker und Portainer. Für solche Fälle clone ich ein vorbereitetes Template innerhalb von Proxmox. Bei Bedarf kann ich dazu auch mal ein Tutorial machen.

Wir starten und laden das Docker Image runter.

sudo docker pull bitwardenrs/server:latest

Anschließend erstellen wir den Container innerhalb Dockers. Wer mit MariaDB arbeiten und auf die interne Datenbank verzichten möchte fügt die Zeile mit -e DATABASE_URL hinzu.

sudo docker run -d --name bitwardenrs \
--restart=always \
-v /bw-data/:/data/ \
-p 80:80 \
-e DATABASE_URL='mysql://bitwarden_user:bitwarden_pw@ip_mysqlserver/bitwarden' \
bitwardenrs/server:latest

Und schon können wir Bitwarden über die interne IP aufrufen.
Nun erstellen wir bei unserem Domainprovider eine Subdomain und hinterlegen dort unsere öffentliche IP. Anschließend hinterlegt ihr bei eurem Reverse Proxy Server die Weiterleitung auf die gewünschte interne IP und generiert ein SSL Zertifikat mit Let’s Encrypt.

Schon könnt ihr Bitwarden über https://subdomain.euredomain.tld/ erreichen.

Nun kann jeder der eure Domain kennt, sich einen Account dort erstellen und euren Dienst nutzen. Damit das nicht länger der Fall ist und nur ihr euren Dienst nutzen könnt, deaktivieren wir die Registrierungsfunktion.

Dazu müssen wir den Container zerstören und mit veränderten ENV Variabeln neu erstellen.

sudo docker rm bitwardenrs

sudo docker run -d --name bitwardenrs \
--restart=always \
-v /bw-data/:/data/ \
-p 80:80 \
-e DATABASE_URL='mysql://bitwarden_user:bitwarden_pw@ip_mysqlserver/bitwarden' \
-e SIGNUPS_ALLOWED=false \
-e INVITATIONS_ALLOWED=false \
bitwardenrs/server:latest

Solltet ihr doch eine andere Person zur Nutzung eures Dienstes einladen wollen, funktioniert dies nur über die Adminseite. Ihr könnt diese aktivieren, indem ihr als Variabel einen Token hinterlegt. Außerdem müssen wir einen SMTP Server konfigurieren, da die Einladung per Email versendet wird. Zusätzlich aktivieren wir das der eingeladene User seine Email erst bestätigen muss bevor er unseren Dienst nutzen kann. Wir generien im nächsten Schritt den besagten Token, zerstören den Container erneut und bauen uns einen neuen. Yeahh!!!

openssl rand -base64 64
// Token in die Zwischenablage kopieren
// Bedenke! Jeder der diesen Token hat, besitzt die Kontrolle über DEINEN Passwortmanager!!!

sudo docker rm bitwardenrs
sudo docker run -d --name bitwardenrs \
--restart=always \
-v /bw-data/:/data/ \
-p 80:80 \
-e DATABASE_URL='mysql://bitwarden_user:bitwarden_pw@ip_mysqlserver/bitwarden' \
-e SIGNUPS_ALLOWED=false \
-e SIGNUPS_VERIFY=true \
-e INVITATIONS_ALLOWED=false \
-e ADMIN_TOKEN=TrageHierDeinenVorherGeneriertenTokenEin \
-e SMTP_FROM_NAME=Bitwarden \
-e SMTP_HOST=smtpausgangsserver \
-e SMTP_FROM=eureemail@domain.tld \
-e SMTP_PORT=587 \
-e SMTP_SSL=true \
-e SMTP_EXPLICIT_TLS=true \
-e SMTP_USERNAME=username \
-e SMTP_PASSWORD=passwort \
-e DOMAIN=https://subdomain.eurodomain.tld \
bitwardenrs/server:latest

Die Adminseite könnt ihr ganz einfach mit https://subdomain.euredomain.tld/admin aufrufen. Unter Users im oberen Menü könnt ihr, die von euch gewünschten User dazu einladen euren Dienst zu nutzen.

Nun ladet ihr euch selber über das Admin WebUI ein und erstellt euch einen Account. Tada ihr seit fertig mit der Grundkonfiguration.

Grüße gehen aus dem Archiv!

7 Kommentare zu „Bitwarden-rs unter Docker im Proxmox LXC Container“

  1. Vielen Dank für das Tut.

    Was mich richtig Zeit gekostet hat waren folgende Punkte:
    – Im SMTP-Passwort wird kein ! akzeptiert
    – Nach dem Erstellen des ersten Users im ersten Schritt kann man sich nach dem Einrichten der Mail-Funktion nicht anmelden, da die E-mail-Adresse verifiziert werden soll. Meine Lösung:
    > auf der /admin-Seite zuerst SMTP deaktivieren
    > dann sich mit dem User anmelden,
    > anschließend wieder SMTP aktivieren
    > in den Einstellungen des Users die E-mail-Adresse ändern – diesmal mit Verifizierung und dann ggf. wieder auf die ursprüngliche Adresse zurück

    Sorry, aber mir kommt noch alles ein bisschen extrem frickelig vor – insbesondere der Update-Prozess, wenn man jedes Mal den Container löschen und dann wieder neu erstellen muss…. 😉

    1. Ich habe in meiner Testumgebung versucht deinen Fehler mit dem SMTP Passwort zu reproduzieren.
      Bei mir kommt es nicht zu diesem Problem. Egal ob ein „!“ oder mehrere.
      Ich habe es mit einer neuen, sowie mit einer bereits bestehenden Installation probiert.

      Du hättest auch einfach den User löschen und eine neue Einladung senden können 🙂

      Das der Container für ein Update zerstört werden muss liegt an der Arbeitsweise von Docker.
      Meines Wissens nach hast du das Problem mit allen Docker Projekten.
      Daher wird mit /bw-data/ ein dauerhafter Speicher generiert.

      TANTE EDIT:
      Die Usererstellung rutscht im Tutorial ans Ende.
      @simi Danke für den Hinweis.

  2. I like the helpful info you provide in your articles.

    I’ll bookmark your blog and check again here frequently.
    I am relatively certain I’ll be informed plenty
    of new stuff proper here! Good luck for the following!

  3. Schöner Artikel. Danke dafür.

    Was ich noch nicht zum laufen gebracht habe ist der Zugriff auf den Server per Android App oder Browser Plug-In. Wie ich inzwischen rausgefunden habe, muss dabei SSL im bitwarden-rs Container aktiviert werden. Das ist insbesondere im Zusammenspiel mit Let’s Encrypt sehr verwirrend.
    Vielleicht hast du dich ja auch damit schon beschäftigt und könntest den Artikel entsprechend erweitern.
    Als reverse Proxy verwende ich übrigens den in meiner Synology NAS integrierten. Das funktioniert einwandfrei.

    1. Im Prinzip sollte das mit der Installation funktionieren.
      Dein Proxy hält das SSL Zertifikat und leitet dich dann im internen Netz unverschlüsselt auf den Bitwarden Container weiter.
      Bedeutet du musst deinem Proxy ein SSL Zertifikat erstellen lassen und dieses intern auf Bitwarden weiterleiten. Wichtig dabei ist, dass die Portweiterleitung in deinem Router den Port 80 und 443 auf deinen Proxy mappt.
      Du musst in der der App angeben, dass du auf eine alternative URL zugriefen möchtest.
      Auf Android befindet sich oben links ein kleines Zahnrad. Dort kannst du die URL zu deiner Installation angeben.

  4. Hey Lucas,
    vielen Dank. Hat alles wunderbar funktioniert. Hier und da gab es mittlerweile kleinere Änderungen. Der Name hat sich mittlerweile ja auch geändert (Vaultwarden). Mit ein wenig mitdenken hat alles wunderbar funktioniert.

    Grüße
    Sergej

    1. Hallo Sergej,

      freut mich das dir mein Tutorial weitergeholfen hat.
      Ich habe bereits eine überarbeitete Version mit Vaultwarden und docker-compose in der Pipeline (fertig geschrieben – muss noch Korrektur gelesen werden)
      Docker-comnpose macht vieles deutlich einfach. Freu dich schon mal 🙂

Kommentar verfassen

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