Sicherheit

Vaultwarden als Passwort-Manager einrichten

Schritt-für-Schritt-Anleitung, um Vaultwarden auf einem dataforest Seed einzurichten. Zwei Wege, Coolify oder Docker Compose mit Caddy.

AutorMarvin Strauch
Veröffentlicht am20. Mai 2026
Min. Lesezeit~26 min
Wörter4.500
Schwierigkeit Anfänger
StackVaultwarden · Passwort-Manager · Docker · Coolify · Sicherheit

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.

Vaultwarden Docker-Architektur
Vaultwarden Docker-Architektur

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: Auf true lassen 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:

bash
curl -fsSL https://get.docker.com | sh

2. Projektverzeichnis erstellen

Alle Konfigurationsdateien für Vaultwarden werden in einem gemeinsamen Verzeichnis abgelegt:

bash
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:

text
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:

yaml
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: always startet jeden Container automatisch neu, falls er abstürzt oder der Server neugestartet wird
  • depends_on legt die Startreihenfolge fest: Vaultwarden startet vor Caddy
  • volumes speichern Daten dauerhaft außerhalb der Container. Ohne Volumes gehen alle Passwörter beim Neustart verloren

Die Umgebungsvariablen im Überblick:

  • DOMAIN teilt Vaultwarden die öffentliche URL mit. Diese wird für Links in E-Mails, WebSocket-Verbindungen und die Web-Vault-Konfiguration benötigt.
  • SIGNUPS_ALLOWED steuert, ob sich neue Benutzer registrieren können. Nach der Ersteinrichtung auf false setzen.
  • ADMIN_TOKEN schü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:

bash
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:

text
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:

bash
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

bash
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

bash
docker compose ps

Beide Container (caddy, vaultwarden) sollten den Status running zeigen. Falls ein Container nicht startet:

bash
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

  1. Installieren Sie die Bitwarden-Extension aus dem Extension-Store Ihres Browsers (Chrome, Firefox, Safari, Edge)
  2. Auf dem Anmeldebildschirm klicken Sie auf das Dropdown Anmelden auf und wählen Selbst gehostet
  3. Tragen Sie Ihre Server-URL ein: https://vault.ihre-firma.de
  4. 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)

  1. Installieren Sie Bitwarden aus dem App Store oder Google Play Store
  2. Tippen Sie auf dem Anmeldebildschirm auf das Dropdown Anmelden auf und wählen Sie Selbst gehostet
  3. Tragen Sie Ihre Server-URL ein: https://vault.ihre-firma.de
  4. 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:

bash
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:

bash
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

  1. Melden Sie sich im Web Vault an (https://vault.ihre-firma.de)
  2. Navigieren Sie zu Werkzeuge > Daten importieren
  3. Wählen Sie das Format des Exports (z.B. Bitwarden JSON, Chrome CSV, Firefox CSV, KeePass XML)
  4. Laden Sie die Datei hoch
  5. 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-Konfiguration
  • attachments/: Dateianhänge
  • sends/: Verschlüsselte Send-Dateien

Datenbank-Backup

Den Speicherort des Volumes auf dem Host-System finden Sie mit:

bash
docker volume inspect vaultwarden_vw_data --format '{{ .Mountpoint }}'

Erstellen Sie das Backup-Verzeichnis:

bash
mkdir -p /opt/backups

Ein einzelnes Backup der SQLite-Datenbank:

bash
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:

bash
#!/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:

bash
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:

bash
crontab -e

Fügen Sie folgende Zeile hinzu:

text
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:

bash
# 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:

yaml
- SIGNUPS_ALLOWED=false

Anschließend:

bash
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:

bash
docker run --rm -it vaultwarden/server /vaultwarden hash

Aktualisieren Sie den Hash in der .env-Datei und starten Sie den Container neu:

bash
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:

yaml
# ADMIN_TOKEN entfernen oder auskommentieren
bash
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:

text
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:

bash
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:

text
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

bash
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

bash
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.

Bereit loszulegen?

Erstellen Sie Ihren ersten Seed und starten Sie in wenigen Minuten.