Zum Inhalt

Vaultwarden mit Docker und HTTPS installieren

Veröffentlicht am 7. August 2026 · Geschätzte Lesezeit: 3 Minuten

Vaultwarden ist ein schlanker, selbst gehosteter Passwort-Tresor, der mit den Bitwarden-Apps und Browser-Erweiterungen funktioniert. Caddy stellt automatisch eine verschlüsselte HTTPS-Verbindung bereit. Für die Einrichtung solltest du etwa 25 Minuten einplanen.

Voraussetzungen

  • Ein Linux-Server mit Docker und Docker Compose
  • Eine Domain oder Subdomain, die auf die öffentliche IP des Servers zeigt
  • Die TCP-Ports 80 und 443 sind im Router auf den Server weitergeleitet
  • SSH-Zugriff und ein Benutzer mit sudo-Rechten

1. Ordner anlegen

Führe den Befehl auf dem Docker-Server aus. Er erstellt den Arbeitsordner und wechselt direkt hinein:

sudo mkdir -p /opt/vaultwarden
sudo chown -R "$USER":"$USER" /opt/vaultwarden
cd /opt/vaultwarden

2. Compose-Datei anlegen

Erstelle im Ordner /opt/vaultwarden die Datei compose.yaml mit folgendem Inhalt. Ersetze <vault-domain> durch deine vollständige Subdomain, zum Beispiel vault.example.de.

services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: unless-stopped
    environment:
      DOMAIN: "https://<vault-domain>"
      SIGNUPS_ALLOWED: "true"
    volumes:
      - ./data:/data
    networks:
      - vault-net

  caddy:
    image: caddy:2
    container_name: vaultwarden-caddy
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
      - "443:443/udp"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile:ro
      - ./caddy-data:/data
      - ./caddy-config:/config
    networks:
      - vault-net

networks:
  vault-net:

SIGNUPS_ALLOWED bleibt nur für das erste Konto auf true. Später wird die öffentliche Registrierung wieder geschlossen.

3. HTTPS einrichten

Erstelle daneben die Datei Caddyfile. Ersetze auch hier <vault-domain> durch dieselbe Subdomain wie in der Compose-Datei.

<vault-domain> {
    reverse_proxy vaultwarden:80
}

Caddy fordert das TLS-Zertifikat automatisch an und erneuert es später selbst.

Ports bereits belegt?

Läuft auf dem Server schon ein Reverse Proxy, dürfen 80 und 443 nicht noch einmal belegt werden. Binde Vaultwarden dann nur intern ein und trage es im vorhandenen Proxy ein. Zwei Reverse Proxys können diese Ports nicht teilen.

4. Container starten

Starte beide Container im Ordner /opt/vaultwarden:

docker compose up -d

Prüfe anschließend den Zustand:

docker compose ps

Falls Caddy kein Zertifikat erhält, zeigen seine letzten Meldungen meist den Grund:

docker compose logs --tail=50 caddy

5. Erstes Konto erstellen und Anmeldung schließen

Öffne https://<vault-domain> im Browser und erstelle dein eigenes Konto. Nutze ein langes, einmaliges Master-Passwort und bewahre den Wiederherstellungscode für die Zwei-Faktor-Anmeldung sicher außerhalb des Servers auf.

Ändere danach in compose.yaml diese Zeile:

      SIGNUPS_ALLOWED: "false"

Übernimm die Änderung im Ordner /opt/vaultwarden:

docker compose up -d

Der Server kennt dein Master-Passwort nicht

Ein vergessenes Master-Passwort kann nicht durch den Serverbetreiber zurückgesetzt werden. Sichere Wiederherstellungscodes und teste die Anmeldung in einem zweiten Browser, bevor du wichtige Passwörter ausschließlich hier speicherst.

6. Backup und Rückweg

Stoppe Vaultwarden kurz, damit Datenbank, Anhänge und Schlüssel einen konsistenten Stand haben:

cd /opt/vaultwarden
docker compose stop vaultwarden

Lege den Zielordner an, falls er auf deinem System noch nicht vorhanden ist:

sudo mkdir -p /var/backups

Erstelle anschließend ein datiertes Archiv. Der Befehl läuft auf dem Server:

sudo tar -czf "/var/backups/vaultwarden-$(date +%F).tar.gz" -C /opt/vaultwarden data Caddyfile compose.yaml

Starte den Dienst wieder:

docker compose start vaultwarden

Kopiere das Archiv zusätzlich auf einen anderen Datenträger. Für einen Rückweg stoppst du den Stack, entpackst das gewünschte Archiv wieder nach /opt/vaultwarden und startest ihn erneut.

7. Aktualisieren und typische Fehler

Vor einem Update zuerst ein Backup anlegen. Danach lädst du die aktuellen Images und erstellst die Container neu:

cd /opt/vaultwarden
docker compose pull
docker compose up -d

Bei einem Fehler prüfst du die Protokolle:

docker compose logs --tail=100 vaultwarden caddy
  • Zertifikat fehlt: DNS-Eintrag und Portweiterleitungen 80/443 prüfen.
  • 502 Bad Gateway: Beide Container müssen im Netzwerk vault-net laufen.
  • Registrierung noch sichtbar: Seite in einem privaten Browserfenster öffnen; Clients können die Konfiguration zeitweise zwischenspeichern.
  • App verbindet sich nicht: In der Bitwarden-App vor der Anmeldung als selbst gehostete Server-URL https://<vault-domain> eintragen.

8. Quellen und Video

Fertig

Vaultwarden ist nun ausschließlich per HTTPS erreichbar, das erste Konto wurde angelegt und weitere öffentliche Registrierungen sind gesperrt. Melde dich zum Test in einem privaten Browserfenster an und speichere einen unwichtigen Testeintrag. Prüfe anschließend, ob er in einer Bitwarden-App synchron erscheint.