Diese Anleitung zeigt zwei Wege, Vaultwarden auf einem eigenen Server einzurichten: über Coolify (Ein-Klick-Installation) oder per Docker Compose mit Caddy als Reverse Proxy. Nach Abschluss haben Sie einen eigenen Passwort-Manager, der per HTTPS erreichbar ist und alle offiziellen Bitwarden-Clients unterstützt. Die Einrichtung dauert je nach Weg 10 bis 20 Minuten.
Was ist Vaultwarden?
Vaultwarden ist eine alternative Server-Implementierung der Bitwarden-API, geschrieben in Rust. Es ist kein Fork des offiziellen Bitwarden-Servers, sondern eine eigenständige Neuimplementierung, die dieselbe Schnittstelle bedient.
Das bedeutet in der Praxis: Die offiziellen Bitwarden-Clients (Browser-Extension, Mobile-App, Desktop-App, CLI) funktionieren unverändert mit Vaultwarden. Die Bitwarden-App wird installiert und unter den Einstellungen die eigene Server-URL eingetragen.
Die wichtigsten Unterschiede zum offiziellen Bitwarden-Server:
- Ressourcen: Vaultwarden benötigt einen einzelnen Docker-Container und 30 bis 50 MB RAM. Der offizielle Bitwarden-Server benötigt bis zu 11 Container und über 2 GB RAM.
- Datenbank: Vaultwarden nutzt SQLite (eine einzelne Datei). Kein separater Datenbank-Container nötig.
- Premium-Funktionen: TOTP, Dateianhänge, Send, Notfallzugriff und Organisationen sind ohne Einschränkung verfügbar.
- Lizenz: Vaultwarden steht unter der AGPL-3.0-Lizenz (GNU Affero General Public License). Der Quellcode ist frei einsehbar, nutzbar und modifizierbar. Wer eine modifizierte Version als Netzwerkdienst betreibt, muss den geänderten Quellcode veröffentlichen.
Voraussetzungen
- Ein Seed in der dataforest Cloud (1 CPU, 2 GB RAM reicht. Vaultwarden ist extrem ressourcenschonend). Für Teams mit mehr als 20 Nutzern empfiehlt sich 2 CPU und 4 GB RAM.
- SSH-Zugriff auf den Seed
- Eine eigene Domain (z.B. vault.ihre-firma.de), die per DNS A-Record auf die IP-Adresse des Seeds zeigt. Den A-Record setzen Sie bei Ihrem Domain-Anbieter: Tragen Sie dort die IP-Adresse des Seeds als Ziel für die gewünschte Subdomain ein. Nach dem Setzen kann es bis zu einer Stunde dauern, bis der Eintrag weltweit aktiv ist.
- Für Weg A: Coolify auf dem Seed installiert (siehe Coolify-Guide)
Weg A: Installation über Coolify
Coolify bietet Vaultwarden als Ein-Klick-Service. Wenn Coolify bereits auf dem Seed läuft, ist dies der schnellste Weg.
1. Vaultwarden-Service anlegen
Öffnen Sie das Coolify-Dashboard und navigieren Sie zu Ihrem Projekt. Klicken Sie auf New Resource und wählen Sie Service. In der Service-Liste suchen Sie nach Vaultwarden und wählen es aus.
2. Domain konfigurieren
In den Service-Einstellungen tragen Sie Ihre Domain ein (z.B. vault.ihre-firma.de). Coolify konfiguriert automatisch ein Let's-Encrypt-Zertifikat für HTTPS.
3. Umgebungsvariablen prüfen
Coolify setzt die grundlegende Konfiguration automatisch. Prüfen Sie folgende Variablen:
DOMAIN: Muss Ihre vollständige URL enthalten (z.B.https://vault.ihre-firma.de)SIGNUPS_ALLOWED: Auftruelassen für die Ersteinrichtung (wird nach der Registrierung deaktiviert)
4. Service starten
Klicken Sie auf Deploy. Coolify lädt das Vaultwarden-Image, startet den Container und konfiguriert SSL. Nach wenigen Minuten ist der Passwort-Manager unter Ihrer Domain erreichbar.
Weg B: Installation über Docker Compose
Dieser Weg bietet volle Kontrolle über die Konfiguration und eignet sich, wenn kein Coolify genutzt wird.
1. Docker installieren
Vaultwarden und der Reverse Proxy laufen jeweils in einem eigenen Docker-Container. Docker sorgt dafür, dass jede Komponente isoliert und reproduzierbar läuft, ohne das Betriebssystem des Seeds zu verändern.
Verbinden Sie sich per SSH mit Ihrem Seed und installieren Sie Docker:
curl -fsSL https://get.docker.com | sh
2. Projektverzeichnis erstellen
Alle Konfigurationsdateien für Vaultwarden werden in einem gemeinsamen Verzeichnis abgelegt:
mkdir -p /opt/vaultwarden && cd /opt/vaultwarden
3. Caddyfile erstellen
Als Reverse Proxy kommt Caddy zum Einsatz. Caddy benötigt nur wenige Zeilen Konfiguration und holt automatisch ein Let's-Encrypt-Zertifikat für HTTPS.
Erstellen Sie die Datei Caddyfile:
vault.ihre-firma.de {
reverse_proxy vaultwarden:80
}
Ersetzen Sie vault.ihre-firma.de durch Ihre Domain. Caddy leitet alle Anfragen an den Vaultwarden-Container weiter und kümmert sich um die Verschlüsselung.
4. Docker Compose Datei erstellen
Die docker-compose.yml beschreibt beide Container und wie sie zusammenarbeiten. Vaultwarden nutzt SQLite als Datenbank, ein separater Datenbank-Container ist nicht nötig:
services:
caddy:
image: caddy:2-alpine
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- caddy_data:/data
- caddy_config:/config
depends_on:
- vaultwarden
vaultwarden:
image: vaultwarden/server:latest
restart: always
volumes:
- vw_data:/data
environment:
- DOMAIN=https://vault.ihre-firma.de
- SIGNUPS_ALLOWED=true
- ADMIN_TOKEN=${ADMIN_TOKEN}
- SENDS_ALLOWED=true
- EMERGENCY_ACCESS_ALLOWED=true
- SMTP_HOST=${SMTP_HOST}
- SMTP_FROM=${SMTP_FROM}
- SMTP_PORT=587
- SMTP_SECURITY=starttls
- SMTP_USERNAME=${SMTP_USERNAME}
- SMTP_PASSWORD=${SMTP_PASSWORD}
volumes:
vw_data:
caddy_data:
caddy_config:
Ersetzen Sie vault.ihre-firma.de durch Ihre Domain.
Zum Aufbau der Datei:
restart: alwaysstartet jeden Container automatisch neu, falls er abstürzt oder der Server neugestartet wirddepends_onlegt die Startreihenfolge fest: Vaultwarden startet vor Caddyvolumesspeichern Daten dauerhaft außerhalb der Container. Ohne Volumes gehen alle Passwörter beim Neustart verloren
Die Umgebungsvariablen im Überblick:
DOMAINteilt Vaultwarden die öffentliche URL mit. Diese wird für Links in E-Mails, WebSocket-Verbindungen und die Web-Vault-Konfiguration benötigt.SIGNUPS_ALLOWEDsteuert, ob sich neue Benutzer registrieren können. Nach der Ersteinrichtung auffalsesetzen.ADMIN_TOKENschützt das Admin-Panel (siehe nächster Abschnitt)- Die SMTP-Variablen werden über die
.env-Datei gesetzt (siehe Abschnitt SMTP)
5. Admin-Token generieren
Das Admin-Panel ermöglicht die Verwaltung von Benutzern, Organisationen und Server-Einstellungen über den Browser. Es wird durch einen Token geschützt, der als Argon2-Hash in der Konfiguration gespeichert wird. Argon2 ist ein moderner Passwort-Hashing-Algorithmus, der Brute-Force-Angriffe durch hohen Speicher- und Rechenaufwand erschwert.
Generieren Sie den Hash mit dem eingebauten Vaultwarden-Tool. Der Befehl muss in einer direkten SSH-Session ausgeführt werden, da er ein interaktives Terminal benötigt:
docker run --rm -it vaultwarden/server /vaultwarden hash
Das Tool fragt nach einem Passwort und gibt einen vollständigen Argon2-Hash zurück. Die Ausgabe sieht beispielsweise so aus:
Generate an Argon2id PHC string using the 'bitwarden' preset:
Password:
Confirm Password:
ADMIN_TOKEN='$argon2id$v=19$m=65540,t=3,p=4$dG9reW9zYWx0$Y2Z0...(langer Hash)'
Erstellen Sie eine .env-Datei im Projektverzeichnis. Diese Datei enthält den Admin-Token und die SMTP-Zugangsdaten – also alle sensiblen Werte, die nicht direkt in der docker-compose.yml stehen sollen:
cat > .env << 'EOF'
ADMIN_TOKEN='HIER_DIE_KOMPLETTE_AUSGABE_EINFUEGEN'
SMTP_HOST=smtp.example.com
SMTP_FROM=vault@ihre-firma.de
SMTP_USERNAME=vault@ihre-firma.de
SMTP_PASSWORD=SMTP_PASSWORT_HIER
EOF
Ersetzen Sie HIER_DIE_KOMPLETTE_AUSGABE_EINFUEGEN durch den vollständigen Hash inklusive der einfachen Anführungszeichen aus der Ausgabe. Die $-Zeichen im Hash werden durch die einfachen Anführungszeichen vor der Shell-Interpretation geschützt. Passen Sie die SMTP-Werte an die Daten Ihres E-Mail-Anbieters an.
6. Alles starten
docker compose up -d
Die Option -d (detached) startet die Container im Hintergrund, sodass sie auch nach dem Schließen der SSH-Verbindung weiterlaufen.
Der erste Start dauert etwa eine Minute. Docker lädt die Images herunter und Caddy holt ein Let's-Encrypt-Zertifikat.
7. Prüfen ob alles läuft
docker compose ps
Beide Container (caddy, vaultwarden) sollten den Status running zeigen. Falls ein Container nicht startet:
docker compose logs vaultwarden
Rufen Sie anschließend https://vault.ihre-firma.de im Browser auf. Die Vaultwarden-Anmeldeseite (das Bitwarden Web Vault) sollte erscheinen.
Admin-Panel
Das Admin-Panel ist unter https://vault.ihre-firma.de/admin erreichbar. Melden Sie sich mit dem Passwort an, das beim Generieren des Argon2-Hashes verwendet wurde (nicht der Hash selbst).
Im Admin-Panel lassen sich konfigurieren:
- Allgemeine Einstellungen: Domain, Registrierung, Einladungen
- SMTP: E-Mail-Versand für Verifizierung und Passwort-Reset
- Benutzer: Übersicht aller registrierten Benutzer, Konten deaktivieren oder löschen
- Organisationen: Übersicht und Verwaltung
Nach Abschluss der Ersteinrichtung kann das Admin-Panel über die Umgebungsvariable ADMIN_TOKEN deaktiviert werden: Setzen Sie den Wert auf einen leeren String oder entfernen Sie die Variable. Das Admin-Panel ist dann nicht mehr erreichbar.
Benutzer und Organisationen einrichten
Ersten Benutzer registrieren
Rufen Sie https://vault.ihre-firma.de auf und klicken Sie auf Konto erstellen. Geben Sie eine E-Mail-Adresse, ein Master-Passwort und einen Hinweis für das Master-Passwort ein.
Das Master-Passwort wird nie an den Server übertragen. Es dient ausschließlich dazu, den Verschlüsselungsschlüssel auf dem Gerät abzuleiten. Ein vergessenes Master-Passwort kann nicht zurückgesetzt werden. Wählen Sie ein langes, einzigartiges Passwort und bewahren Sie es sicher auf.
Organisation erstellen
Organisationen ermöglichen das Teilen von Passwörtern innerhalb eines Teams. Erstellen Sie eine Organisation im Web Vault unter Neues Unternehmen. Erstellen Sie Sammlungen (Gruppen von Einträgen) und laden Sie Teammitglieder per E-Mail ein (SMTP muss konfiguriert sein).
Rollen steuern die Zugriffsrechte:
- Eigentümer: Volle Kontrolle über die Organisation
- Administrator: Kann Sammlungen und Benutzer verwalten
- Benutzer: Kann zugewiesene Sammlungen nutzen
Browser-Extension und Mobile-App einrichten
Browser-Extension
- Installieren Sie die Bitwarden-Extension aus dem Extension-Store Ihres Browsers (Chrome, Firefox, Safari, Edge)
- Auf dem Anmeldebildschirm klicken Sie auf das Dropdown Anmelden auf und wählen Selbst gehostet
- Tragen Sie Ihre Server-URL ein:
https://vault.ihre-firma.de - Speichern und mit Ihrem Konto anmelden
Die Extension füllt Anmeldeformulare automatisch aus und bietet an, neue Passwörter zu speichern.
Mobile-App (iOS / Android)
- Installieren Sie Bitwarden aus dem App Store oder Google Play Store
- Tippen Sie auf dem Anmeldebildschirm auf das Dropdown Anmelden auf und wählen Sie Selbst gehostet
- Tragen Sie Ihre Server-URL ein:
https://vault.ihre-firma.de - Melden Sie sich an
Für Autofill auf Android: Einstellungen > Passwörter und Autofill > Bitwarden als Autofill-Dienst aktivieren.
Für Autofill auf iOS: Einstellungen > Passwörter > Automatisch ausfüllen > Bitwarden aktivieren.
Desktop-App
Bitwarden bietet Desktop-Apps für Windows, macOS und Linux. Nach der Installation unter Einstellungen die Server-URL eintragen und anmelden.
SMTP für E-Mail-Versand konfigurieren
SMTP ist erforderlich für:
- E-Mail-Verifizierung bei der Registrierung
- Passwort-Hinweis per E-Mail
- Einladungen zu Organisationen
- Zwei-Faktor-Authentifizierung per E-Mail
Die SMTP-Zugangsdaten wurden bereits in der .env-Datei hinterlegt (siehe Abschnitt Admin-Token). Falls Sie die Werte nachträglich ändern möchten, passen Sie die .env-Datei an:
SMTP_HOST=smtp.example.com
SMTP_FROM=vault@ihre-firma.de
SMTP_USERNAME=vault@ihre-firma.de
SMTP_PASSWORD=SMTP_PASSWORT_HIER
Nach dem Ändern der .env-Datei den Container neu starten:
docker compose up -d
Alternativ lässt sich SMTP über das Admin-Panel unter SMTP Email Settings konfigurieren. Dort kann auch eine Test-E-Mail versendet werden, um die Konfiguration zu prüfen.
Import: Von einem bestehenden Passwort-Manager umziehen
Vaultwarden unterstützt den Import aus zahlreichen Formaten. Der Import erfolgt über die Web-Oberfläche unter Werkzeuge > Daten importieren.
Export aus dem bisherigen Dienst
Die meisten Passwort-Manager bieten eine Export-Funktion im Menü unter Einstellungen oder Werkzeuge. Exportieren Sie als JSON oder CSV. Achtung: Die Export-Datei enthält alle Passwörter im Klartext. Löschen Sie die Datei nach dem Import.
Import in Vaultwarden
- Melden Sie sich im Web Vault an (
https://vault.ihre-firma.de) - Navigieren Sie zu Werkzeuge > Daten importieren
- Wählen Sie das Format des Exports (z.B. Bitwarden JSON, Chrome CSV, Firefox CSV, KeePass XML)
- Laden Sie die Datei hoch
- Klicken Sie auf Daten importieren
Unterstützte Formate umfassen unter anderem: Bitwarden, Chrome, Firefox, KeePass, Dashlane, Keeper und viele weitere.
Backup einrichten
Kritische Daten identifizieren
Vaultwarden speichert alles im Docker-Volume vw_data. Die wichtigsten Dateien:
db.sqlite3: Die SQLite-Datenbank mit allen Vault-Einträgen (verschlüsselt)config.json: Server-Konfigurationattachments/: Dateianhängesends/: Verschlüsselte Send-Dateien
Datenbank-Backup
Den Speicherort des Volumes auf dem Host-System finden Sie mit:
docker volume inspect vaultwarden_vw_data --format '{{ .Mountpoint }}'
Erstellen Sie das Backup-Verzeichnis:
mkdir -p /opt/backups
Ein einzelnes Backup der SQLite-Datenbank:
sqlite3 $(docker volume inspect vaultwarden_vw_data --format '{{ .Mountpoint }}')/db.sqlite3 ".backup '/opt/backups/vaultwarden-db-$(date +%Y%m%d).sqlite3'"
Dieser Befehl nutzt die eingebaute SQLite-Backup-Funktion, die auch bei laufendem Betrieb konsistente Backups erzeugt. Anders als ein einfaches Kopieren der Datenbankdatei ist diese Methode sicher vor Datenkorruption.
Automatisches Backup per Skript und Cronjob
Für das automatische Backup empfiehlt sich ein kleines Skript, das den Backup-Vorgang übernimmt und prüft, ob das Backup erfolgreich war. Erstellen Sie die Datei /opt/backups/backup-vaultwarden.sh:
#!/bin/bash
BACKUP_DIR="/opt/backups"
DB_PATH="$(docker volume inspect vaultwarden_vw_data --format '{{ .Mountpoint }}')/db.sqlite3"
BACKUP_FILE="${BACKUP_DIR}/vaultwarden-db-$(date +%Y%m%d).sqlite3"
# Backup erstellen
sqlite3 "$DB_PATH" ".backup '${BACKUP_FILE}'"
# Prüfen, ob das Backup gültig ist
if [ -s "$BACKUP_FILE" ] && sqlite3 "$BACKUP_FILE" "PRAGMA integrity_check;" | grep -q "^ok$"; then
echo "Backup erfolgreich: ${BACKUP_FILE}"
else
echo "Backup fehlgeschlagen oder korrupt" >&2
exit 1
fi
Das Skript ausführbar machen:
chmod +x /opt/backups/backup-vaultwarden.sh
Ein Cronjob ist ein zeitgesteuerter Befehl, der vom Betriebssystem regelmäßig ausgeführt wird. Richten Sie den Cronjob ein:
crontab -e
Fügen Sie folgende Zeile hinzu:
0 3 * * * /opt/backups/backup-vaultwarden.sh
Die fünf Werte 0 3 * * * bedeuten: Minute 0, Stunde 3, jeden Tag, jeden Monat, jeden Wochentag. Das Backup wird also täglich um 03:00 Uhr nachts erstellt.
Optional: Alte Backups automatisch aufräumen
Ohne Rotation wachsen die Backup-Dateien unbegrenzt. Wer alte Backups automatisch löschen möchte, kann das Skript erweitern. Dabei ist Vorsicht geboten: Rotation ohne funktionierendes Backup führt zum Datenverlust. Das folgende Muster löscht Backups, die älter als 30 Tage sind, behält aber immer mindestens 3 Backups – unabhängig vom Alter:
# Am Ende von backup-vaultwarden.sh anfügen (nur im Erfolgsfall):
KEEP_DAYS=30
KEEP_MIN=3
TOTAL=$(find "$BACKUP_DIR" -name "vaultwarden-db-*.sqlite3" | wc -l)
find "$BACKUP_DIR" -name "vaultwarden-db-*.sqlite3" -mtime +${KEEP_DAYS} | while read OLD; do
if [ "$TOTAL" -gt "$KEEP_MIN" ]; then
rm "$OLD"
TOTAL=$((TOTAL - 1))
fi
done
Die Rotation läuft nur innerhalb des Erfolgs-Blocks: Wenn das heutige Backup fehlschlägt, werden keine alten Backups gelöscht. Die Mindestanzahl (KEEP_MIN=3) schützt zusätzlich davor, dass bei längeren Ausfällen (z.B. Server war wochenlang offline) alle Backups verschwinden.
Wichtig: Prüfen Sie regelmäßig, ob die Backups tatsächlich erstellt werden (z.B. per ls -la /opt/backups/). Ein Cronjob kann stillschweigend fehlschlagen, etwa wenn sich der Volume-Pfad nach einem Docker-Update ändert. Rotation ohne funktionierende Backup-Erstellung löscht Ihre letzten guten Sicherungen.
Server-Backup über dataforest Cloud
Die dataforest Cloud bietet automatische tägliche Offsite-Backups als zubuchbare Option. Damit lassen sich alle Daten auf Ihrem Seed sichern und jederzeit wiederherstellen. Backups sind nicht standardmäßig aktiv und müssen in der Cloud-Konsole aktiviert werden.
Sicherheitshärtung
Registrierung deaktivieren
Nach der Ersteinrichtung sollte die öffentliche Registrierung deaktiviert werden:
In der docker-compose.yml:
- SIGNUPS_ALLOWED=false
Anschließend:
docker compose up -d
Neue Benutzer können ab dann nur noch über Einladungen aus einer Organisation hinzugefügt werden (SMTP muss konfiguriert sein).
Zwei-Faktor-Authentifizierung erzwingen
Im Admin-Panel unter Allgemeine Einstellungen lässt sich festlegen, ob 2FA für alle Benutzer erforderlich ist. Empfohlen wird mindestens eine Authenticator-App (TOTP). Für maximale Sicherheit: FIDO2 WebAuthn (z.B. YubiKey) als primäre Methode, TOTP als Backup.
Admin-Token rotieren
Generieren Sie regelmäßig einen neuen Admin-Token:
docker run --rm -it vaultwarden/server /vaultwarden hash
Aktualisieren Sie den Hash in der .env-Datei und starten Sie den Container neu:
docker compose up -d
Admin-Panel deaktivieren
Wenn das Admin-Panel nicht mehr benötigt wird, kann es vollständig deaktiviert werden. Entfernen Sie die ADMIN_TOKEN-Variable aus der docker-compose.yml und der .env-Datei:
# ADMIN_TOKEN entfernen oder auskommentieren
docker compose up -d
Das Admin-Panel ist dann nicht mehr erreichbar. Bei Bedarf kann es jederzeit durch erneutes Setzen des Tokens reaktiviert werden.
Zugriff auf VPN-Verbindungen einschränken
Eine zusätzliche Sicherheitsmaßnahme: Den Zugriff auf die Web-Oberfläche und API auf Geräte beschränken, die über ein VPN mit dem Server verbunden sind. Ohne VPN-Verbindung ist Vaultwarden dann aus dem Internet nicht erreichbar.
Voraussetzung ist ein WireGuard-VPN auf demselben oder einem separaten Server. WireGuard weist verbundenen Geräten IP-Adressen aus einem privaten Netzwerk zu (z.B. 10.0.0.0/24).
Passen Sie das Caddyfile an, um nur Verbindungen aus dem VPN-Netzwerk zuzulassen:
vault.ihre-firma.de {
@vpn remote_ip 10.0.0.0/24
handle @vpn {
reverse_proxy vaultwarden:80
}
respond "Access denied" 403
}
@vpn remote_ip 10.0.0.0/24 definiert einen Matcher, der nur Anfragen von IP-Adressen im WireGuard-Netzwerk akzeptiert. Alle anderen Anfragen erhalten eine 403 Forbidden-Antwort. Ersetzen Sie 10.0.0.0/24 durch den tatsächlichen IP-Bereich Ihrer WireGuard-Konfiguration.
Nach der Änderung Caddy neu laden:
docker compose exec caddy caddy reload --config /etc/caddy/Caddyfile
Dieser Befehl lädt die Konfiguration ohne Neustart, es gibt keine Unterbrechung der Erreichbarkeit.
Beachten Sie: Alle Geräte (Browser, Mobile, Desktop) müssen eine aktive VPN-Verbindung haben, um Passwörter zu synchronisieren. Die Bitwarden-Clients speichern Passwörter lokal im Cache. Ohne VPN ist der Offline-Zugriff weiterhin möglich, neue Einträge werden synchronisiert, sobald die VPN-Verbindung wiederhergestellt ist.
Wer den Zugriff nicht komplett einschränken möchte, kann alternativ nur das Admin-Panel per VPN absichern und die API für alle erreichbar lassen:
vault.ihre-firma.de {
@admin {
path /admin*
not remote_ip 10.0.0.0/24
}
respond @admin "Access denied" 403
reverse_proxy vaultwarden:80
}
Vaultwarden aktualisieren
Regelmäßige Updates sind wichtig, da Vaultwarden Sicherheitslücken schließt und neue Funktionen der Bitwarden-API unterstützt. Prüfen Sie die Release Notes auf GitHub, bevor Sie ein Update durchführen – insbesondere bei Major-Versionen können sich Konfigurationsoptionen ändern.
Vor dem Update: Snapshot erstellen
Erstellen Sie vor jedem Update einen Snapshot Ihres Seeds über die dataforest Cloud-Konsole. Ein Snapshot sichert den gesamten Server-Zustand zu diesem Zeitpunkt. Falls nach dem Update etwas nicht funktioniert, können Sie den Seed auf den Snapshot zurücksetzen und sind sofort wieder auf dem vorherigen Stand.
Update durchführen
cd /opt/vaultwarden
docker compose pull
docker compose up -d
docker compose pull lädt die neueste Version des Vaultwarden-Images herunter. docker compose up -d startet den Container mit dem neuen Image neu. Die Daten im Volume bleiben erhalten.
Nach dem Update prüfen
docker compose ps
docker compose logs vaultwarden | tail -20
Rufen Sie anschließend Ihre Vault-URL im Browser auf und melden Sie sich an. Prüfen Sie im Admin-Panel unter Diagnostics, ob die angezeigte Version der erwarteten entspricht.
Falls nach dem Update Probleme auftreten: Setzen Sie den Seed über die Cloud-Konsole auf den zuvor erstellten Snapshot zurück und prüfen Sie die Release Notes auf Breaking Changes.
Fehlerbehebung
Vaultwarden ist nicht erreichbar:
Prüfen Sie, ob alle Container laufen (docker compose ps). Falls der Caddy-Container nicht startet, ist möglicherweise Port 80 oder 443 bereits durch einen anderen Dienst belegt (ss -tlnp | grep -E ':80|:443').
Kein HTTPS-Zertifikat:
Caddy benötigt eine Domain, die per DNS auf die IP-Adresse des Seeds zeigt. Prüfen Sie mit dig +short vault.ihre-firma.de, ob der A-Record korrekt gesetzt ist. Caddy zeigt Zertifikatsfehler in seinen Logs: docker compose logs caddy.
Login funktioniert nicht:
Stellen Sie sicher, dass die DOMAIN-Variable in der docker-compose.yml exakt mit der URL übereinstimmt, die im Browser aufgerufen wird (inklusive https://).
E-Mails werden nicht versendet: Prüfen Sie die SMTP-Konfiguration im Admin-Panel. Häufige Fehler: falscher Port (587 für STARTTLS, 465 für SSL/TLS), fehlende Authentifizierung oder blockierte Ports. Testen Sie mit der Test-E-Mail-Funktion im Admin-Panel.
Sync funktioniert nicht zwischen Geräten: Vaultwarden nutzt WebSocket-Verbindungen für Echtzeit-Synchronisierung (standardmäßig aktiviert). Stellen Sie sicher, dass der Reverse Proxy (Caddy) WebSocket-Verbindungen weiterleitet – bei der in dieser Anleitung beschriebenen Konfiguration ist das automatisch der Fall. Falls Sie einen anderen Reverse Proxy verwenden, muss dieser WebSocket-Upgrade-Anfragen an Vaultwarden durchreichen.
Zusammenfassung
Nach Abschluss dieser Anleitung läuft ein eigener Passwort-Manager auf einem dedizierten Server, per HTTPS erreichbar und mit automatischen Backups abgesichert. Alle offiziellen Bitwarden-Clients (Browser, Mobile, Desktop) sind verbunden und synchronisieren Passwörter verschlüsselt über den eigenen Server.
Wer Vaultwarden als Einstieg in die dataforest Cloud nutzt: Der Seed ist ein vollwertiger Linux-Server und lässt sich parallel auch für andere Dienste nutzen. Eine Übersicht weiterer Möglichkeiten bieten unsere Lösungen und Anleitungen.