Der Betrieb eines Vaultwarden Servers mit einem selbstsignierten Zertifikat ist tatsächlich recht einfach.
NEU: Für ganz ungeduldige habe ich einen Konsole only Abschnitt. Da gibts nur Befehle, keine Erklärungen.
Diese einfachste Ausbaustufe des ersten Teils ist NICHT für den öffentlichen Betrieb geeignet. Auch können damit die Bitwarden Apps nur im lokalen Netzwerk genutzt werden!
Letzte Aktualisierung:
Generell sollten solche Dienst in einer eigenen Umgebung eingerichtet werden. Das macht nicht nur die Sicherheit, sondern auch die Wartung wesentlich einfacher. Jails können relativ einfach gesichert werden und es sind nur die Pakete installiert, die absolut notwendig sind.
Damit sieht das Setup lokal so aus:
┌─────────────────────┐
│ FreeBSD │
│ ┌─────────────────┐ │
│ │ jails/vault │ │
LAN: 0.0.0.0:8000 ──┼─┼─► vaultwarden │ │
│ │ sqlite │ │
│ └─────────────────┘ │
└─────────────────────┘
Es wird ein eigenes Jail benötigt, hier nehmen wir vault als Jail Namen.
Entweder mit bastile console vault eine Konsole in das erstellte Jail starten, oder es erfolgt ein Login per SSH (wenn aktiviert) mit ssh USERNAME@IP oder ssh USERNAME@HOSTNAME, um dann mit su root Rechte zu erlangen.
Paketquellen sollten angepasst werden, siehe separater Artikel.
Nun die Paketquelle mit pkg update aktualisieren und dann die benötigten Pakete installieren: pkg install -y vaultwarden libargon2
Dienste aktivieren damit diese beim Start des Jails automatisch mit starten: service vaultwarden enable.
Mit folgendem Befehl wird eine zufällige und lange Zeichenfolge erzeugt: openssl rand -base64 48, welche wir als ADMINTOKEN nutzen werden, z.B. bznRfGlBEDrZS8HBmELgEtPMMUX7p/HJrCn47tEVT2d8ejjyfYCfXSMbUfewtUca. Damit kann später auf das Admin Portal von Vaultwarden zugegriffen werden. Also gut merken!. Dieser kommt aber nicht in die Konfigurationsdatei, sondern ein per argon2 erzeugter Hash der mit echo -n "bznRfGlBEDrZS8HBmELgEtPMMUX7p/HJrCn47tEVT2d8ejjyfYCfXSMbUfewtUca" | argon2 "$(openssl rand -base64 32)" -e -id -k 65540 -t 3 -p 4 erzeugt wird.
Der Vaultwarden Dienst sollte niemals im Klartext angesprochen, sondern durch eine abgesicherte Verbindung aufgerufen werden, auch lokal.
Mit dem folgenden Befehl wird ein selbstsigniertes Zertifikat erzeugt. Das wird zwar im Browser (einmalig) eine Warnung erzeugen, sorgt aber für eine verschlüsselte Verbindung.
install -o www -g www -d /usr/local/www/vaultwarden/data/ssl/openssl req -new -x509 -days 3650 -nodes -keyout /usr/local/www/vaultwarden/data/ssl/vault.key -out /usr/local/www/vaultwarden/data/ssl/vault.crt -subj "/C=DE/ST=NRW/L=ERKRATH/O=BSDBOX/OU=IT/CN=vault.bsdbox.local"Dann wird OpenSSL ein paar Fragen stellen, die beantwortet werden wollen (mind. der HOSTNAME sollte angepasst werden)
Country Name (2 letter code) [AU]: DE
State or Province Name (full name) [Some-State]: NRW
Locality Name (eg, city) []: ERKRATH
Organization Name (eg, company) [Internet Widgits Pty Ltd]: BSDBOX
Organizational Unit Name (eg, section) []: IT
Common Name (e.g. server FQDN or YOUR name) []: vault.bsdbox.local
Email Address []:
Die damit erzeugten Schlüssel werden noch mit chown www:www /usr/local/www/vaultwarden/data/ssl/* gegen neugierige Blicke abgesichert.
Im Vergleich zur mitgelieferten Standard-Konfiguration hat diese ein paar Änderungen:
ROCKET_ADDRESS)ROCKET_TLS)SMTP_HOST)ADMIN_TOKEN)ORG_GROUPS_ENABLED)Kopiere die initiale Konfigurationsdatei mit cp /usr/local/www/vaultwarden/data/config.json.sample /usr/local/www/vaultwarden/data/rc.conf.d/vaultwarden und mit ee /usr/local/etc/rc.conf.d/vaultwarden anpassen. Dabei die Werte ADMINTOKEN und HOSTNAME ersetzen.
ROCKET_ADDRESS=0.0.0.0
export ROCKET_ADDRESS
ROCKET_PORT=8000
export ROCKET_PORT
ROCKET_TLS='{certs = "/usr/local/www/vaultwarden/data/ssl/vault.crt", key = "/usr/local/www/vaultwarden/data/ssl/vault.key"}'
export ROCKET_TLS
ADMIN_TOKEN='ADMINTOKEN'
export ADMIN_TOKEN
DOMAIN='https://HOSTNAME'
export DOMAIN
SIGNUPS_ALLOWED=true
export SIGNUPS_ALLOWED
ORG_GROUPS_ENABLED=true
export ORG_GROUPS_ENABLED
... und letztendlich den Vaultwarden Dienst starten: service vaultwarden start
Vaultwarden ist dann unter https://IP:8000 oder https://HOSTNAME:8000 erreichbar.
Die Adminkonsole kann mit einem /admin hinter der genutzten Adresse aufgerufen werden (ADMINTOKEN benutzen!) und ab jetzt werden alle weiteren Einstellungen auch dort vorgenommen.

Jeder (lokal) kann sich nun an dem Server registrieren und eigene Tresore und Kennwörter hinterlegen. Dazu muss der Emailversand funktionieren, damit die Email Adressen verifiziert werden können. Das kann ebenfalls über die Admin Webseite eingestellt werden.
service vaultwarden stop
pkg delete -a
rm /usr/local/etc/rc.conf.d/vaultwarden
rm -rf /usr/local/www/vaultwarden
Voilá