Anleitung Vaultwarden Installation

Warum Bitwarden / Vaultwarden?
Wer heutzutage noch überall “123456” als Passwort nutzt, sich selbst aus sperrt weil er sein Passwort vergessen hat oder gar seit 20 Jahren das selbe Passwort in unterschiedlichen Kombinationen verwendet samt eindeutigen Namen die Rückschlüsse auf die Person geben. Der lebt eindeutig hinterm Datenschutz-Mond.
Es gibt sicherlich Alternativen aber wie sehen diese aus? Diverse Apps bieten zwar Online-Speicher an, aber wie sicher ist dieser? Auch Datenschützer empfehlen gerne die KeePass Lösungen. Aber das ständige sichern und aufbewahren sowie das Abgleichen einer einzigen Datenbankdatei kann aufwendig und auch nervig sein.
Einzig Bitwarden bietet hier eine selfhost alternative die es in sich hat. (Es sei auch zu erwähnen, dass es auch kostenlos bei Bitwarden selbst eine 1-Personen Lösung gibt. Auf den Servern von Bitwarden selbstverständlich).
Der OpenSource-Fork vaultwarden kann genauso gut die Apps und Tools von Bitwarden nutzen. Denn das ist ein weiterer Pluspunkt von Bitwarden, die Tatsache, dass es für jede Plattform eine App gibt und für jeden Browser eine Erweiterung. Vaultwarden ist allerdings wesentlich Schlanker und nicht so Ressourcenhungrig wie das Original von Bitwarden.
Voraussetzung
Zunächst wird wieder ein Linux-Server notwendig sein Ob das ein SBC ist oder ein kleiner VPS ist quasi egal. 1 CPU mit 500 MB Ram reicht vollkommen aus.
Da ich hierfür docker-compose und Caddy einsetze ist es ratsam diese Tutorials zu kennen.
Docker-compose Datei
services:
bwrs:
image: vaultwarden/server
restart: unless-stopped
volumes:
- ./bwdata:/data
env_file:
- .env
caddy:
image: caddy
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- ./caddy/caddy_data:/data
- ./caddy/config:/config
env_file:
- .caddyenv
links:
- bwrs
volumes:
caddy_data:
external: true
caddy_config:
Caddy als Compose Zusatz
In diesem Fall habe ich den Caddy-Proxy gleich als Docker Image hinzugefügt. Man erspart sich also die zusätzliche Installation
Nach dem ersten docker compose up -d wird auch im gleichen Verzeichnis eine Caddyfile Datei angelegt, welche folgenden Inhalt hat:
{$DOMAIN} {
tls {$EMAIL}
encode gzip
header / {
# Enable HTTP Strict Transport Security (HSTS)
Strict-Transport-Security "max-age=31536000;"
# Enable cross-site filter (XSS) and tell browser to block detected attacks
X-XSS-Protection "1; mode=block"
# Disallow the site to be rendered within a frame (clickjacking protection)
X-Frame-Options "DENY"
# Prevent search engines from indexing (optional)
X-Robots-Tag "none"
# Server name removing
-Server
}
# The negotiation endpoint is also proxied to Rocket
reverse_proxy /notifications/hub/negotiate bwrs:80
# Notifications redirected to the websockets server
reverse_proxy /notifications/hub bwrs:3012
# Proxy the Root directory to Rocket
reverse_proxy bwrs:80 {
# Send the true remote IP to Rocket, so that bitwarden_rs can put this in the
# log, so that fail2ban can ban the correct IP.
header_up X-Real-IP {remote_host}
}
}
Ebenfalls notwendig ist die Erstellung einer .caddyenv Datei per:
nano .caddyenv
Hier sollte folgendes Hinterlegt werden:
DOMAIN=sub.domain.com
EMAIL=user@mail.com
Zusätzlich dient die .env Datei weitere Parameter einzustellen. Für den Anfang reicht es aus unter Domain= wieder seine eigene Domain einzutragen.