Zum Hauptinhalt springen
S-EDV news
← Alle Anleitungen
📘 Anleitung Docker 29.05.2026 · 6 min Lesezeit

Bitwarden selbst hosten mit Vaultwarden, Docker & Nginx Proxy Manager

Eigenen Bitwarden-kompatiblen Passwort-Manager betreiben: Vaultwarden per Docker Compose hinter dem Nginx Proxy Manager mit HTTPS einrichten, Registrierung schließen, Updates einspielen und die Daten konsistent sichern.

Geprüft am 30.09.2026 · für vaultwarden 1.37.3, nginx-proxy-manager 2.16.0

WerbelinksMit * markierte Links sind Werbelinks: Bei einem Kauf erhalten wir eine Provision, der Preis bleibt gleich. Als Amazon-Partner verdiene ich an qualifizierten Verkäufen. Mehr dazu

Halb geöffneter Stahltresor mit Schlüssel neben einem kleinen Heimserver als Sinnbild für einen selbst betriebenen Passwort-Tresor

Wenn Sie einen eigenen Passwort-Manager betreiben möchten, ist Vaultwarden die ressourcenschonendste Variante. Es handelt sich um eine in Rust geschriebene, quelloffene Implementierung der Bitwarden-Server-API. Sie spricht dasselbe Protokoll wie der offizielle Bitwarden-Server und funktioniert mit allen offiziellen Bitwarden-Clients (Browser-Erweiterung, Desktop- und Mobile-App). Im Gegensatz zum offiziellen Bitwarden-Server, der .NET samt SQL-Datenbank voraussetzt und mehrere Gigabyte RAM benötigt, läuft Vaultwarden als einzelner Container mit eingebetteter SQLite-Datenbank und kommt mit rund 100 MB RAM aus. Beachten Sie jedoch: Die Bitwarden-Clients erzwingen verschlüsselte Verbindungen, ohne gültiges HTTPS-Zertifikat funktioniert die Einrichtung nicht. Wir lösen das hier über den Nginx Proxy Manager (NPM), einen Reverse Proxy mit Weboberfläche, der Let's-Encrypt-Zertifikate automatisch besorgt.



Voraussetzungen

Bevor Sie starten, sollten Sie Folgendes bereithalten:

  1. Einen Linux-Server (z. B. Ubuntu 24.04 oder Debian 12, x86_64 oder ARM64) mit installiertem Docker und Docker Compose. 1 CPU-Kern und 1 GB RAM genügen; im Test belegten Vaultwarden rund 10 MB und der Nginx Proxy Manager rund 250 MB RAM. Dazu einige GB Speicher für Images und Daten.
  2. Eine eigene Domain bzw. Subdomain wie vault.ihre-domain.de, deren A-Record auf die Server-IP zeigt
  3. Geöffnete Ports 80 und 443 in der Firewall (für den Nginx Proxy Manager bzw. die Zertifikatsausstellung)

Vaultwarden funktioniert zwar auch über eine reine IP-Adresse, aber für TLS – und damit für die meisten Bitwarden-Clients – brauchen Sie eine echte Domain.



Schritt 1: Verzeichnis und Docker-Netzwerk anlegen

Legen Sie zunächst ein eigenes Verzeichnis an, damit Compose-Datei und persistente Daten leicht zu finden und zu sichern sind:

sudo mkdir -p /opt/vaultwarden
cd /opt/vaultwarden

Damit der Nginx Proxy Manager den Vaultwarden-Container später über den Containernamen erreichen kann, legen wir ein gemeinsames Docker-Netzwerk an:

docker network create proxy-net

Verifizieren: docker network ls listet das Netzwerk proxy-net.



Schritt 2: Nginx Proxy Manager einrichten

Falls Sie den Nginx Proxy Manager noch nicht betreiben, legen Sie dafür ein eigenes Verzeichnis und eine Compose-Datei an:

sudo mkdir -p /opt/npm
cd /opt/npm
nano docker-compose.yml

Fügen Sie folgenden Inhalt ein:

services:
  npm:
    image: jc21/nginx-proxy-manager:latest
    container_name: npm
    restart: unless-stopped
    ports:
      - "80:80"     # HTTP / ACME-Challenge
      - "443:443"   # HTTPS
      - "81:81"     # Admin-Oberfläche
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
    networks:
      - proxy-net

networks:
  proxy-net:
    external: true

Starten Sie den Proxy Manager:

docker compose up -d

Rufen Sie anschließend die Admin-Oberfläche unter http://ihre-server-ip:81 auf. Aktuelle Versionen (im Test 2.16.0) haben keine Standard-Zugangsdaten mehr: Beim ersten Aufruf legen Sie im Einrichtungsdialog direkt Ihr Administratorkonto mit eigener E-Mail-Adresse und Passwort an. Erledigen Sie das sofort, bevor jemand anderes die Oberfläche erreicht. Port 81 sollte in der Firewall nicht aus dem Internet erreichbar sein. Version 2.16 bringt eine neuere Certbot-Version mit; wer Zertifikate per DNS-Challenge-Plugin bezieht, sollte nach dem Update eine Erneuerung testen, da einzelne DNS-Plugins laut Release-Notes angepasst werden müssen. Für planbare Updates lässt sich der Tag jc21/nginx-proxy-manager:2.16.0 festschreiben.

Verifizieren: docker compose ps zeigt den Container npm als Up. curl http://127.0.0.1:81/api/ liefert "status":"OK", nach der Einrichtung zusätzlich "setup":true.



Schritt 3: Vaultwarden per Docker Compose starten

Wechseln Sie zurück in das Vaultwarden-Verzeichnis und erstellen Sie die Compose-Datei:

cd /opt/vaultwarden
nano docker-compose.yml

Fügen Sie folgende Konfiguration ein und passen Sie die DOMAIN an Ihre Subdomain an:

services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: always
    environment:
      DOMAIN: "https://vault.ihre-domain.de"
      SIGNUPS_ALLOWED: "true"   # Nach Erstellung des eigenen Kontos auf "false" setzen
    volumes:
      - ./vw-data:/data
    networks:
      - proxy-net

networks:
  proxy-net:
    external: true

Wichtig: Der Container veröffentlicht hier keinen Port nach außen. Der Zugriff erfolgt ausschließlich über den Nginx Proxy Manager im gemeinsamen Netzwerk. Starten Sie den Container:

docker compose up -d

Über DOMAIN weiß Vaultwarden, dass es per HTTPS erreichbar ist – das ist u. a. für Datei-Anhänge und WebAuthn/2FA erforderlich. Das Image vaultwarden/server:latest entsprach im Test Version 1.37.3; für planbare Updates können Sie einen festen Tag wie vaultwarden/server:1.37.3 eintragen.

Verifizieren: docker compose ps zeigt vaultwarden nach etwa einer Minute als (healthy). docker compose logs vaultwarden enthält die Zeile Rocket has launched from http://0.0.0.0:80.



Schritt 4: Proxy Host mit HTTPS einrichten

Wechseln Sie in die Admin-Oberfläche des Nginx Proxy Managers und legen Sie unter Hosts → Proxy Hosts → Add Proxy Host einen neuen Eintrag an.

Im Reiter Details:

  1. Domain Names: vault.ihre-domain.de
  2. Scheme: http
  3. Forward Hostname / IP: vaultwarden (der Containername)
  4. Forward Port: 80
  5. Websockets Support: aktivieren

Im Reiter SSL:

  1. SSL Certificate: „Request a new SSL Certificate“
  2. Force SSL und HTTP/2 Support aktivieren
  3. Den Let's-Encrypt-Bedingungen zustimmen und eine gültige E-Mail-Adresse hinterlegen

Nach dem Speichern fordert der Nginx Proxy Manager automatisch ein Let's-Encrypt-Zertifikat an. Damit das gelingt, muss der A-Record Ihrer Subdomain bereits auf die Server-IP zeigen und Port 80 erreichbar sein.

Verifizieren: curl https://vault.ihre-domain.de/alive liefert einen Zeitstempel in Anführungszeichen, und der Browser zeigt ein gültiges Zertifikat. Kommt 502 Bad Gateway, hängen die Container nicht im selben Netzwerk proxy-net.



Schritt 5: Konto anlegen und Registrierung schließen

Rufen Sie nun https://vault.ihre-domain.de im Browser auf und legen Sie als Erstes Ihr eigenes Benutzerkonto an. Gelingt das, ist die Installation abgeschlossen.

Anschließend sollten Sie die offene Registrierung deaktivieren, damit sich keine Fremden anmelden können. Öffnen Sie dazu die Compose-Datei erneut:

cd /opt/vaultwarden
nano docker-compose.yml

Ändern Sie die entsprechende Zeile auf:

SIGNUPS_ALLOWED: "false"

Übernehmen Sie die Änderung mit:

docker compose up -d

Verifizieren: Ein Registrierungsversuch mit einer neuen E-Mail-Adresse (z. B. im privaten Browserfenster) endet mit der Meldung „Registration not allowed or user already exists“. Ihr eigenes Konto meldet sich weiterhin an.



Updates und Backups

Vaultwarden zu aktualisieren ist dank Docker unkompliziert. Wechseln Sie in das Verzeichnis und holen Sie das neueste Image:

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

Datenbank-Migrationen führt Vaultwarden dabei automatisch durch. Sichern Sie dennoch vor jedem Update Ihre Daten.

Für das Backup ist ausschließlich der Ordner vw-data entscheidend: Er enthält die SQLite-Datenbank (db.sqlite3), die RSA-Schlüssel sowie sämtliche Anhänge und Icons. Geht dieser Ordner verloren, sind Ihre Passwörter unwiederbringlich weg. Damit die SQLite-Datenbank im laufenden Betrieb konsistent gesichert wird, legen Sie zuerst mit dem eingebauten Befehl eine Kopie an und archivieren dann den Ordner. Die Dateien gehören root, daher sudo:

docker exec vaultwarden /vaultwarden backup
sudo tar czf vaultwarden-backup-$(date +%F).tar.gz /opt/vaultwarden/vw-data

Der erste Befehl meldet „Backup to 'data/db_DATUM.sqlite3' was successful“. Diese Datei ist die konsistente Datenbankkopie im Archiv. Kopieren Sie das Archiv anschließend auf ein anderes System.



Nächste Schritte nach der Installation

Vaultwarden ist jetzt einsatzbereit. Sinnvolle Ergänzungen sind das Aktivieren der Zwei-Faktor-Authentifizierung in Ihrem Konto sowie das Einrichten von SMTP für E-Mail-Benachrichtigungen. Admin-Token mit Argon2, Fail2Ban und ein getestetes Backup-Konzept beschreibt die Anleitung Vaultwarden produktiv betreiben. Wer ein Synology-NAS nutzt, findet den Weg über den Container Manager in Vaultwarden auf der Synology. Für weiterführende Konfigurationen lohnt ein Blick in weitere Docker Anleitungen sowie in das offizielle Vaultwarden-Wiki auf GitHub.