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:
iocage
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:
┌──────────────────────────────────────────┐
│ TrueNAS Optional: │
│ ┌─────────────────┐ ┌──────────────────┐ │
│ │ jails/vault │ │ jails_data/vault │ │
LAN: 0.0.0.0:8000 ─┼─┼─► vaultwarden ──┼─┼─► data │ │
│ │ sqlite │ │ backup │ │
│ └─────────────────┘ └──────────────────┘ │
└──────────────────────────────────────────┘
Es wird ein eigenes Jail benötigt, sollten auf Nginx/PHP weitere Web Applikationen aufbauen.
Hier nehmen wir vault
als Jail Namen.
Dies ist eher für fortgeschrittenen Anwender gedacht, die schon etwas Erfahrung besitzen.
Wie bestimmte Datenverzeichnisse außerhalb des Jails abgelegt werden, wird hier erklärt. Es werden folgende Verzeichnisse benötigt:
└── jails_data
└── vault
├── backup # Ablage für Backups (Im Jail: /mnt/backup)
└── data # Ablage für Daten (Im Jail: /usr/local/www/vaultwarden/data mit id: 80/www)
Sollten die Daten außerhalb des Jails gespeichert werden, dann müssen die Berechtigungen passen und wird in einem separaten Artikel erklärt. Hier wird der Benutzer www
mit der ID: 80
benötigt, aber die Gruppe auf wheel
belasssen.
Login per SSH in das Jail: ssh USERNAME@IP
oder ssh USERNAME@HOSTNAME
, um 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 vaultwarden
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!
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
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
)Eigentlich erwartet Vaultwarden seine Konfigurationsdatei im Ordner /usr/local/etc/rc.conf.d
, was aber außerhalb des Vaultwarden Datenverzeichnisses liegt. Um wirklich alles relevante an einem Ort zu haben, bedienen wir uns einem Kniff mit symbolischen Links: install -o www -g wheel -d /usr/local/www/vaultwarden/data/rc.conf.d
erstellt das Verzeichnis und ln -sf /usr/local/www/vaultwarden/data/rc.conf.d /usr/local/etc/rc.conf.d
schafft die Verknüpfung.
Damit können wir die initiale Konfigurationsdatei mitee /usr/local/etc/rc.conf.d/vaultwarden
anpassen. Dabei die Werte ADMINTOKEN
, VAULTHOSTNAME
, EMAILSERVER
, EMAILADRESSE
und EMAILPASSWORT
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
SMTP_HOST=EMAILSERVER
export SMTP_HOST
SMTP_FROM=EMAILADRESSE
export SMTP_FROM
SMTP_PORT=587
export SMTP_PORT
SMTP_SECURE=true
export SMTP_SSL
SMTP_USERNAME=EMAILADRESSE
export SMTP_USERNAME
SMTP_PASSWORD=EMAILPASSWORT
export SMTP_PASSWORD
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 Emailversnd funktionieren, damit die Email Adressen verifiziert werden können.
tbd
Voilá
Damit das ganze auch für Handys und Co. von unterwegs aus genutzt werden kann, wird in Teil 2 erklärt.