Vaultwarden unter Ubuntu 20.04 mit Docker und Caddy installieren
Vaultwarden ist eine gemeinschaftlich entwickelte Alternative zum offiziellen Bitwarden-Server und wurde in Rust programmiert. Im Gegensatz zur offiziellen Version benötigt Vaultwarden deutlich weniger Systemressourcen, ist jedoch vollständig kompatibel mit den offiziellen Bitwarden-Clients. Diese Anleitung beschreibt die Installation von Vaultwarden mithilfe von Docker und docker-compose unter Ubuntu 20.04 und zeigt, wie die Verbindung mithilfe von Caddy abgesichert wird.
Voraussetzungen für das System
Vor der Installation sollte Folgendes erfüllt sein:
- Ein Ubuntu 20.04 System sollte bereits laufen.
- Das System sollte auf dem aktuellen Stand sein.
- Ein Benutzerkonto mit sudo-Rechten (nicht root) sollte vorhanden sein.
- Du solltest als dieser Benutzer auf den Server zugreifen.
- Port 443 sollte für eingehenden Datenverkehr freigegeben sein.
- Ein DNS A-Eintrag sollte eingerichtet sein, der eine (Sub-)Domain mit der IP deines Servers verbindet – Caddy benötigt eine auflösbare Domain, um ein TLS/SSL-Zertifikat zu generieren.
Docker Engine installieren
Starte mit der Entfernung eventuell vorhandener älterer Docker-Versionen und Komponenten:
$ sudo apt remove docker docker.io containerd runc
Anschließend sollte snapd auf den neuesten Stand gebracht werden:
$ sudo snap install core; sudo snap refresh core
Nun erfolgt die Installation von Docker über Snap:
$ sudo snap install docker
Vaultwarden einrichten
Docker-Container vorbereiten
Erstelle zunächst ein eigenes Verzeichnis für Vaultwarden und wechsle anschließend in dieses Verzeichnis:
$ mkdir ~/vaultwarden
$ cd ~/vaultwarden
Erstelle nun die Datei docker-compose.yml
und öffne sie im Editor:
$ nano docker-compose.yml
Füge in die Datei folgende Konfiguration ein:
version: '3'
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: always
environment:
- WEBSOCKET_ENABLED=true
volumes:
- ./vw-data:/data
caddy:
image: caddy:2
container_name: caddy
restart: always
ports:
- 80:80
- 443:443
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- ./caddy-config:/config
- ./caddy-data:/data
environment:
- DOMAIN=
- EMAIL=
- LOG_FILE=/data/access.log
Trage deine eigene Domain oder Subdomain ein, indem du die DOMAIN
-Variable im Abschnitt environment
des Caddy-Containers entsprechend aktualisierst:
environment:
- DOMAIN=https://example.com
Gib zusätzlich eine gültige E-Mail-Adresse in der EMAIL
-Variable an, damit Let’s Encrypt ein TLS-Zertifikat ausstellen kann:
environment:
- DOMAIN=https://example.com
- EMAIL=user@example.com
Um die Änderungen im Nano-Editor zu speichern und den Editor zu schließen, drücke Strg + X, bestätige mit Y und beende den Vorgang mit Enter.
Die Caddyfile einrichten
Erstelle zunächst die Konfigurationsdatei für Caddy und öffne sie zur Bearbeitung:
$ nano Caddyfile
Füge anschließend die folgende Konfiguration in die Datei ein:
{$DOMAIN}:443 {
log {
level INFO
output file {$LOG_FILE} {
roll_size 10MB
roll_keep 10
}
}
# TLS-Zertifikat über ACME HTTP-01 Challenge beziehen
tls {$EMAIL}
encode gzip
# Zusätzliche HTTP-Header zur Absicherung
header {
Strict-Transport-Security "max-age=31536000;"
X-XSS-Protection "1; mode=block"
X-Frame-Options "DENY"
X-Robots-Tag "none"
-Server
}
# Weiterleitung der Benachrichtigungen per WebSocket
reverse_proxy /notifications/hub vaultwarden:3012
reverse_proxy vaultwarden:80 {
header_up X-Real-IP {remote_host}
}
}
Speichere die Datei und beende den Editor, indem du Strg + X drückst, danach mit Y bestätigst und mit Enter abschließt.
Diese Konfiguration weist Caddy an, eingehenden HTTPS-Datenverkehr auf Port 443 an Vaultwarden weiterzuleiten. Zusätzlich sind Sicherheits-Header gesetzt – darunter HSTS für strikte Transport-Sicherheit, Schutz vor Cross-Site-Scripting, Blockierung der Darstellung in Frames zum Schutz vor Clickjacking, die Verhinderung von Indexierung durch Suchmaschinen sowie das Entfernen der Caddy-Serverkennung.
Vaultwarden starten
Zum Starten von Vaultwarden verwende den Befehl docker-compose
im Hintergrundmodus. Der Startvorgang kann einige Augenblicke in Anspruch nehmen:
$ sudo docker-compose up -d
Prüfe, ob die Container korrekt laufen, indem du den Status mit docker ps
abfragst:
$ sudo docker ps
Im Ergebnis sollte ein Status wie „Up“ angezeigt werden, der bestätigt, dass der Container seit Sekunden oder Minuten aktiv ist.
Sicherheitsoptionen verbessern
Vaultwarden erlaubt zusätzliche Konfigurationsmöglichkeiten, um die Sicherheit der Installation zu erhöhen.
Benutzerregistrierung deaktivieren
Standardmäßig ist es allen Nutzern möglich, sich bei deiner Vaultwarden-Instanz selbstständig zu registrieren. Das ist in der Einrichtungsphase hilfreich, kann später jedoch ein Risiko darstellen.
Sobald dein eigenes Benutzerkonto eingerichtet ist, kannst du die Neuregistrierung durch folgende Änderung in der Datei docker-compose.yml
deaktivieren:
services:
vaultwarden:
... other configuration ...
environment:
- SIGNUPS_ALLOWED=false
... other configuration ...
Einladungsfunktion abschalten
Vaultwarden ermöglicht es bestehenden Nutzern, andere Personen per Einladung hinzuzufügen. Für Einzelnutzer oder kleine, vertrauenswürdige Gruppen ist diese Funktion meist überflüssig.
Um sie zu deaktivieren, setze die Variable INVITATIONS_ALLOWED
auf false
:
services:
vaultwarden:
... other configuration ...
environment:
- INVITATIONS_ALLOWED=false
... other configuration ...
Passworthinweise ausblenden
Im offiziellen Bitwarden-Server werden Passworthinweise in der Regel per E-Mail zugestellt. Vaultwarden hingegen zeigt diese Hinweise direkt im Browser an – das spart eine E-Mail-Konfiguration.
Wenn du dieses Verhalten deaktivieren möchtest, füge die Variable SHOW_PASSWORD_HINT
in die docker-compose.yml
ein und setze sie auf false
:
services:
vaultwarden:
... other configuration ...
environment:
- SHOW_PASSWORD_HINT=false
... other configuration ...
Abschließende Hinweise
Wenn du alle oben beschriebenen Schritte durchgeführt hast, steht dir nun eine funktionstüchtige und abgesicherte Vaultwarden-Installation unter Ubuntu 20.04 zur Verfügung – betrieben mit Docker und Caddy. Sämtliche sicherheitsrelevanten Einstellungen kannst du direkt in der Datei docker-compose.yml
anpassen, wodurch du maximale Kontrolle über Registrierungsmöglichkeiten, Einladungsrechte und die Anzeige von Passworthinweisen erhältst.
Achte darauf, deine Docker-Container regelmäßig zu aktualisieren und die Zugriffprotokolle kontinuierlich zu überwachen, um ungewöhnliches Verhalten frühzeitig zu erkennen. Die Protokollierung von Caddy erfolgt automatisch in der Datei, die über die Variable LOG_FILE
festgelegt wurde. Das erleichtert dir die Nachverfolgung von Zugriffen und die kontinuierliche Überwachung der Anwendung.
Falls du planst, deine Installation zu erweitern oder mit anderen Systemen zu integrieren, findest du in der offiziellen Dokumentation von Vaultwarden und Docker hilfreiche Informationen zu erweiterten Konfigurationsmöglichkeiten – darunter Einstellungen per Umgebungsvariablen, Backup-Konzepte oder Szenarien für mehrere Benutzer.