Syncthing Logo

Keepass-Datenbank mit Syncthing und WebDAV synchron halten

Gastartikel von Marc

Wir nutzen in unserer Familie Laptops mit Windows und Linux sowie mobile Apple-Geräte. Auf den Laptops setzen wir ausschließlich Keepass ein und möchten dies auch auf den mobilen Geräten tun.

Synchronisiert werden die Keepass-Datenbanken auf den Laptops per Syncthing, welches auf einem Raspberry Pi im Heimnetz läuft. Die Synchronisation der Keepass-Datenbank über das Dateisystem von iOS funktioniert bei uns nicht sehr zuverlässig. Auf mobilen Geräten wie iPhones sind Anwendungen in einer Sandbox isoliert. iOS-Apps wie Keepassium und Strongbox weisen explizit darauf hin und empfehlen Cloud-Dienste zur Synchronisation. Daneben bieten die zwei Apps aber auch WebDAV an.

Bei der Nutzung von WebDAV in Keepassium oder Strongbox wird beim Öffnen der App der neueste Stand vom Server gezogen. Falls dieser nicht verfügbar ist, wird eine lokale Kopie innerhalb der App-Sandbox geöffnet. Eine super Sache, wenn man offline ist.

Auch auf dem Desktop kann man in KeepassXC eine Datenbank direkt per WebDAV öffnen; durch Eingabe der WebDAV-URL und anschließendem Login. Aber es wird keine lokale Kopie vorgehalten, wie auf den mobilen Anwendungen. Auf den Laptops ist dies auch nicht notwendig, da Syncthing eine lokale Kopie für den Offline-Zugriff auf dem Dateisystem speichert.

Warum also nicht Syncthing und WebDAV kombinieren?

Das Konzept

Syncthing und WebDAV teilen sich einen gemeinsamen Ordner auf dem Raspberry Pi (Server). Hierfür muss ein WebDAV-Server der Wahl eingerichtet sein sowie Syncthing laufen.

Als WebDAV-Server fiel die Wahl auf NGINX in Kombination mit dem dav-Modul. Der Syncthing-Dienst läuft bei uns unter dem User “syncthing” und der WebDAV-Server als “www-data”. Damit beide Dienste auf den gemeinsamen Ordner zugreifen können, werden die User “syncthing” und “www-data” der “Gruppe” des geteilten Ordners hinzugefügt.

$ sudo adduser --system --home /path/to/ --group fileowner
$ sudo usermod -aG fileowner syncthing
$ sudo usermod -aG fileowner www-data

Damit beide Anwendungen dieselben Ordner bzw. Dateien lesen und schreiben können, muss das setgid-bit gesetzt werden. Zusätzlich muss der SystemD-Service von Syncthing angepasst werden, damit neue Dateien/Ordner die richtigen Zugriffsrechte besitzen:

$ sudo chmod g+s /path/to/syncthing
$ sudo systemctl edit syncthing@syncthing
[Service]
Umask=0007

Die Kombination aus WebDAV und Syncthing funktioniert bei uns in der Familie so gut, dass wir es mit der Community teilen möchten.

Quellen

  1. https://whhone.com/posts/webdav-syncthing/
  2. https://www.heise.de/ratgeber/BASPi-Backup-und-Sync-ohne-Cloud-mit-einem-Raspi-einrichten-9852318.html
  3. https://wiki.archlinux.org/title/WebDAV#nginx
  4. https://wiki.archlinux.org/title/Syncthing#System_service

Teilt den Beitrag, falls ihr mögt

19 Kommentare

  1. bei mir läuft seit Jahren ebenfalls ein Raspi als zentrale Instanz für die Synchronisation der Keepas-DB über diverse Geräte. Das funktioniert soweit gut, wobei ich die Synchronisation auf den Mobiltelefonen nur bei Bedarf aktiviere und nach Abschluss der Sync wieder deaktiviere, um nicht immer einen laufenden Hintergrundprozess zu haben, der eventuell Energie frißt. Viel wichtiger ist es aber auf Synchronisationskonflikte zu achten. Die gibt es immer, wenn man nicht dran denkt und an 2 oder mehr Geräten die Datenbank öffnet und Änderungen vornimmt. Das ist ein kleiner Nachteil dieses Konzepts. Auf dem Raspi empfehle ich dann noch die Versionierung zu aktivieren, Synching kann das von Haus aus. Es ist mir zwar noch nie passiert, dass ich eine DB zerschossen habe, aber sicher ist sicher. Und bitte nicht vergessen, die Keepass-DB in die Datensicherung mit aufzunehmen.
    Gruss, Peter

    0
  2. Wenn man bereits einen eigenen Raspi im Netz hat, dann kann man Syncthing auch einfach direkt dort installieren und alle Geräte (bzw. den Ordner mit der .kdbx Datei) dann mit dieser “always-on” Syncthing-instanz auf dem Raspi synchronisieren.
    Ich nutze diese Konfiguration seit einigen Jahre ohne Probleme mit einer Mischung aus Linux, Android und Windows Geräten.

    0
  3. Bei mir wird gar nichts synchronisiert.
    Im lokalen Netz holt sich jeder Rechner die benötigten Dateien von /NAS.
    Dort liegt auch für alle die selbe .kdbx Datei bereit.
    Der Ordner /NAS liegt auf einem Rpi4 und ist mittels nfs bei jedem Rechner gemountet.

    Siehe:
    https://wiki.archlinux.de/title/Network_File_System

    Natürlich ist das nichts für unterwegs, aber ich will gar nicht alle Zugangsdaten mobil mit mir rumschleppen. Die wichtigen Sachen erledige ich immer noch daheim am Rechner.

    1
  4. Klingt nach einer guten Umsetzung. Ich habe mir für einen selbst gehosteten Bitwarden (vaultwarden) als Docker Container mit Traefik als Reverseproxy entschieden. Hier gibt es für alle bekannten Browser sowohl für Windows als auch für macOS Plugins + entsprechende App für iOS. Mit DuoMobile den 2FA umgesetzt. Bin damit mehr als zufrieden.

    2
      1. Es geht um den Passwortmanager – syncthing-fork funktioniert einwandfrei. Keepassium und Strongbox sind soweit ich weiß Passwortmanager. Auf Android gibt’s da auch einige, fraglich ist nur welcher davon arbeiten mit KeePassXC in der beschriebenen Form zusammen?

        0
  5. Sehr coole Lösung! Ich hab’s für mich anders gelöst: Selbstgehostete Nextcloud, alle Desktop-Geräte und alle Smartphones synchronisieren die kdbx-Datei, die somit auch überall lokal exisitert. Die entsprechenden Nextcloud-Apps müssen natürlich überall installiert u. korrekt konfiguriert sein. Die Nextcloud hatte ich eh. Sie eigens dafür zu installieren/konfigurieren wäre aber vermutlich ein bisschen drüber 😉

    1
    1. Hab heute eine Nextcloud auf einem Pi eingerichtet, dank des Scriptes von NextcoudPi musste ich da nicht viel machen. Ok, natürlich Feinkonfiguration, Freigaben auf der Fritzbox, dyndns-Dienst etc. und mich etwas durch die Nextcloud-Config arbeiten. Imho ist mit Nextcloud auch webdav-Zugriff möglich, zusätzlich hat man halt noch ein paar weitere Optionen.

      Gibt es eigentlich noch das Keepass-Plugin für Nextcloud? Das hab ich früher mal gelegentlich benutzt, falls ich ein Passwort brauchte aber mein Smartphone nicht dabei hatte.

      0

Kommentar hinterlassen