Weil Keepass doch ein wenig schwierig zu nutzen ist auf allen Endgeräten, habe ich mich nach einer Alternative umgsehen und bin auf Bitwarden gestoßen. Das Interessante an Bitwarden ist, dass man sich seinen dafür benötigten Server selbst hosten kann. Hier nun ein kleiner Überblick, wie man sich den Server hinter einem nginx Reverse-Proxy installieren kann.

Zu Beginn muss man Docker und Docker-Compose installieren.

Nun muss man sich bei Bitwarden registrieren, um eine InstallationsID und einen Key zu erhalten.

Nun lässt sich Bitwarden mit einem einfachen Befehl installieren (siehe hier). Domainnamen gebt ihr euren Zukünftigen an, Zertifikat wollen wir keines registrieren. Nun wird einmal alles notwendige heruntergeladen, danach will er die installation id und den key von vorher. Wenn er euch fragt, ob ihr ein Zertifikat zu verwenden habt, sagt nein. Generieren wollen wir auch keines.

Wenn das durchgelaufen ist, können wir beginnen, die Config-Files anzupassen.

Beginnen wir mit der bwdata/config.yml. Hier müssen wir beim Punkt real_ips: (weil wir dann eine nginx Reverse-Proxy verwenden) die IP vom Reverse-Proxy angeben, damit später die echte IP von Nutzern aufgelöst werden kann:

Als nächstes kümmern wir uns um die bwdata/env/global.override.env. Im Falle einer mailcow muss man E-Mail wie folgt konfigurieren:

Nach jeder Änderung solltet ihr ./bitwarden.sh rebuild, ./bitwarden.sh updateself und ./bitwarden.sh update machen.

Um immer am aktuellen Stand zu sein, empfiehlt es sich, einen täglichen cronjob wie folgt anzulegen:

Da Passwörter ja etwas ganz wichtiges sind, solltet ihr auch tägliche Backups davon fahren. Das geht zB mit Borg sehr gut. Dazu einfach den kompletten bwdata Ordner sichern, bitwarden legt automatisch jeden Tag um 23:59 einen Dump der Datenbank an, somit muss man sich um Konsistenz keine Gedanken machen.

Nun zum Herzstück des Ganzen, das leider sonst nirgends dokumentiert ist: die Config für einen nginx Reverse-Proxy:

Da ich selbst bei nginx-Configs immer nur durch Trial&Error ans Ziel komme, bin ich für Verbesserungsvorschläge gerne offen!

Es gibt anscheinend auch eine Möglichkeit, fail2ban in das Ganze zu integrieren, sobald ich das weiß, reiche ich es natürlich hier nach.