Vaultwarden im LXC Container installieren
Moin!
Vaultwarden ist ein genialer und sehr intuitiver Passwortmanager. Er verfügt über eine schöne Oberfläche und ein breites Set an Features. Zudem ist er kostenfrei und kann selbst gehostet werden. Vaultwarden basiert auf der Server API von Bitwarden, allerdings wurde es in Rust programmiert, um Ressourcen sparend, arbeiten zu können. Durch die Implementierung der Bitwarden API ist es möglich, die offiziellen Client Applikation für die üblichen Betriebssysteme zu verwenden.
Solltet ihr bereits eine Installation im Betrieb haben und seit lediglich hier, um die zusätzlichen Einstellungen zur Erhöhung der Sicherheit zu konfigurieren, könnt ihr direkt dorthin springen. Gleicht aber bitte eure Installation mit meiner ab, um Ungereimtheiten zu vermeiden. Ich werde Lesern nur bei Installation unterstützen, die nach meinen Beiträgen getätigt wurden.
Ihr benötigt dazu:
- Docker und Docker-compose optional mit Portainer
- Optional: Reverse Proxy Server
- Optional: eine Subdomain
- Optional: seperate MariaDB Datenbank
Ich starte immer gerne mit einem neuen LXC Container auf Basis von Debian 11, mit installierten „sudo“, Docker und Portainer. Für solche Fälle klone ich ein vorbereitetes Template innerhalb von Proxmox. Generell kann man auch mehrere Container auf einem Docker Host laufen lassen, allerdings trenne ich das immer auf. Es ist aber bei Weitem kein muss.
Optional: Ich persönlich lege immer einen User für Docker an, der keine „sudo“ Berechtigung hat, aber Container verwalten darf. Dazu legen wir einen User an und fügen ihn der Docker Gruppe hinzu.
adduser vaultwarden
usermod -aG docker vaultwarden
su vaultwarden
Anschließend erstellen wir einen neuen Ordner. Dort angekommen erstellen wir die benötigte docker-compose.yml.
Optional: Wer mit MariaDB arbeiten und auf die interne Datenbank verzichten möchte, fügt die Zeile mit -e DATABASE_URL hinzu.
mkdir /home/username/vaultwarden
nano docker-compose.yml
version: '3'
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: always
environment:
- DATABASE_URL=mysql://username:passwort@ip-mariadb/datenbankname # MIT MariaDB
- LOG_LEVEL=info
- TZ=Europe/Berlin
ports:
- 80:80
- 443:443
volumes:
- /vw-data:/data/
Nun müssen wir den Container noch starten. Das gestaltet sich sehr einfach. Dazu im Verzeichnis in der die docker-compose.yml liegt, einfach den folgenden Befehl ausführen.
docker-compose up -d
So sieht die Basisinstallation aus. Ihr könnt jetzt Vaultwarden über die IP eures Containers erreichen.
Optional: Nun erstellen wir bei unserem Domainprovider eine Subdomain und hinterlegen dort unsere öffentliche IP. Anschließend hinterlegt ihr bei eurem Reverse Proxy Server die Weiterleitung auf die gewünschte interne IP und generiert ein SSL Zertifikat mit Let’s Encrypt.
Schon könnt ihr Vaultwarden über https://subdomain.euredomain.tld erreichen.
Weitere nützliche Einstellungen zur Erhöhung der Sicherheit
- Admin Web UI aktivieren
- Offene User Registrierung deaktivieren
- User Invitation deaktivieren
- SMTP Server für Benachrichtigungen von Vaultwarden konfigurieren
- User zur Verifikation der E-Mail zwingen
- Passworthinweis dauerhaft deaktivieren
Für jede Einstellung, die wir hinzufügen, stoppen wir den Container und editieren die docker-compose.yml. Danach wird der Container neu gebaut und gestartet. Die Einstellungen werden unter dem Punkt „environment:“ ergänzt. Dies funktioniert wie folgt:
docker-compose down
nano docker-compose.yml
docker-compose up -d
Admin Web UI aktivieren
Fangen wir mit der Admin Web UI an. Zuerst generieren wir uns einen sicheren Admin Token. Dieser sichert den Zugang zum Admin Web UI und verhindert, dass Unbefugte Zugriff erhalten.
openssl rand -base64 64
gE6i9XNXTnG9mzBob5GTJMsLxDAcqudeGBcZnwuDDleN2aD+Qlm4dGMMDCMBtL/Y
CtaKBZlglE9I0uhwhu6cfA==
// Token in die Zwischenablage kopieren
// Bedenke! Jeder, der diesen Token hat, besitzt die Kontrolle über DEINEN Passwortmanager!!!
Nun docker-compose.yml editieren und folgende Variabel ergänzen.
nano docker-compose.yml
environment:
- ADMIN_TOKEN=DenVorherErstelltenAdmintokenEinfügen
Das Admin Web UI könnt ihr ganz einfach mit https://subdomain.euredomain.tld/admin aufrufen.
Offene User Registrierung deaktivieren
Wer nicht möchte, dass fremde Personen sich einen Account in eurem Passwortmanager erstellen kann, deaktiviert die User Registrierung von Vaultwarden.
environment:
- SIGNUPS_ALLOWED=false
User Invitation deaktivieren
Um eure Nutzer daran zu hindern, andere User ohne euer Wissen einladen zu können, deaktivieren wir diese Funktion ebenfalls.
environment:
- INVITATIONS_ALLOWED=false
SMTP Server für Benachrichtigungen von Vaultwarden konfigurieren
Dies ist die Konfiguration für Version bis einschließlich 1.24
Damit Vaultwarden auch in der Lage ist User per E-Mail zu benachrichtigen, müssen wir einen entsprechenden SMTP Server konfigurieren. Die benötigten Informationen könnt ihr bei eurem E-Mail-Anbieter erfragen.
environment:
- SMTP_FROM_NAME=Vaultwarden
- SMTP_HOST=domain.euresanbieters.tld
- SMTP_FROM=vaultwarden.euredomain.tld
- SMTP_PORT=587 oder 465
- SMTP_SSL=true
- SMTP_EXPLICIT_TLS=true
- SMTP_USERNAME=euerloginname
- SMTP_PASSWORD=euerloginpasswort
Dies ist die Konfiguration ab Version 1.25 und neuer.
Damit Vaultwarden auch in der Lage ist User per E-Mail zu benachrichtigen, müssen wir einen entsprechenden SMTP Server konfigurieren. Die benötigten Informationen könnt ihr bei eurem E-Mail-Anbieter erfragen. Je nach Anbieter müsst ihr die Kombination aus SMTP_PORT und SMTP_SECURITY anpassen. Entweder „starttls“ mit Port 587 oder „forcetls“ mit Port 465.
environment:
- SMTP_FROM_NAME=Vaultwarden
- SMTP_HOST=domain.euresanbieters.tld
- SMTP_FROM=vaultwarden.euredomain.tld
- SMTP_PORT=587 oder 465
- SMTP_SECURITY=starttls oder force_tls
- SMTP_USERNAME=euerloginname
- SMTP_PASSWORD=euerloginpasswort
User zur Verifikation der E-Mail zwingen
Als Nächstes kümmern wir uns, um die Sicherheit unserer Nutzer, indem wir sie dazu zwingen Ihre E-Mail-Adresse zu bestätigen. Die ist im Falle eines vergessenen Passworts sehr sinnvoll.
environment:
- SIGNUPS_VERIFY=true
Passworthinweis dauerhaft deaktivieren
Als Nächstes besteht noch die Möglichkeit, den Passworthinweis zu unterbinden. Dies kann je nach Verständnis für Sicherheit der User durchaus sinnvoll sein.
environment:
- SHOW_PASSWORD_HINT=false
Grüße gehen aus dem Archiv!