Nach dem erfolgreichen ersten Setup von rclone soll das Ganze nun automatisch auf einer Unraid-Instanz laufen, sprich: Ein lokaler Unraid-Server soll per Batch-Job eine im Netz laufende Nextcloud-Instanz spiegeln.
Auswahl der rclone-Installation
Schaut man sich die Community-Apps an, so finden sich eine Reihe von Möglichkeiten rclone zu installieren:

UniFi-Protect-Backup, cryptomator-webdav und Rclone-mount haben jeweils spezielle Anwendungsbereiche die jedoch hier nicht wichtig sind.
rclone von Waseh installiert das executable direkt in Unraid. Das geschieht automatisch beim Starten und es wird die jeweils aktuellste Version runtgerladen. Da ist es verschmerzlich, wenn die letzte Änderung der App selbst 2022 erfolgt ist. Allerdings ist das direkte Installieren in das Unraid-Filesystem nicht genau das, wonach ich gesucht habe. Ich hätte das ganze gerne gekapselt in Docker, mit eigenem Cron.
Rclone von tynor88 hat das letzte Update vor 4 Jahren erfahren und ist daher raus.
Nacho-Rclone-Native-GUI ist nichts anderes als ein Docker-Template für Unraid. Es verweist selbst auf das offizielle rclone-Docker-Image, sollte also immer up-to-date sein. Allerdings gibt es eine Reihe von offenen Issues und der Autor des Templates benutzt offenbar Unraid nicht mehr selbst.
binhex-rclone wird regelmäßig aktualisiert und läuft als nobody-User in einem Docker-Container. Das rclone wird dabei aus den arch – Repos runtergeladen beim Erzeugen des Images. Ich entscheide mich für binhex-rclone.
Installation und Konfiguration
Nach einem Klick auf “install” erscheint die Eingabemaske für die Konfiguration des Docker-Containers. Die meisten Einstellungen können beim Default gelassen werden.
rclone
arbeitet normalerweise rein passiv im Batch-Betrieb und bietet keine Ports nach außen an. Dennoch sind zwei Portforwardings – nämlich 53682 und 5572 – aktiviert:

Der Port 53682 hat mit Browser-basierter Authorisierung / oauth zu tun, bei dem zwangsläufig der Browsers der Client-Maschine ins Spiel kommt um das Forwarding zwischen der Webseite des Dienste-Anbieters und der headless-Maschine auf der rclone läuft zu regeln (rclone authorize). Dieser Port tritt nur bei Verwendung entsprechender remotes und dann auch nur während des Aufrufs von rclone authorize
in Erscheinung.
Über der Port 5572 bietet rclone
ein web-basiertes UI an. In meiner Installation schalte ich dieses Web-UI ab, weil ich es nicht benötige. Damit bietet der Docker-Container keine Ports nach außen an.
Die Einstellungen für “Host Path2” und “Key 1” müssen nicht verändert werden. Ich führe sie nur der Vollständigkeit an:

“Host Path 2” wird im Container unter /media
gemountet. Die Standard-Einstellung sorgt dafür, dass alle Shares für rclone
zur Verfügung stehen.
“Key1” ist der Pfad zur Konfigurationsdatei innerhalb des Containers. Diese Einstellung muss nicht geändert werden. Auf dem Unraid-Host entspricht /config
dem Verzeichnis /mnt/cache/appdata/binhex-rclone
:

Die Datei rclone.conf
muss händisch nach Anleitung erzeugt werden- ist sie nicht vorhanden startet der Container nicht. Im vorliegenden Fall habe ich die Datei bereits auf einem andern Rechner erzeugt – inkl. Verschlüsselung. Mit einer verschlüsselten Config-Datei kann der Docker-Container jedoch nichts anfangen, das Passwort wird im Klartext (bzw. obfuscated) erwartet. Eine bestehende verschlüsselte Konfiguration kann man sich mit rclone config show
im Klartext anzeigen lassen:
[nextcloud]
url = https://nextcloud.example.com/remote.php/dav/files/user
vendor = nextcloud
user = user
pass = ... obfuscated passwort ...
und entsprechend auf den Unraid-Server per ssh und Copy&Paste übertragen:
mkdir -p /mnt/cache/appdata/binhex-rclone/rclone/config
vi /mnt/cache/appdata/binhex-rclone/rclone/config/rclone.conf
chown -R nobody:users /mnt/cache/appdata/binhex-rclone
Will man nun innerhalb des rclone-Remotes “nextcloud” den Ordner “bilder” auf das gleichnaminge Unraid-Share synchronisieren so muß mit dem aktuellen Image von binhex-rclone etwas tricksen, da die Implementierung implizit davon ausgeht, dass der lokale Ordner in dem Container unterhalb von “/media” dem Remote-Ordner entspricht.
Aber es gibt einen Workaround: Man erstellt ein zusätzliches Verzeichnis-Mapping, was dafür sorgt, dass der Pfad innerhalb des Containers dem Remote-Pfad entspricht:

Nun können RCLONE_MEDIA_SHARES
und RCLONE_REMOTE_NAME
wie folgt geändert werden:

Für den ersten Versuch bietet es sich an, rclone
mit der Option “–dry-run” aufzurufen. So werden die Änderungen noch nicht geschrieben und man kann sich in den Logmeldungen ansehen, ob alles den Erwartungen entspricht:

Wir wollen eine 1:1 Kopie des Remote-Ordners haben, inkl. etwaiger Datei-Löschungen, deshalb ist für RCLONE_OPERATION
die Einstellung “sync” und für RCLONE_DIRECTION
die Einstellung “remotetolocal” das Richtige. Eine WebUI soll nicht gestartet werden. Lässt man die WebUI auf dem Default-Wert “yes” sollte man sich auf jeden Fall Gedanken um ein Passwort machen:

Nach dem Starten des Containers legt rclone los und man sollte sich auf dem Unraid-Server die Datei /mnt/user/appdata/binhex-rclone/rclone/logs/rclone.log
ansehen. Sind dort keine Fehlermeldungen zu sehen, kann man die Option “–dry-run” aus den RCLONE_USER_FLAGS
wieder entfernen.