Nachdem die grundlegenden Dinge in Teil 1 und 2 erledigt wurden, geht es daran Bitwarden erreichbar zu machen.
NGINX ist eine bessere Alternative zu Apache für den Raspberry Pi, und zwar aus verschiedenen Gründen.
Einige Gründe, warum NGINX auf dem Raspberry Pi besser ist, sind der geringere Speicherverbrauch und die allgemein geringere CPU-Auslastung, was bedeutet, dass Sie mehr aus den begrenzten Ressourcen Ihres Raspberry Pi herausholen können. Man könnte NGINX natürlich auch wie Bitwarden als Docker Container unter Portainer installieren, aber da NGINX nach der Konfiguration nicht mehr angefasst werden muss, habe ich mich für die konventionelle Methode entschieden.
Dafür starten wir eine SSH Verbindung zum Raspberry und geben am Terminal folgende Befehle ein.
Zuerst wie immer ein Update des Systems
sudo apt update && sudo apt upgrade -y
Danach installieren wir NGINX
sudo apt install nginx
Nach der Installation starten wir NGINX
sudo systemctl start nginx
Danach können wir testen ob NGINX läuft
In einen Browser geben wir die IP-Adresse des Raspberry ein, die wir vorher mit
hostname -I
herausgefunden haben
Wie man sieht läuft NGINX nun
Im Gegensatz zu Apache wird NGINX nicht automatisch für die Verwendung mit PHP eingerichtet. Wir müssen stattdessen Änderungen an den Konfigurationsdateien vornehmen, damit es geladen werden kann.
Außerdem müssen wir aufgrund der Funktionsweise von NGINX PHP-FPM und nicht Standard-PHP verwenden.
Bevor wir mit der Konfiguration von PHP für NGINX beginnen, müssen wir zunächst PHP 7.3 und einige empfohlene PHP-Module installieren, die den Umgang mit umfangreicheren PHP-Skripten erleichtern.
sudo apt install php7.3-fpm php7.3-mbstring php7.3-mysql php7.3-curl php7.3-gd php7.3-curl php7.3-zip php7.3-xml -y
Wenn das erledigt ist müssen wir noch Änderungen an der Standard NGINX Konfigurationsdatei vornehmen
sudo nano /etc/nginx/sites-enabled/default
In dieser Datei suchen wir folgende Zeile:
index index.html index.htm;
Und ersetzen sie mit:
index index.php index.html index.htm;
Wir haben index.php zur Index-Zeile hinzufügen, was NGINX anweist, die Datei index.php als möglichen Index zu erkennen, und das Hinzufügen dieser Datei als erste in der Liste bedeutet, dass sie gegenüber einer index.html-Datei ausgewählt wird
Dann suchen wir folgendes:
#location ~ \.php$ {
# include snippets/fastcgi-php.conf;
#
# # With php5-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# # With php5-fpm:
# fastcgi_pass unix:/var/run/php5-fpm.sock;
#}
Und ersetzen es mit:
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
}
Dieser Code richtet NGINX für die Verarbeitung von .php-Dateien ein, indem er sie an PHP-FPM weiterleitet.
Damit sind wir fertig und drücken STRG + O und STRG + X um zu speichern und zu beenden.
Um die Änderungen zu aktivieren, starten wir NGINX neu
sudo systemctl reload nginx
Wir können nun einen virtuellen Host für NGINX erstellen, der es ihm ermöglicht, Verbindungen zu Bitwarden zu vermitteln. Zunächst entfernen wir die Standardkonfigurationsdatei für NGINX.
Das muss nicht gemacht werden, wenn Du Bitwarden zusammen mit einem Domainnamen verwenden möchtest.
sudo rm /etc/nginx/sites-enabled/default
Wir müssen eine neue Konfigurationsdatei für NGINX erstellen.
Dazu beginnen wir mit dem Schreiben dieser neuen Konfigurationsdatei mit dem Texteditor nano, indem der folgendee Befehl ausführt wird.
sudo nano /etc/nginx/sites-enabled/bitwarden.conf
Dieser erste Block, den wir hinzufügen, leitet jeglichen Verkehr von http (Port 80) auf https (Port 443) um.
server {
listen 80;
listen [::]:80;
server_name _; #Change this to your domain name
return 301 https://$host$request_uri;
}
Als Nächstes müssen wir unseren Serverblock hinzufügen, der das Proxying und die HTTPS-Verbindung übernimmt. Wenn Letsencrypt zur Erzeugung des Zertifikats verwendet wird, müssen die Pfade für "ssl_certifcate" und "ssl_certificate_key" austauscht werden.
Zwischenschritt......Letsencrypt installieren:
Es muss sichergestellt werden das auf Deinem Router die Ports 80 und 443 zu deinem Raspberry freigeschaltet sind. Das erfordert bei jedem Router eine andere Vorgehensweise und würde den Rahmen des Artikels sprengen
sudo apt install certbot
sudo apt install python-certbot-nginx
Danach certbot mit
sudo certbot
starten und den Anweisungen folgen
Zwischenschritt Ende
Je nachdem, wie Du den Raspberry Pi Bitwarden-Server verwenden möchtest, müssen ein paar Dinge geändert werden. Wenn Du einen Domänennamen verwenden möchtest, muss servername _; ersetzt werden, um ihn einzuschließen.
Unser Servername würde zum Beispiel folgendermaßen lauten: "server_name bitwarednserver.test.com".
Danach sollte Deine Datei so aussehen, wie unten dargestellt.
server {
listen 80;
listen [::]:80;
server_name _; #Bitte auf deinen Domänennamen abändern
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name _; #Bitte auf deinen Domänennamen abändern
ssl_certificate /etc/ssl/certs/nginx-bitwarden.crt; #Swap these out with Lets Encrypt Path if using signed cert
ssl_certificate_key /etc/ssl/private/nginx-bitwarden.key; #Swap these out with Lets Encrypt Path if using signed cert
ssl_dhparam /etc/ssl/certs/dhparam.pem;
# Allow large attachments
client_max_body_size 128M;
location / {
proxy_pass http://0.0.0.0:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /notifications/hub {
proxy_pass http://0.0.0.0:3012;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location /notifications/hub/negotiate {
proxy_pass http://0.0.0.0:8080;
}
Danach kann die Datei gespeichert (STRG + o) und nano beendet werden (STRG + X)
Dann kannst Du dich auf der Web-Oberfläche von Bitwarden anmelden:
https://IP-Adresse-des-Raspberry
Wenn Du einen Domänennamen verwendet hast, musst Du natürlich den eingeben
Danach erscheint die Web-Oberfläche von Bitwarden
Du kannst nun damit beginnen, die Informationen für dein neues Konto auszufüllen.
Als erstes musst Du die E-Mail-Adresse für dieses Bitwarden-Konto eingeben
Mit dieser E-Mail Adresse wirst Du dich in Zukunft anmelden.
Als nächstes musst Du einen Namen angeben, den Bitwarden verwenden soll.
Dann muss ein Passwort für dieses Konto festlegt werden.
Darauf achten, dass Du ein sicheres und nicht leicht zu erratendes Passwort wählst.
Bevor die Erstellung des Kontos abschlossen werden kann, musst Du noch den Nutzungsbedingungen und der Datenschutzerklärung von Bitwarden zustimmen.
Nach der Anmeldung mit Deinen neuen account Daten siehst du den Inhalt deines Tresors
Der ist in Deinem Fall natürlich noch leer
Quelle: https://en.wikipedia.org/wiki/File:Bitwarden_Desktop_MacOS.png
Das Bitwarden admin Panel aktivieren
Nachdem nun ein Konto erstellt ist, kannst Du nun das Admin-Token generieren.
Das Admin-Token ist das, was Du für den Zugriff auf das Bitwarden-Administrationspanel verwenden wirst. Dazu müssen Änderungen an unserer Docker-Container-Konfiguration vorgenommen werden.
In der Verwaltungskonsole kann man alle registrierten Benutzer anzeigen lassen und sie auch löschen. Man kann auch Einladungen für neue Benutzer generieren.
Über diese Schnittstelle lassen sich auch die zahlreichen Bitwarden-Optionen konfigurieren. Zum Beispiel, ob Du möchtest, dass sich andere Personen anmelden können.
Der erste Schritt besteht darin, ein neues Admin-Token für Bitwarden zu generieren.
Da dieses Token eine relativ lange Zeichenkette aus starken, zufällig generierten Zeichen sein muss, werden wir openssl verwenden. Um diese sichere Zeichenfolge zu erzeugen, kannst Du den folgenden Befehl auf Ihrem Raspberry Pi ausführen.
openssl rand -base64 48
Achte darauf, dass dieser Token geheim bleibt, da sonst jeder vollen Zugriff auf den Bitwarden RS-Server hat.
Wir müssen nun dieses neue Admin-Token in den Bitwarden-Docker-Container unseres Raspberry Pi einfügen.
Es ist möglich, dies über das Portainer-Webinterface zu tun.
Einstellen des Admin-Tokens mit Portainer
Um das Admin-Token zu setzen, musst Du die Portainer-Schnittstelle starten und zur Containerliste zurückkehren.
In der Containerliste musst Du den Bitwarden Container identifizieren.
Wenn Du ihn gefunden hast, kicke ihn an, um seine Informationsseite aufzurufen
1
Oben auf der nächsten Seite sollte sich eine Schaltfläche "Duplizieren/Bearbeiten" befinden.
Auf diese Schaltfläche klicken, um mit der Bearbeitung der Einstellungen des Containers zu beginnen
Blättere auf dieser Seite nach unten, bis Du die Überschrift "ENV" findest.
Klicke auf die Schaltfläche "Add an environmental variable", damit Du das Admin-Token hinzufügen kannst
Wenn Du auf diese Schaltfläche klickst, werden unten auf der Seite zwei neue Textfelder eingeblendet.
In das Textfeld "Name" musst Du "ADMIN_TOKEN" eingeben.
In das Feld "Wert" musst Du das zu verwendende Admin-Token eingeben.
Wenn das erfolgt ist, kannst Du auf die Schaltfläche "Deploy the Container" klicken
Auf die Abfrage das ein Container mit gleichem Namen schon existiert bitte mit "Replace" antworten.
Das Bitwarden Admin-Panel aufrufen
Im Browser folgendes eingeben
https://<IP-Adresse des Raspbery>/admin
Im nun folgenden Eingabefenster bitte das Admin-Token mit copy & paste einfügen
Danach erscheint die Admin-Seite auf der User angelegt und gelöscht werden, sowie alle generellen Einstellungen von Bitwarden erfolgen können.
Damit sind wir am Ende angelangt.
Ich persönlich verwende die Browser Add-ons von Bitwarden, um an meinen Tresor zu gelangen.
Es schadet auch nicht ab und zu den Tresor zu exportieren und ihn an einer sicheren Stelle zu speichern.
Weitere Infos zur Verwendung finden sich zuhauf, wenn man die Suchmaschine seiner Wahl bemüht.
Hallo!
Vielleicht können Sie mir helfen wäre Ihnen sehr dankbar.
Finde diesen Code nicht um ihn zu ersetzen:
location ~ .php$ {
1 Frage: Es gibt schon einen Code nur der sieht nicht genau so aus wie oben eingefügt. Könnten Sie mir den ganzen Quellcode senden um ihn zu ersetzen ?
2 Frage, habe ich auch noch kann ich bei der Domain auch eins DDNS Adresse verwenden oder geht nur eine Domain bzw Subdomain?
3 Frage, wo muss ich das ändern ?
server { listen 80; listen [::]:80; servername ; #Bitte auf deinen Domänennamen abändern return 301 https://$host$request_uri; }
server { listen 443 ssl http2; servername ; #Bitte auf deinen Domänennamen abändern
ssl_certificate /etc/ssl/certs/nginx-bitwarden.crt; #Swap these out with Lets Encrypt Path if using signed cert ssl_certificate_key /etc/ssl/private/nginx-bitwarden.key; #Swap these out with Lets Encrypt Path if using signed cert
ssl_dhparam /etc/ssl/certs/dhparam.pem;
Allow large attachments
client_max_body_size 128M;
location / { proxy_pass http://0.0.0.0:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; }
location /notifications/hub { proxy_pass http://0.0.0.0:3012; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; }
location /notifications/hub/negotiate { proxy_pass http://0.0.0.0:8080; } Danke für Ihre Hilfe.
Mit freundlichen Grüßen Chrisi
Bekomme immer an Schluss einen Lets Encrypt fehler leider, ich hoffe es kann mir wer helfen.
lg
bei mir kann ich leider trotz aller Schritte Bitwarden nicht aufrufen
Teil 1 & 2 fand ich super und nachvollziehbar. Teil 3 ist aber alles andere als nachvollziehbar.
Ich bin Anfänger und verstehe hier nicht alles, jedoch fand ich Teil 1 und 2 gut. In Teil 3 versteh ich aber kaum etwas, vllt gehts nur mir so.
Hallo Eduard Die Installation von Bitwarden ist leider nicht trivial....ich weiss. Da ich hier nicht für jeden Artikel Support leisten kann verweise ich auf die zahlreichen Quellen im Netz. Wenn Du Bitwarden "einfach" installieren willst empfehle ich Yunohost
Dort gibt es eine App die Vaultwarden heisst und ein Fork von Bitwarden ist. Auch ich nutze das. Meinen Artikel über Yunohost findest Du hier auf GnuLinux
Hallo Installation läuft. Alles bestens. Vielen Dank für diese tolle Anleitung. Bin schon ein älters Semenster und neige dazu, ab und zu eine geistige Herausforderung anzunehmen. Noch eine Frage: kann basierend auf dieser Installation auch fail2ban installiert werden? Falls ja, kannst Du allenfalls eine diesbezügliche Ergänzung (Teil 4) machen, und damit der Sicherheit noch eine zusätzliche Stufe hinzuzufügen. Beste Grüsse - Erich
Hallo,
vielen Dank für die gelungene Anleitung.
Ich möchte an dieser Stelle noch eine, aus meiner Sicht geeignetere, Konfiguration für den NGINX anbieten. Habe sie hier gepostet:
https://github.com/nephilim75/nginx_bitwarden_config/blob/main/bitwarden.conf
Vielleicht findet sie jemand hilfreich.
Liebe Grüße
Hallo, bei dem Punkt Zwischenschritt......Letsencrypt installieren erhalte ich die folgende Fehlermeldung :
E: Paket python-certbot-nginx kann nicht gefunden werden.
@raspberrypi:~ $ sudo apt install python-certbot-nginx Paketlisten werden gelesen… Fertig Abhängigkeitsbaum wird aufgebaut… Fertig Statusinformationen werden eingelesen… Fertig E: Paket python-certbot-nginx kann nicht gefunden werden.
Wie komme ich nun weiter.
Gruß Arno
Gibt es auch einen weg ohne internet Zugriff? Im aktuellen Artikel muss man mit Letencrypt zertifikate erstellen. Mein NAS hat aber kein Internet und ich greiffe via VPN drauf zu.