Vaultwarden auf der Synology: eigener Passwortmanager mit Docker und SQLite-Backup
Vaultwarden bringt einen Bitwarden-kompatiblen Passwortmanager auf Ihre Synology-NAS. Diese Anleitung zeigt das komplette Setup im Container Manager mit SQLite, Admin-Panel, Reverse Proxy für HTTPS und einer konsistenten Backup-Strategie für den Datenordner.
Geprüft am 29.09.2026 · für vaultwarden 1.37.3
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

Mit einem eigenen Passwortmanager auf der NAS liegen Ihre Zugangsdaten auf eigener Hardware statt bei einem Cloud-Anbieter. Vaultwarden ist eine schlanke, in Rust geschriebene Server-Implementierung, kompatibel zum Bitwarden-Protokoll: Sie nutzen die normalen Bitwarden-Apps und Browser-Erweiterungen, der Tresor liegt auf Ihrer Synology. Sie bauen Vaultwarden im Container Manager mit SQLite auf, schalten das Admin-Panel frei, stellen HTTPS über einen Reverse Proxy bereit und richten ein konsistentes Backup des Datenordners ein.
Was ist Vaultwarden und warum SQLite?
Vaultwarden (früher bitwarden_rs) ist ein inoffizieller, aktiv gepflegter Bitwarden-Server mit praktisch allen Funktionen für Privatnutzer und kleine Teams: Passwörter, Notizen, TOTP-Codes, Dateianhänge, Organisationen, Passkeys und Bitwarden Send. Gegenüber dem offiziellen Server braucht er wenig Ressourcen; ein Container mit wenigen hundert MB RAM genügt.
Standarddatenbank ist SQLite: kein separater Datenbank-Container, keine Verbindungsdaten, kein zusätzlicher RAM. Die Datei db.sqlite3 liegt im Datenordner, das Backup umfasst im Wesentlichen diesen einen Ordner.
Wichtig vorab: Browser-Erweiterungen und mobile Apps von Bitwarden sprechen nur mit einem Server über HTTPS; WebAuthn, Passkeys und die Web-Vault-Oberfläche funktionieren ohne gültiges Zertifikat nicht. Deshalb läuft Vaultwarden hinter einem Reverse Proxy, der die verschlüsselte Verbindung annimmt und intern weiterreicht. Den HTTP-Port nutzen Sie nur intern zum Testen.
Voraussetzungen
- Synology-NAS mit DSM 7.2 oder neuer und Paket Container Manager. 2 CPU-Kerne und 2 GB RAM im NAS reichen; der Container belegt meist unter 200 MB RAM und wenige hundert MB Speicher.
- Ein NAS-Modell mit x86-64-CPU (die meisten Plus- und xs-Modelle). Das offizielle Image ist ein Multi-Arch-Image und läuft auch auf ARM64-Modellen, sofern diese den Container Manager unterstützen.
- Administrator-Konto in DSM und Zugriff auf File Station und Systemsteuerung
- Ein freier Host-Port für den Container, z. B. 8081 (DSM belegt 80 und 443 selbst)
- Eine Domain oder Subdomain, die auf Ihre NAS zeigt (z. B.
vault.example.deper DynDNS/DDNS), damit der Reverse Proxy ein gültiges Let's-Encrypt-Zertifikat erhält - Einmalig SSH-Zugriff oder ein anderer Rechner mit Docker, um den Hash für das Admin-Token zu erzeugen (Schritt 2)
- Optional, aber empfohlen: das Paket Hyper Backup für die automatisierte Sicherung
Schritt 1: Datenordner anlegen
Legen Sie in der File Station im freigegebenen Ordner docker (ggf. zuerst anlegen) einen Unterordner für Vaultwarden an. Zielstruktur:
/volume1/docker/vaultwarden
/volume1/docker/vaultwarden/vw-dataIn vw-data liegen alle dauerhaften Daten: db.sqlite3, der Ordner attachments, die config.json und die Schlüsseldateien rsa_key.* für die Token-Signatur. Dieser Ordner ist Ihr gesamter Tresor und das Backup-Ziel.
Verifizieren: In der File Station sind unter docker die Ordner vaultwarden und darin vw-data sichtbar.
Schritt 2: Admin-Token erzeugen
Das Admin-Panel unter /admin wird über ADMIN_TOKEN abgesichert; das Projekt empfiehlt statt Klartext einen Argon2-Hash, erzeugt mit dem Vaultwarden-Image selbst. Dafür ist ausnahmsweise SSH nötig, weil der Befehl interaktiv nach dem Passwort fragt. Mit aktiviertem SSH führen Sie aus:
sudo docker run --rm -it vaultwarden/server /vaultwarden hashDas Tool fragt nach einem Passwort und gibt einen Hash aus, der mit $argon2id$... beginnt; kopieren Sie den kompletten String. Ohne SSH erzeugen Sie ihn auf einem anderen Rechner mit Docker mit demselben Befehl. SSH können Sie danach wieder abschalten.
Hinweis zum Argon2-String: In einer YAML-Datei muss jedes $ verdoppelt werden ($$), sonst interpretiert Docker Compose es als Variable.
Verifizieren: Die Ausgabe enthält eine Zeile, die mit ADMIN_TOKEN='$argon2id$v=19$m=65540,t=3,p=4$ beginnt.
Schritt 3: docker-compose.yml erstellen
Legen Sie die Datei docker-compose.yml in /volume1/docker/vaultwarden ab (oder fügen Sie den Inhalt im Container Manager ein) und passen Sie ADMIN_TOKEN und DOMAIN an:
services:
vaultwarden:
image: vaultwarden/server:1.37.3
container_name: vaultwarden
restart: unless-stopped
environment:
DOMAIN: "https://vault.example.de"
ADMIN_TOKEN: "$$argon2id$$v=19$$m=65540,t=3,p=4$$HIER_IHR_HASH"
SIGNUPS_ALLOWED: "true"
volumes:
- ./vw-data:/data
ports:
- "8081:80"Kurz erklärt:
image: offizielles Image mit fester Version (Stand der Prüfung: 1.37.3, aktuelle Version auf Docker Hub). Mit:latestwürde ein Neuaufbau ungeplant eine neue Version ziehen.DOMAIN: vollständige URL, unter der Vaultwarden erreichbar ist; nötig für WebAuthn, Passkeys und Mails, muss exakt mit der späteren Adresse übereinstimmen.ADMIN_TOKEN: Ihr Argon2-Hash aus Schritt 2, mit verdoppelten Dollarzeichen.SIGNUPS_ALLOWED: vorersttrue, damit Sie Ihr erstes Konto anlegen können. Nach der Erstanlage stellen Sie das auffalse(siehe Schritt 7).ports: der interne Port 80 wird auf den freien Host-Port 8081 gelegt.
Verifizieren: Die Datei liegt in der File Station unter docker/vaultwarden, und im ADMIN_TOKEN steht vor jedem Abschnitt $$ statt $.
Schritt 4: Projekt im Container Manager anlegen
Wechseln Sie im Container Manager links auf Projekt und klicken Sie auf Erstellen:
- Vergeben Sie als Projektnamen
vaultwarden. - Wählen Sie als Pfad den Ordner
/volume1/docker/vaultwarden. - Container Manager erkennt die vorhandene
docker-compose.yml. Alternativ wählen Sie „docker-compose.yml erstellen“ und fügen den YAML-Inhalt aus Schritt 3 direkt ein. - Folgende Dialoge bestätigen; den Web-Portal-Schritt überspringen, da ein eigener Reverse Proxy zum Einsatz kommt.
- Klicken Sie auf Fertig. Container Manager lädt das Image herunter und startet den Container.
Verifizieren: Das Projekt zeigt nach kurzer Zeit den Status „Wird ausgeführt“, und im Ordner vw-data sind Dateien wie rsa_key.pem und db.sqlite3 entstanden.
Schritt 5: Erster Test über HTTP
Prüfen Sie vor dem Reverse Proxy, ob der Container läuft:
http://NAS-IP:8081Ersetzen Sie NAS-IP durch die lokale IP der Synology. Legen Sie noch kein Konto an: Über HTTP funktionieren WebAuthn und Passkeys nicht, und die Web-Oberfläche verweigert teilweise den Dienst.
Verifizieren: Die Vaultwarden-Anmeldeseite erscheint. Ein Hinweis, dass eine sichere Verbindung nötig ist, ist an dieser Stelle normal.
Schritt 6: HTTPS über Reverse Proxy
Für Browser-Erweiterungen und Apps braucht Vaultwarden ein gültiges Zertifikat. Zwei gängige Wege:
Variante A: DSM-eigener Reverse Proxy
DSM bringt einen Reverse Proxy mit. Öffnen Sie Systemsteuerung → Anmeldeportal → Erweitert → Reverse Proxy und erstellen Sie eine neue Regel:
- Quelle: Protokoll HTTPS, Hostname
vault.example.de, Port 443 - Ziel: Protokoll HTTP, Hostname
localhost, Port8081 - Im Reiter Eigene Header über „WebSocket erstellen“ die WebSocket-Header hinzufügen, damit der Live-Sync funktioniert
Anschließend hinterlegen Sie in der Systemsteuerung unter Sicherheit → Zertifikat ein Let's-Encrypt-Zertifikat für Ihre Domain und ordnen es über Einstellungen dem Reverse-Proxy-Eintrag zu.
Variante B: Nginx Proxy Manager (NPM)
Mit vorhandenem Nginx Proxy Manager (Einrichtung siehe Nginx Proxy Manager auf der Synology) legen Sie einen Proxy Host an: Domain vault.example.de, Weiterleitung an die NAS-IP auf Port 8081, Schema http. Aktivieren Sie im Reiter SSL ein Let's-Encrypt-Zertifikat samt „Force SSL“ und im Reiter Details Websockets Support, weil der Live-Sync seit Version 1.29 über denselben Port wie die Web-Oberfläche läuft.
Verifizieren: https://vault.example.de lädt im Browser ohne Zertifikatswarnung und zeigt die Vaultwarden-Anmeldeseite.
Schritt 7: Konto anlegen und Registrierung schließen
Rufen Sie Ihre HTTPS-Adresse auf und klicken Sie auf Konto erstellen. Das Master-Passwort entschlüsselt den kompletten Tresor und kann von niemandem zurückgesetzt werden; wählen Sie es stark und einzigartig und bewahren Sie es sicher auf.



Sobald Ihr Konto (und ggf. die Ihres Teams) steht, schließen Sie die Registrierung in der docker-compose.yml:
SIGNUPS_ALLOWED: "false"Stoppen Sie das Projekt im Container Manager und wählen Sie Aktion → Erstellen, damit der Container neu angelegt wird. Neue Nutzer laden Sie danach über das Admin-Panel oder eine Organisation im Web-Vault ein.
Verifizieren: Ein Registrierungsversuch in einem privaten Browserfenster endet mit der Meldung, dass die Registrierung nicht erlaubt ist. Die Anmeldung mit Ihrem Konto funktioniert weiterhin.
Schritt 8: Admin-Panel prüfen
Rufen Sie https://vault.example.de/admin auf und melden Sie sich mit dem Passwort aus Schritt 2 an. Dort sehen Sie registrierte Nutzer, führen Diagnosen aus und ändern globale Einstellungen. Behandeln Sie den Zugang als privilegiertes Konto und geben Sie das Admin-Passwort nie weiter.

Verifizieren: Unter Diagnostics zeigt das Admin-Panel die installierte Version sowie grüne Einträge für Domain und HTTPS.
Schritt 9: Bitwarden-Clients verbinden
Installieren Sie die Bitwarden-App oder Browser-Erweiterung, wählen Sie auf dem Anmeldebildschirm „Selbst gehostet“, tragen Sie bei Server-URL https://vault.example.de ein und melden Sie sich mit E-Mail und Master-Passwort an.
Verifizieren: Ein Eintrag, den Sie im Web-Vault anlegen, erscheint nach wenigen Sekunden ohne manuelles Synchronisieren auch in der App oder Erweiterung.
Schritt 10: Backup des Datenvolumens
Der gesamte Tresor steckt in vw-data. Die SQLite-Datei sichern Sie konsistent statt im laufenden Betrieb zu kopieren; dafür gibt es zwei Optionen.
Variante 1: Container kurz stoppen
Einfachster konsistenter Weg: Container stoppen, Ordner sichern, Container starten, etwa nachts als geplante Aufgabe. Wenige Sekunden Unterbrechung sind meist akzeptabel.
Variante 2: SQLite-Online-Backup
Ohne Stopp nutzen Sie den eingebauten Backup-Befehl (seit Version 1.32.1), der bei laufendem Betrieb eine konsistente Datenbankkopie erzeugt; das Image enthält kein sqlite3-Programm. Tragen Sie ihn unter Systemsteuerung → Aufgabenplaner → Erstellen → Geplante Aufgabe → Benutzerdefiniertes Script mit Benutzer root ein, etwa täglich nachts:
docker exec vaultwarden /vaultwarden backupDie Kopie landet als db_JJJJMMTT_HHMMSS.sqlite3 in vw-data. Sichern Sie dann den kompletten Ordner mit diesen Kopien, attachments, config.json und den rsa_key-Dateien; ohne letztere sind nach einer Wiederherstellung alle Anmeldungen ungültig. Löschen Sie ältere Kopien regelmäßig.
Automatisieren mit Hyper Backup
Nehmen Sie /volume1/docker/vaultwarden in eine Hyper Backup-Aufgabe auf (externes Laufwerk, zweites NAS oder Cloud), zeitlich nach dem Backup-Befehl. Alternativ schiebt rclone den Ordner per geplanter Aufgabe extern. Halten Sie die 3-2-1-Regel ein, mindestens eine Kopie außer Haus. Da die config.json sensible Daten enthalten kann, aktivieren Sie in Hyper Backup die clientseitige Verschlüsselung. Weitere Härtung: Vaultwarden produktiv betreiben.
Verifizieren: Nach dem ersten nächtlichen Lauf liegt in vw-data eine Datei db_…sqlite3 mit aktuellem Datum, und Hyper Backup meldet die Aufgabe als erfolgreich. Testen Sie die Wiederherstellung einmal über den Hyper Backup Explorer.
Updates und Wartung
Für ein Update tragen Sie die neue Version in die docker-compose.yml ein, stoppen das Projekt und wählen Aktion → Erstellen; Vaultwarden migriert die Datenbank automatisch. Lesen Sie vorher die Release Notes und machen Sie ein Backup. Spielen Sie Updates bewusst ein statt vollautomatisch (etwa per Watchtower), damit eine fehlerhafte Version nicht den Zugang zum Tresor blockiert.
Troubleshooting
- „An error has occurred“ beim Login oder Browser-Erweiterung verbindet nicht: Meist fehlt gültiges HTTPS. Prüfen Sie das Zertifikat und ob
DOMAINexakt mit der aufgerufenen URL übereinstimmt. - Live-Sync funktioniert nicht: WebSocket-Unterstützung im Reverse Proxy aktivieren. Bei NPM die Option „Websockets Support“, beim DSM-Proxy die WebSocket-Header.
- Admin-Panel lässt sich nicht öffnen: Prüfen Sie den
ADMIN_TOKEN. Bei einem Argon2-Hash in der YAML müssen alle$verdoppelt sein. - Port 8081 belegt: Wählen Sie einen anderen freien Host-Port und passen Sie sowohl die Compose-Datei als auch den Reverse-Proxy-Eintrag an.
- Konto kann nicht angelegt werden:
SIGNUPS_ALLOWEDsteht auffalse. Für die Erstanlage kurz auftruesetzen oder Nutzer über das Admin-Panel einladen.
Fazit
Entscheidend im Alltag sind ein sauberes HTTPS-Setup hinter dem Reverse Proxy und eine automatisierte, getestete Sicherung von vw-data; Updates, Backups und Erreichbarkeit liegen in Ihrer Verantwortung. Für einen Linux-Server statt NAS: Bitwarden selbst hosten mit Vaultwarden, Docker und Nginx Proxy Manager.
Weitere Anleitungen in den Kategorien Synology / NAS und Docker.
Quellen: Vaultwarden (dani-garcia/vaultwarden), Vaultwarden Wiki, Vaultwarden Wiki: Backing up your vault, Nginx Proxy Manager


