Vaultwarden ist jetzt schon sehr lange in aller Munde und wird immer immer beliebter. Dabei ist für die es nicht wissen, Vaultwarden die kostenlose Vollversion von dem Original Bitwarden. Natürlich ist das nicht direkt vom Hersteller, sondern von einer außenstehenden Person die das komplett geforkt hat. Aber keine Sorge, es ist genauso Sicher und Stabil wie das Original. Ich würde wetten auf dem Markt findet man 90% Vaultwarden und 10% Bitwarden. Und das alles natürlich Selfhosted. Wie das geht auf dem Raspberry Pi zeige ich euch hier.
Alle Informationen zum Vaultwarden Projekt findet Ihr zusätzlich auf der GitHub Seite. Github Seite
- Quad-Core-ARMA76-Prozessor (64-Bit – 2,4 GHz) °Integrierte VideoCore VII 800 MHz GPU °2- bis 3-mal mehr Leistung als Version 4
- Deutlich verbesserte Grafikwiedergabe ° Hochgeschwindigkeits-Micro-SD ° 2x 4K-60 fps gleichzeitig anzeigen
- 2x USB 3.0 5GBps ° 2x 4-Wege-MIPI-DSI/CSI-Anschlüsse
- Ändern : Neue Eigenschaften : EIN/AUS-Taste ¤ PCIe 2.0-Anschluss Integrierter RTC-Anschluss
- 5V/5A DC-Stromversorgung über USB-C
- Raspberry Pi 5 unterstützt Dual 4K-Displays über seine HDMI-Anschlüsse
Vaultwarden Installationsanleitung auf dem Raspberry Pi
Als erstes sollte man das System auf den aktuellsten Stand der Dinge bringen und Docker als unsere Grundlage installieren. Die Docker Umgebung kann man dann auch sehr gerne noch für weitere Container nutzen. Z.B. für ein Pi-Hole wer möchte. Anleitung findet Ihr hier.
System Updaten & Docker installieren
# System Updaten und aufräumen sudo apt update && apt upgrade -y && apt autoclean #Docker Installieren sudo apt install docker.io -y #Docker bei jedem Start ausführen sudo systemctl enable --now docker #Zu guter Letzt gib dem Benutzer Pi Docker Berechtigungen sudo usermod -aG docker pi
System vorbereiten für den Container
## Ordner anlegen für die Konfiguration und die Daten mkdir /home/pi/vaultwarden_data
Vaultwarden Container erstellen
docker run -d -it --name bitwarden \ -e ADMIN_TOKEN=Ein_Schweres_Passwort_fuer_den_Adminzugang \ -v /home/pi/vaultwarden_data:/data/ \ -p 8555:80 \ -p 3012:3012 \ --restart=always \ vaultwarden/server:latest
Ich habe erstmal den Port 80 auf den Port 8555 gemappt. Somit ist jetzt erstmal Vaultwarden auf dem Port 8555 erreichbar. Testen könnt Ihr das unter folgender URL. http://<IP-Vom-Raspberry-Pi>:8555
Wieso habe ich das gemacht? Vaultwarden lässt nur eine Registrierung zu wenn eine Verbindung über HTTPS erfolgt. Und hier hat unser Vault noch ein Problem. Von Hause aus kann es das nicht. Daher werden wir jetzt auf die schnelle und OHNE Lets Encrypt einen Nginx Proxy Manager erstellen.
Nginx Proxy Manager erstellen
#Für den Proxy Manager Volumes erstellen. Eins für die Konfigurationen und eins für spätere Zertifikate mkdir /home/pi/npm_data mkdir /home/pi/npm_letsencrypt docker run -d -it --name npm\ -v /home/pi/npm_data:/data \ -v /home/pi/npm_letsencrypt:/etc/letsencrypt \ -p 80:80 \ -p 81:81 \ -p 443:443 \ -e DB_SQLITE_FILE="/data/database.sqlite" \ --restart=always \ jc21/nginx-proxy-manager:latest
Hier kann man nun sehen die Ordner werden wieder verknüpft und es werden die Ports 80,81 und 443 genutzt. Port 81 wird benutzt um auf die Coole Nignx Proxy Manager Web Gui zu kommen.
Also los, öffne die GUI unter http://<IP-Vom-Raspberry-Pi>:81
Die Standard Benutzername lautet „admin@example.com“ und das Passwort „changeme„. Bei der ersten Anmeldung bitte der NPM euren Namen und E-Mail einzugeben. Ebenfalls wird er euch bitten das Passwort zu ändern.
Bevor wir hier aber weiter machen, werden wir nun ein selbst signiertes Zertifikat anlegen und dieses auf unserem PC abspeichern. Auf dem Raspberry Pi brauchen wir dafür das OpenSSL Paket.
Custom SSL Zertifikat erstellen
## OpenSSL Installieren sudo apt install openssl ##Zertifikat Generieren openssl req -newkey rsa:4096 \ -x509 \ -sha256 \ -days 3650 \ -nodes \ -out example.crt \ -keyout example.key #Füllt bitte die Abfragen so für euch passend aus. In dem Punkt Common Name füllt Ihr bitte die URL aus worauf Ihr später den Bitwarden erreichen möchtet. Generating a RSA private key ...................++++ ................................................................................................................................................................++++ writing new private key to 'example.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:DE State or Province Name (full name) [Some-State]:NRW Locality Name (eg, city) []:Muelheim an der Ruhr Organization Name (eg, company) [Internet Widgits Pty Ltd]:schroederdennis.de Organizational Unit Name (eg, section) []:schroederdennis.de Common Name (e.g. server FQDN or YOUR name) []:vault.schroederdennis.de Email Address []:vault@schroederdennis.de
Dabei werden 2 Dateien erstellt welche Ihr auf euren PC herunter laden müsst. Ich verwende da immer das kleine Programm WINSCP. Damit lassen sich Dateien via SSH super einfach auf den PC kopieren. Findet Ihr schon selber raus. Die erstellen Dateien liegen natürlich in dem /home/pi Verzeichnis und heißen: example.crt & example.key.
Mit diesen zwei Dateien erstellen wir nun ein „Custom Certifcate“ im Proxy Manager. Einfach unter SSL Certificates ein Custom Zertifikat hinzufügen und wie im Bild zu sehen ausfüllen.
Proxy Host hinzufügen
Zu guter Letzt brauchen wir nur noch den Proxy Host hinzufügen. Fülle die Felder wie im Bild zu sehen einfach aus und wählt unter dem Reiter SSL euer selbst signiertes Zertifikat aus. Und das wars auch schon.
- Intel Smart Cache:
- 125 W Prozessor-Grundleistung
- Die Intel Core i5 Desktop-Prozessoren der 14. Generation sind für Gamer und Produktivität optimiert und sorgen für eine hohe Leistung
1. Februar 2022 um 00:34 Uhr
Moin, gibt es denn schon einen Termin für den zweiten Teil?
1. Februar 2022 um 08:42 Uhr
Ich werde im laufe des Tages den Beitrag fertigstellen.
3. Februar 2022 um 13:18 Uhr
Hallo Dennis,
den Vault erstmal so in Betrieb nehmen finde ich gut.
Die scheinbar perfekte Lösung hat mal der Heise Verlag gezeigt, dort schaltet man den Container Traefik vor den Vault und sorgt so dafür, dass der Vault im Docker per routers mit Traefik redet und nach Außen nur verschlüsselt und zusätzlich der admin Bereich mit BasicAuth verriegelt wird.
Diese Lösung eignet sich NUR auf einen eigenen PI und dieser muss von Außen Port 80/443 bekommen damit Traefik fehlerfrei mit letsencrypt reden kann.
Um dieses Konstrukt auf ein Docker mit NginxProxymanager zu hiefen, kann man nach erster Inbetriebnahme den Port vom Traefik verlegen und somit mittels NginxProxymanager weiter mehrere andere Container betreiben. Aber spätestens wenn das Certifikat im Treafik ausläuft kommen Probleme.
Aus meiner Sicht sollte der Vault nie auch im lokalen Netzwerk unverschlüsselt lauschen. Die Lösung wäre den Vault einen Nginx mit eigenen selbst signierten Certs zu geben. Von Außen bindet man dann mittels NginxProxymanager. Dem ist nähmlich nach hinten egal, wenn dort mit eigenen Certs gearbeitet wird.
Hier ist ein guter Ansatz: https://markuta.com/bitwarden-and-nginx-server-on-raspberry-pi/
Gruß
3. Februar 2022 um 13:37 Uhr
Bei der Installation von Nginx Proxy Manager bekomme ich den Fehler hier.
Error starting userland proxy: listen tcp4 0.0.0.0:80: bind: address alr eady in use
Adguard läuft nur noch auf dem Raspi zusätzlich
3. Februar 2022 um 16:13 Uhr
Ja der Adguard benutzt bereits den Port 80. Ich würde dir empfehlen das zu ändern. Also den Adguard auf einen anderen Port.
8. Februar 2022 um 15:25 Uhr
super Content! Ich hab mir gestern alle 4 Episoden reingezogen und dabei viel Wasser getrunken 🙂 vielen Dank Dennis, ich freu mich schon auf weiteren Content.
Ich persönlich würde mich freuen, wenn du mal einen Inhalt zum Thema APIs, Endpunkte und NodeRed machen würdest…
Beispiel: aktuelle Corona-Zahlen / Bitcoin-Wert o-Ä. per Postman auf die eigene API übertragen, dann durch NodeRed an ein Display geben… sowas in der Art wäre super… oder halt eine Home-Automation über API an IFTTT oder an eine eigene Anwendung hängen…
12. Februar 2022 um 11:54 Uhr
Hey Dennis,
vielen Dank für deine vielen tollen locker flockigen Videos! Man lernt echt ne Menge!
Kannst du vielleicht mal ein Video machen, aufsetzend auf dieser Kombination mit Portainer und NGINX Proxy Manager, wie man fail2ban mit den Vaultwarden logs verheiratet? Ich habe versucht, die Anleitung von Luca Schreiner https://www.schreiner.pro/?p=627 zu verwenden, stolpere aber bereits beim umswitchen des Vaultwarden Logs auf syslog mit der Fehlermeldung „failed to initialize logging driver… no such host“. Ich glaub mir fehlt da das Verständnis was da netzwerkseitig passiert. Vielleicht kannst du eins deiner berühmt berüchtigten Diagramme dazu machen? Das wäre mega!
Ansonsten – immer weiter so! 🙂
Viele Grüße,
Thorsten
25. April 2022 um 21:26 Uhr
Hey,
das würde ich auch gerne das Fail2Ban in Verbindung mit Ngnix PM und Vaultwarden sehen 🙂
Wie Thorsten schon sagt, du machst super Videos bei denen man einiges lernt!! Weiter so und vielen Dank für deine Mühen!
Liebe Grüße
14. Februar 2022 um 20:20 Uhr
Hallo zusammen
Ich würde Vaultwarden gerne in meinem internen Netzwerk (ohne Zugriff von außen) nutzen und habe die ersten Schritte schon recht gut hinbekommen.
D.h. vaultwarden läuft in einem separaten Docker und in einem zweiten Docker habe ich nginx laufen, was dann auf vaultwarden durchschleift.
Jetzt muss ich aber noch irgendwie ein gültiges/signiertes Zertifikat installiert bekommen, damit ich auch mit Windows ohne Fehlermeldung drauf zugreifen kann. Hintergrund ist, das ich gerne den Bitwarden Client nutzen möchte, aber dieser funktioniert nur mit gültigem Zertifikat.
Hat da jemand ein Tutorial, wie man das einfachsten via easy-rsa oder openssl hinbekommt?
Danke vorab und viele Grüße,
Dominik
20. Februar 2022 um 01:28 Uhr
Wie Dominik habe ich auch den Krampf, dass ich am Ende beim Reverse Proxy und der Zertifikatgeschichte hängen bleibe, da ich aktuell Vaultwarden noch nicht am endgültigen Ort habe und hier hinter einem Doppelten NAT sitze ohne Zugriff. Das heißt, ich kann keine LetsEncrypt oder ähnliche Geschichte triggern, die eine laufende Domain und Erreichbarkeit hat.
Mir würde es ja langen, Vaultwarden aus dem (W)Lan ansprechen zu können. Aber dafür bin ich einfach „zu dumm“.
23. Februar 2022 um 16:20 Uhr
Hi Dennis,
Vielen Dank für die informativen (und unterhaltsamen 🙂 ) Videos.
Habe versucht nach Deiner Anleitung den Vaultwarden zu installieren. Ich habe eine Strato Domäne und auch ein Strato dyndns. Leider klappt es nicht so wie von Dir beschrieben. Ich kann keine „beliebigen“ Hostnamen vergeben. Anscheinend unterstützt Strato keine wildcard Subdomänen… ich musste hierzu duckdns nehmen und über einen Stack die Aktualisierung der IP Adresse umsetzen.
Viele Grüße
Roland
17. Mai 2022 um 10:56 Uhr
Konfiguration SMTP
Hallo vielen Dank für die tolle Anleitung.
Wie / wo kann ich den SMTP Server hinterlegen?
Hatte Zuvor Bitwarden im Docker unter Windows laufen, dort konnte ich einfach die global.override.env anpassen. Weiß aber mit Linux leider nicht, wie ich dorthin komme bzw. dies dann auch anwende.
Vielen Dank für die Hilfe!
16. August 2022 um 20:56 Uhr
Hi Dennis
Vielen Dank für die super Anleitung!
Bei mir läuft eigentlich alles, nur kann ich mich nicht in der IOS / Mac App Anmelden. Es kommt immer ein SSL Fehler.
Weisst du woran dies liegen kann? Ich kann mich normal über den Browser am Iphone / Mac Anmelden, nur per APP funktioniert nicht.
Vielen Dank
LG
Matthias
4. November 2022 um 12:07 Uhr
Ich habe das gleiche Problem. Zertifikat selbst erstellt und wird von iOS16 akzeptiert und auch im Synology korrekt hinterlegt.
Der Webtresor ist überall mit dem Zertifikat ohne Meldung erreichbar.
Bei der App klappt es nicht und bekomme ebenfalls die SSL-Meldung, dass die Verbindung nicht sicher sei.
Zertifikat ist installiert und gültig und auch auf vertraut (Einstellungen, Allgemein, Info) / aktiviert.
Weiß jemand einen Rat?
Danke im Voraus.
LG Jens
24. August 2022 um 10:34 Uhr
Hi Dennis,
vielen Dank für deine einfache Erklärung, dank dieser konnte ich mich an dem System „abarbeiten“ und soweit alles einrichten.
Ich habe nur zwei (mit sicherheit einfache) fragen…
1.) Beim ProxyHost hinzufügen hast du eine Domain angegeben, diese habe ich aber nicht, was gebe ich dann dort ein einfach die IP vom Pi?
2.) Die frage ist wirklich richtig dumm, wo finde ich den zweiten Teil des Setups? Ich habe scheinbar wirklich Tomaten auf den Augen ich finde es einfach nicht… 😀
Danke dir!
14. September 2022 um 20:44 Uhr
Hallo Dennis,
erstmal vielen Dank, dass du dir die Mühe machst, für Einsteiger wie uns diese Anleitung zu formulieren. Kann es sein, dass du den Artikel nicht zu Ende geschrieben hast? Oder vielleicht finde ich auch einfach den zweiten Teil nicht. Könntest du den vielleicht am Ende verlinken?
Und noch was, wäre es möglich, dass du die verschiedenen benötigten Container mit Netzwerk und allem in ein Docker-Compose-Paket packst? Dann wäre das alles schön zusammen und einfach so zu installieren. Auch die doppelte Absicherung mit Traefik klingt interessant, hast du dafür nochmal ein Update geplant?
Viele Grüße,
Jonathan
16. November 2023 um 11:41 Uhr
Hallo! Gibt es ein Update zu diesem Guide, der die Änderungen an Vaultwarden reflektiert, siehe https://github.com/dani-garcia/vaultwarden/issues/4024
Tausend Dank!
Grüße, Florian