Allgemein

Bitwarden Alternative (Vaultwarden) auf dem Raspberry Pi installieren (mit Docker)

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.

Installationsanleitung Vaultwarden

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.

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 85:80 \
  -p 3012:3012 \
  --restart=always \
  vaultwarden/server:latest

Ich habe erstmal den Port 80 auf den Port 85 gemappt. Somit ist jetzt erstmal Vaultwarden auf dem Port 85 erreichbar. Testen könnt Ihr das unter folgender URL. http://<IP-Vom-Raspberry-Pi>:85

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.

NPM ( 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]:Bayern
Locality Name (eg, city) []:Bamberg
Organization Name (eg, company) [Internet Widgits Pty Ltd]:test.de
Organizational Unit Name (eg, section) []:test.de
Common Name (e.g. server FQDN or YOUR name) []:vaultwarden.test.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.

Schreibe eine Antwort