Vaultwarden auf der Synology: eigener Passwortmanager mit Docker und SQLite-Backup
Vaultwarden bringt einen Bitwarden-kompatiblen Passwortmanager auf deine Synology-NAS. Diese Anleitung zeigt das komplette Setup im Container Manager mit SQLite, Admin-Panel, Reverse Proxy fuer HTTPS und einer sauberen Backup-Strategie fuer das /data-Volume.

Ein eigener Passwortmanager auf der NAS hat einen klaren Reiz: Deine Zugangsdaten liegen nicht bei einem fremden Cloud-Anbieter, sondern auf deiner eigenen Hardware im Keller oder im Arbeitszimmer. Vaultwarden ist eine schlanke, in Rust geschriebene Server-Implementierung, die zum offiziellen Bitwarden-Protokoll kompatibel ist. Das bedeutet: Du nutzt die ganz normalen Bitwarden-Apps und Browser-Erweiterungen, dein Tresor liegt aber auf deiner Synology. In dieser Anleitung baust du Vaultwarden im Container Manager mit SQLite-Datenbank auf, schaltest das Admin-Panel frei, stellst HTTPS ueber einen Reverse Proxy bereit und richtest ein sauberes Backup des Datenvolumens ein. Die Anleitung richtet sich an Homeserver-Bastler und Admins, die ihren Passwort-Tresor selbst hosten wollen.
Was ist Vaultwarden und warum SQLite?
Vaultwarden (frueher bitwarden_rs) ist ein inoffizieller, aber sehr aktiv gepflegter Bitwarden-Server. Er deckt praktisch alle Funktionen ab, die Privatnutzer und kleine Teams brauchen: Passwoerter, Notizen, TOTP-Codes, Dateianhaenge, Organisationen, Passkeys und Bitwarden Send. Der grosse Vorteil gegenueber dem offiziellen Bitwarden-Server ist der minimale Ressourcenverbrauch. Ein einzelner Container mit wenigen hundert MB RAM reicht voellig aus, was ihn ideal fuer eine Synology-NAS macht.
Vaultwarden nutzt standardmaessig SQLite als Datenbank. Fuer einen einzelnen Haushalt oder ein kleines Team ist das die einfachste und robusteste Wahl: keine separate Datenbank-Container, keine Verbindungs-Strings, kein zusaetzlicher RAM-Bedarf. Die gesamte Datenbank liegt als einzelne Datei db.sqlite3 im Datenvolumen. Genau das vereinfacht auch das Backup enorm, denn du sicherst am Ende einfach einen einzigen Ordner.
Wichtig vorab: Browser-Erweiterungen und mobile Apps von Bitwarden sprechen aus Sicherheitsgruenden nur mit einem Server, der ueber HTTPS erreichbar ist. WebAuthn, Passkeys und die Web-Vault-Oberflaeche funktionieren ohne gueltiges Zertifikat nicht. Deshalb betreiben wir Vaultwarden hinter einem Reverse Proxy. Den nackten HTTP-Port nutzen wir nur intern zum Testen.
Voraussetzungen
- Synology-NAS mit DSM 7.2 oder neuer und installiertem Paket Container Manager
- Ein NAS-Modell mit x86-/64-Bit-CPU (die meisten Plus- und xs-Modelle). Auf ARM-Modellen laeuft das offizielle Image ebenfalls, da es als Multi-Arch-Image bereitgestellt wird
- Administrator-Konto in DSM und Zugriff auf File Station und Systemsteuerung
- Ein freier Host-Port fuer den Container, z. B. 8081 (DSM belegt 80 und 443 selbst)
- Eine Domain oder Subdomain, die auf deine NAS zeigt (z. B.
vault.deinedomain.deper DynDNS / DDNS), damit der Reverse Proxy ein gueltiges Let's-Encrypt-Zertifikat ausstellen kann - Optional, aber empfohlen: das Paket Hyper Backup fuer die automatisierte Sicherung
Schritt 1: Datenordner anlegen
Oeffne die File Station und lege im freigegebenen Ordner docker einen Unterordner fuer Vaultwarden an. Wenn der Ordner docker noch nicht existiert, erstelle ihn zuerst. Die Zielstruktur sieht so aus:
/volume1/docker/vaultwarden
/volume1/docker/vaultwarden/vw-dataIm Unterordner vw-data legt Vaultwarden spaeter alle persistenten Daten ab: die Datenbank db.sqlite3, den Ordner attachments fuer Dateianhaenge, die config.json sowie den Schluessel rsa_key.pem fuer die Token-Signatur. Dieser eine Ordner ist dein gesamter Tresor, ihn musst du spaeter sichern.
Schritt 2: Admin-Token erzeugen
Das Admin-Panel von Vaultwarden erreichst du unter /admin. Es wird ueber die Umgebungsvariable ADMIN_TOKEN abgesichert. Statt ein Klartext-Passwort einzutragen, empfiehlt das Projekt einen Argon2-Hash. Den erzeugst du am einfachsten direkt mit dem Vaultwarden-Image. Falls du SSH auf der NAS aktiviert hast, fuehre folgenden Befehl aus:
sudo docker run --rm -it vaultwarden/server /vaultwarden hashDas Tool fragt nach einem Passwort und gibt anschliessend einen Hash aus, der mit $argon2id$... beginnt. Diesen kompletten String kopierst du fuer den naechsten Schritt. Hast du keinen SSH-Zugang, kannst du den Hash spaeter auch auf einem anderen Rechner mit Docker erzeugen oder vorlaeufig ein langes Zufalls-Passwort als Klartext-Token verwenden und es nach dem ersten Login durch einen Hash ersetzen.
Hinweis zum Argon2-String: Er enthaelt Dollarzeichen. In einer YAML-Datei musst du jedes $ verdoppeln (also $$), weil Docker Compose sonst versucht, es als Variable zu interpretieren. Darauf achten wir im naechsten Schritt.
Schritt 3: docker-compose.yml erstellen
Erstelle mit einem Texteditor eine Datei docker-compose.yml und lege sie im Ordner /volume1/docker/vaultwarden ab. Du kannst den Inhalt spaeter auch direkt in den Container Manager einfuegen. Passe ADMIN_TOKEN und DOMAIN an deine Werte an:
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: unless-stopped
environment:
DOMAIN: "https://vault.deinedomain.de"
ADMIN_TOKEN: "$$argon2id$$v=19$$m=65540,t=3,p=4$$HIER_DEIN_HASH"
SIGNUPS_ALLOWED: "true"
volumes:
- ./vw-data:/data
ports:
- "8081:80"Kurz erklaert, was hier passiert:
image: das offizielle Vaultwarden-Image. Fuer den Produktivbetrieb solltest du den Tag spaeter auf eine konkrete Version pinnen statt:latestzu nutzen, damit ein automatisches Update nicht ungeplant durchschlaegt.DOMAIN: die vollstaendige URL, unter der Vaultwarden spaeter erreichbar ist. Sie wird fuer WebAuthn, Passkeys und die Verifizierungs-Mails gebraucht und muss exakt mit deiner spaeteren Adresse uebereinstimmen.ADMIN_TOKEN: dein Argon2-Hash aus Schritt 2, mit verdoppelten Dollarzeichen.SIGNUPS_ALLOWED: vorersttrue, damit du dein erstes Konto anlegen kannst. Nach der Erstanlage stellst du das auffalse(siehe Schritt 7).ports: der interne Port 80 wird auf den freien Host-Port 8081 gemappt.
Schritt 4: Projekt im Container Manager anlegen
Oeffne den Container Manager und wechsle links auf Projekt. Klicke auf Erstellen und gehe so vor:
- Vergib als Projektnamen
vaultwarden. - Waehle als Pfad den Ordner
/volume1/docker/vaultwarden. - Container Manager erkennt die vorhandene
docker-compose.yml. Alternativ waehlst du "Eine docker-compose.yml erstellen" und fuegst den YAML-Inhalt aus Schritt 3 direkt ein. - Bestaetige die folgenden Dialoge. Den Web-Portal-Schritt kannst du ueberspringen, wir nutzen einen eigenen Reverse Proxy.
- Klicke auf Fertig. Container Manager laedt das Image herunter und startet den Container.
Nach kurzer Zeit zeigt der Container den Status "laufend". Im Ordner vw-data sind jetzt die ersten Dateien wie rsa_key.pem und db.sqlite3 aufgetaucht.
Schritt 5: Erster Test ueber HTTP
Bevor wir den Reverse Proxy einrichten, pruefst du, ob der Container grundsaetzlich laeuft. Oeffne im Browser:
http://NAS-IP:8081Ersetze NAS-IP durch die lokale IP-Adresse deiner Synology. Die Vaultwarden-Web-Oberflaeche sollte erscheinen. Lege aber noch kein Konto an, denn ueber reines HTTP funktionieren WebAuthn und Passkeys nicht und die Verschluesselung deines Master-Passworts laeuft nur ueber eine sichere Verbindung sauber. Wir richten zuerst HTTPS ein.
Schritt 6: HTTPS ueber Reverse Proxy
Damit Browser-Erweiterungen und Apps mit deinem Server reden, braucht Vaultwarden ein gueltiges Zertifikat. Du hast zwei gaengige Wege.
Variante A: DSM-eigener Reverse Proxy
DSM bringt einen Reverse Proxy mit. Oeffne Systemsteuerung → Anmeldeportal → Erweitert → Reverse Proxy und erstelle eine neue Regel:
- Quelle: Protokoll HTTPS, Hostname
vault.deinedomain.de, Port 443 - Ziel: Protokoll HTTP, Hostname
localhost, Port8081 - Im Reiter Eigene Header ueber "WebSocket erstellen" die WebSocket-Header hinzufuegen, damit der Live-Sync funktioniert
Anschliessend hinterlegst du in der Systemsteuerung unter Sicherheit → Zertifikat ein Let's-Encrypt-Zertifikat fuer deine Domain und ordnest es dem Reverse-Proxy-Dienst zu.
Variante B: Nginx Proxy Manager (NPM)
Betreibst du bereits einen Nginx Proxy Manager (Image jc21/nginx-proxy-manager:latest), legst du dort einen neuen Proxy Host an: Domain vault.deinedomain.de, Weiterleitung an die NAS-IP auf Port 8081, Schema http. Aktiviere im Reiter SSL ein Let's-Encrypt-Zertifikat samt "Force SSL" und im Reiter Details die Option Websockets Support. Letztere ist wichtig, weil der Live-Sync von Vaultwarden seit den neueren Versionen ueber denselben Port wie die Web-Oberflaeche laeuft und keinen separaten WebSocket-Port mehr braucht.
Pruefe nach der Einrichtung, ob https://vault.deinedomain.de mit gueltigem Schloss-Symbol laedt.
Schritt 7: Konto anlegen und Registrierung schliessen
Rufe jetzt deine HTTPS-Adresse auf und klicke auf Konto erstellen. Vergib eine E-Mail-Adresse und ein starkes, einzigartiges Master-Passwort. Dieses Master-Passwort kann niemand fuer dich zuruecksetzen, es entschluesselt deinen kompletten Tresor. Notiere es an einem sicheren Ort.
Sobald dein Konto (und ggf. die Konten deiner Familie) steht, schliesst du die offene Registrierung wieder. Oeffne dazu die docker-compose.yml und setze:
SIGNUPS_ALLOWED: "false"Im Container Manager waehlst du dann beim Projekt Aktion → Erstellen bzw. baust das Projekt neu, damit die Aenderung greift. Ab jetzt kann sich niemand mehr ohne Einladung registrieren. Neue Nutzer ladest du bei Bedarf ueber eine Organisation im Admin-Panel oder im Web-Vault ein.
Schritt 8: Admin-Panel pruefen
Rufe https://vault.deinedomain.de/admin auf und melde dich mit dem Passwort an, aus dem du in Schritt 2 den Hash erzeugt hast. Im Admin-Panel siehst du registrierte Nutzer, kannst Diagnosen ausfuehren und globale Einstellungen vornehmen. Behandle den Zugang wie ein Schluesselkonto: Wer hier hereinkommt, kann die Server-Konfiguration aendern. Gib den Admin-Token niemals weiter.
Schritt 9: Bitwarden-Clients verbinden
Installiere die offizielle Bitwarden-App oder die Browser-Erweiterung. Bevor du dich anmeldest, oeffnest du die Server-Einstellungen (Zahnrad-Symbol bzw. "Region: Selbst gehostet") und traegst bei Server-URL deine Adresse https://vault.deinedomain.de ein. Danach meldest du dich mit deiner E-Mail und dem Master-Passwort an. Ab jetzt synchronisiert die App mit deiner Synology.
Schritt 10: Backup des Datenvolumens
Dein gesamter Tresor steckt im Ordner vw-data. SQLite ist eine Datei-Datenbank, deshalb solltest du sie nicht einfach im laufenden Betrieb wegkopieren, sondern konsistent sichern. Dafuer hast du zwei gute Optionen.
Variante 1: Container kurz stoppen
Der einfachste konsistente Weg: Container stoppen, Ordner sichern, Container wieder starten. Das kannst du als geplante Aufgabe nachts ausfuehren. Ein Backup, das den Container nur fuer wenige Sekunden anhaelt, ist fuer einen Privat-Tresor voellig akzeptabel.
Variante 2: SQLite-Online-Backup
Willst du ohne Stopp sichern, nutzt du das eingebaute Online-Backup von SQLite. Es erzeugt eine konsistente Kopie der Datenbank, waehrend Vaultwarden weiterlaeuft:
sudo docker exec vaultwarden \
sqlite3 /data/db.sqlite3 ".backup '/data/db-backup.sqlite3'"Anschliessend sicherst du den kompletten Ordner vw-data inklusive der erzeugten db-backup.sqlite3, der attachments, der config.json und des rsa_key.pem. Ohne den rsa_key lassen sich bestehende Sitzungen nicht mehr validieren, er gehoert also zwingend ins Backup.
Automatisieren mit Hyper Backup
Nimm den Ordner /volume1/docker/vaultwarden in eine Hyper Backup-Aufgabe auf und ziele auf ein externes Laufwerk, ein zweites NAS oder einen Cloud-Speicher. Alternativ laesst sich das Ganze mit rclone per geplanter Aufgabe an einen externen Speicher schieben. Wichtig ist die 3-2-1-Regel: mindestens eine Kopie ausser Haus.
Updates und Wartung
Fuer ein Update oeffnest du im Container Manager das Projekt, laedst ueber Aktion → Image neu laden / Build das aktuelle Image und baust den Container neu. Vaultwarden migriert die Datenbank dabei automatisch. Mache vor groesseren Versionssprung-Updates ein Backup. Wenn du :latest verwendest, ziehe jedes Update bewusst, statt es etwa per Watchtower vollautomatisch durchlaufen zu lassen, damit eine fehlerhafte Version dir nicht den Zugang zum Tresor blockiert.
Troubleshooting
- "An error has occurred" beim Login oder Browser-Erweiterung verbindet nicht: Meist fehlt gueltiges HTTPS. Pruefe das Zertifikat und ob
DOMAINexakt mit der aufgerufenen URL uebereinstimmt. - Live-Sync funktioniert nicht: WebSocket-Unterstuetzung im Reverse Proxy aktivieren. Bei NPM die Option "Websockets Support", beim DSM-Proxy die WebSocket-Header.
- Admin-Panel laesst sich nicht oeffnen: Pruefe den
ADMIN_TOKEN. Bei einem Argon2-Hash in der YAML muessen alle$verdoppelt sein. - Port 8081 belegt: Waehle einen anderen freien Host-Port und passe sowohl das Compose-File als auch den Reverse-Proxy-Eintrag an.
- Konto kann nicht angelegt werden:
SIGNUPS_ALLOWEDsteht auffalse. Fuer die Erstanlage kurz auftruesetzen.
Fazit
Mit Vaultwarden auf der Synology bekommst du einen vollwertigen, Bitwarden-kompatiblen Passwortmanager, der komplett unter deiner Kontrolle laeuft. Dank SQLite bleibt das Setup schlank und das Backup besteht aus einem einzigen Ordner. Entscheidend fuer den Alltag sind zwei Dinge: ein sauberes HTTPS-Setup hinter dem Reverse Proxy und eine zuverlaessige, automatisierte Sicherung des Datenvolumens. Sind beide eingerichtet, hast du einen Passwort-Tresor, der auf deiner eigenen Hardware liegt und dennoch mit allen offiziellen Bitwarden-Clients funktioniert.
Weitere Anleitungen in den Kategorien Synology / NAS und Docker.
Quellen: Vaultwarden (dani-garcia/vaultwarden), Vaultwarden Wiki, Nginx Proxy Manager