Mike hat im Blog schon vor einiger Zeit den Passwort-Manager KeePassXC und in einem weiteren Beitrag die Synchronisation der Datenbank mit syncthing dargestellt. Letzteres lässt sich alternativ auch vielleicht ein bisschen einfacher mit rclone umsetzen.
Ich synchronisiere die Datenbank per WebDAV über mein Mailkonto bei mailbox.org. WebDAV wird auch von anderen Anbietern wie z.B. posteo.de unterstützt und ist daher dort ähnlich einzurichten. Als Betriebssystem verwende ich Arch Linux mit KDE. Unter z.B. Windows sehen die folgenden Details daher teilweise ein bisschen anders aus.
Vorweg: Ich habe in meinem mailbox.org-Konto unterhalb von Drive > Meine Dateien einen Ordner KeePass angelegt, in dem die Datenbank abgelegt wird. Der Ordner „Meine Dateien“ ist standardmäßig schon vorhanden. In der einzugebenden URL (siehe die folgenden Schritte) ist daher nur der entsprechende neue Unterordner anzugeben. Oder diesen eben ganz weglassen, falls man die Datenbank direkt in „Meine Dateien“ ablegt.
Die Vorgehensweise ist auf https://rclone.org/webdav/ erläutert:
- Man startet
rclone config
und wähltNew remote
. - Es ist ein Name für die neue Verbindung zu wählen - ich habe mich für KPXC entschieden.
- Bei Storage ist
webdav
zu wählen. - Die einzugebende URL (inkl. dem oben erwähnten Ordner) lautet bei mailbox.org:
https://office.mailbox.org/servlet/webdav.infostore/Userstore/<Benutzername>/KeePass
Hinweis: Der Benutzername ist bei mir als.../Vorname Nachname/...
eingegeben. Ich weiß nicht, ob das generell bei allen Mailkonten so ist. Ggfs. muss man das ausprobieren. - Bei vendor ist
other
zu wählen. - Bei user ist die Mailadresse einzugeben.
- Bei Passwort ist
Yes type in my own password
zu wählen und das Passwort für das Mailkonto einzugeben. Wichtig: Dieses wird anschließend von rclone in verschlüsselter Form auf dem Rechner gespeichert! - Das Ganze zum Schluss mit
y
bestätigen oder ggfs. mite
nochmals editieren.
Als Ergebnis erzeugt rclone die Datei ~/.config/rclone/rclone.conf
:
[KPXC]
type = webdav
url = https://office.mailbox.org/servlet/webdav.infostore/Userstore/******/KeePass
vendor = other
user = *****@mailbox.org
pass = *******************
Mit folgendem Befehl lässt sich nun die Datenbank nach mailbox.org kopieren:
rclone copy -vv /home/seeket/MeineDaten.kdbx KPXC:
Die Option -vv habe ich nur hinzugefügt, um die Ausgabe etwas gesprächiger zu machen.
Hat man z.B. auf dem Handy mit einer Keepass-kompatiblen App an der Datenbank etwas verändert, lässt diese sich wiederum auf den Rechner kopieren:
rclone copy -vv KPXC: /home/seeket
Einen automatischen Sync vermeide ich, um Datenverluste bzw. unbeabsichtigtes Überschreiben zu verhindern. Um zu checken, ob die remote und die lokale Version der Datenbank identisch sind, kann man
rclone check MeineDaten.kdbx KPXC: --download
ausführen. Der Schalter --download
ist hier nötig, weil WebDAV keine Hashes unterstützt und daher die remote Version heruntergeladen wird, um die Dateigröße zu vergleichen.
Um das zu vereinfachen, habe ich mir in der ~/.bashrc folgende Aliase angelegt:
alias keepush="rclone copy -vv /home/seeket/MeineDaten.kdbx KPXC:"
alias keereceive="rclone copy -vv KPXC: /home/seeket"
alias keecheck="rclone check /home/seeket/MeineDaten.kdbx KPXC: --download"
KeePassXC starte ich nicht direkt, sondern über folgendes Skript:
#!/bin/bash
FILE="/tmp/kee.txt"
rclone check /home/seeket/MeineDaten.kdbx KPXC: --download 2>&1 | tee "$FILE"
STRING="sizes differ"
if grep -q "$STRING" "$FILE"; then
kdialog --title "Remote und lokale Datei unterscheiden sich" --yesno "Dateien unterschiedlich.\n Abbrechen?"
response=$?
case $response in
0) kdialog --msgbox "Abbruch!" && exit ;;
1) kdialog --msgbox "Weiter ..." && keebackup && keepassxc;;
esac
else
keebackup && keepassxc
fi
Man hat also die Möglichkeit, den Start von KeePassXC abzubrechen, falls rclone Unterschiede zwischen der remote und lokalen Version der Datenbank feststellt, so dass diese vorher manuell synchronisiert werden kann.
kdialog verwende ich, weil ich KDE benutze. Mit anderen Desktop Environments lässt sich alternativ dafür aber auch z.B. Zenity, Dialog oder Yad verwenden.
keebackup ist übrigens folgendes Skript:
#!/bin/bash
SRCFILE=/home/seeket/MeineDaten.kdbx
TIME=`date +%b-%d-%Y-%H:%M:%S`
DESTFILE=/home/seeket/MeineDaten.kdbx-$TIME
cp $SRCFILE $DESTFILE
# alle Backups älter als 10 Tage löschen
find /home/seeket/MeineDaten.kdbx-* -type f -mtime +10 -delete
Es legt vor jedem Start von KeePassXC eine Kopie der Datenbank an (mit Zeitstempel) und löscht alle Backups, die älter als 10 Tage sind.