Resilio Sync [ThoSch:Wiki]

Benutzer-Werkzeuge

Webseiten-Werkzeuge


thoschwiki:anwendungen:resiliosync

Resilio Sync

Die Seite befindet sich noch im Aufbau.

Resilio Sync (formals BitTorrent) ist eine Anwendung zur Dateisynchronisation zwischen zwei oder mehr Rechnern. Das Produkt nutzt auf einen auf dem BitTorrent-Protokoll basierende Peer-to-Peer-Ansatz. Die Synchronisation ist zwischen Rechnern im gleichen LAN und/oder über das Internet mit Rechnern an anderen Standorten erfolgen. Die Synchronisation mit Remote-Rechnern kann über Relay-Knoten erfolgen, sodass die Remote-Rechnern nicht direkt aus dem Internet erreichbar sein müssen.

Software
Produktseite Resilio Sync
Plattformen FreeBSD (i386, x86-64) Linux (div. Architekturen), macOS, Windows
sowie mobile Clients
Linux-Paketierung DEB, RPM
Respositories
Lizenz proprietär
Preis Basisnutzung umsonst, $59,90, $99,90
weitere Informationen
Resilio Sync (Docker)

Installation

Es stehen plattformspezifische Installationspakete zum Download bereit. Für Linux-Systeme bestehen darüber hinaus auch Respositories für die verbreitetsten Linux-Distributionen zur Verfügung.

Installation unter Linux

Die Installation auf Debian-basierten Systemen (Debian, Raspbian bzw. Raspbian OS sowie Ubuntu und dessen Derivate) kann wie folgt unter Nutzung des Repositories erfolgen:

GPG-Key von Resilio installieren:

wget -qO - https://linux-packages.resilio.com/resilio-sync/key.asc | sudo apt-key add -

Paketquelle einrichten:

echo "deb http://linux-packages.resilio.com/resilio-sync/deb resilio-sync non-free" | sudo tee /etc/apt/sources.list.d/resilio-sync.list

Installation:

sudo apt-get update
sudo apt-get install resilio-sync

Anschließend muss der Service noch aktiviert werden:

sudo systemctl enable resilio-sync

Während der Installation wird der nicht-privilegierte Benutzer rslsync eingerichtet. Der Resilio-Sync-Service läuft unter dieser Benutzerkennung und hat somit nur sehr eingeschränkte Zugriffsrechte:

  • Da auf den meisten Systemen für die Home-Bereiche die unmask 0022 gilt, kann der Service zwar die meisten Dateien lesen, aber keine neuen Dateien schreiben.
  • Sofern der Service Dateien schreiben kann1), könnte es zu Problemen beim Zugriff durch den Eigentümer des Verzeichnisses kommen.

Für diese Problematik gibt es drei Lösungsansätze:

  1. "Kreuzweise" Aufnahme in die Benutzergruppen (von Resilio vorgeschlagene Lösung)
    Der (Haupt)Benutzer nimmt rslsync in die eigene Gruppe auf und umgekehrt. Aufgrund der unmask 0022 muss der (Haupt)Benutzer für die jeweiligen Dateien und Verzeichnisse zusätzlich das Schreibrechte für die Gruppe einrichten (chmod g+w).
    Theoretisch ist das auch für mehrere Benutzer möglich, eröffnet dann aber die Möglichkeit für „Übergrifflichkeiten“.
  2. Service läuft unter der Kennung des (Haupt)Benutzers (bisher von mir bevorzugte Lösung)
    Etwas fummelt und gelingt – zumindest mir – nicht immer auf anhieb.
  3. Resilio Sync läuft in einem Docker-Container (wahrscheinlich der Weg, den ich künftig nutzen werde)
    Bei Nutzung des Images linuxserver/resilio-Sync kann der Benutzer, mit dessen Rechten der Container läuft, über die Parameter PUID und PGID vorgegeben werden.2)

"Kreuzweise" Aufnahme in die Benutzergruppen

Unix-typisch läuft der Systemdienst unter dem eigenen User rslsync mit minimalen Rechten. Damit dies nicht zu Problemen mit Zugriffsrechten kommt, müssen der jeweilige Benutzer und der User rslsync „über Kreuz“ in die jeweiligen Benutzergruppen aufgenommen werden:

sudo usermod -aG <user_group> rslsync
sudo usermod -aG rslsync <user_name>

Beachte: Die Rechteänderung wird erst nach einen Re-Login (bzw. Reboot) wirksam.

Zusätzlich sind – sofern dies nicht schon der Fall ist – die Gruppenrechte bei den zu syncenden Ordner anzupassen:

chmod g+rw <synced_folder>

Service unter Kennung des Hauptbenutzers

Es gibt verschiedene Beschreibungen, wie man den Resilio Sync-Service unter der eigenen Benutzerkennung laufen lassen kann. Die zuletzt besten Erfahrungen habe ich mit dem vom Xiao Han beschrieben Weg gemacht. Diese Vorgehensweise scheint – zumindest in der Vergangenheit – von Resilio unterstützt worden sein.

Im Verzeichnis /etc/resilio-sync/ befindet sich das Script init_user_config.sh mit dem man eine benutzerspezifische Konfiguration anlegen kann:

/etc/resilio-sync/init_user_config.sh
Das Script ist unter der eigenen Kennung, d.h. nicht mit sudo, zu starten.

Danach ist eine sogenanntes Drop-In-Snippet für die Service-Definition anzulegen:

sudo systemctl edit resilio-sync.service

Im sich öffnendem Editor ist der folgende Inhalt zu ergänzen:

[Service]
User=<USER>
Group=<USER>
PIDFile=/home/<USER>/.config/resilio-sync/sync.pid
ExecStartPre=
ExecStart=
ExecStart=/usr/bin/rslsync --config /home/<USER>/.config/resilio-sync/config.json

Der Platzhalter <USER> ist jeweils durch den eigenen Benutzernamen zu ersetzen.

Nach dem Speichern kann die sich daraus ergebende Service-Definition wie folgt eingesehen werden:

sudo systemctl cat resilio-sync.service

Das ergänzte Drop-In-Snippet findet sich am Ende der Datei.

Abschließend ist die systemd-Konfiguration neu zu laden und der Service neu zu starten:

sudo systemctl daemon-reload
sudo systemctl restart resilio-sync.service

Nun sollte3) der Resilio Sync-Service unter der eigenen Benutzerkennung laufen.

Konfiguration

Die Konfiguration kann über die Konfigurationsdatei sowie – zum kleineren Teil – über die Web-UI erfolgen. Der Ablageort der Konfigurationsdatei hängt von der Art der Konfiguration des Services ab:

Zugriff von anderen Rechnern zulassen

In der Default-Konfiguration ist der Zugriff auf die Web-UI nur von gleichen Rechner ('localhost bzw. IP-Adresse 127.0.0.1) zugelassen. Dies kann geändert werden, indem im listen-Eintrag der Konfigurationsdatei die IP-Adresse 127.0.0.1 mit 0.0.0.0 überschrieben wird:

    "webui" :
    {
        "listen" : "0.0.0.0:8888",
        "allow_empty_password" : false
    }

Sofern der Zugang für andere Rechner geöffnet wird, sollte https für die Web-UI aktiviert werden.

https für WebUI

Der Zugang zur WebUI sollte per https gesichert werden, damit die Zugangsdaten nicht aus dem Datenstrom in Klartext abgefangen werden können. Sofern https nicht per Default aktiviert ist, kann dies durch die Ergänzung des Statements „force_https“ : true in der Konfigurationsdatei gesteuert werden:

    "webui" :
    {
        "listen" : "0.0.0.0:8888",
        "allow_empty_password" : false,
        "force_https" : true  // enable https
    }

Sofern die Transportverschlüsselung nicht von Resilio Sync vorgenommen werden soll4), ist die entsprechende Zeile auszukommentieren bzw. zu löschen.

Beim Anhängen einer neuen Zeile ist das Komma am Ende der vorangehenden Zeile zu ergänzen.
Beim Entfernen der letzten Zeile eines Blocks ist das entsprechende Komma zu entfernen.
Erfolgt die Transportverschlüsselung mit https durch einen Router wie Traefik, dann sollte die Transportverschlüsselung durch Resilio Sync deaktiviert werden.

Quellen

1)
Eigentümer ist dann rslsync
2)
Es ist auch denkbar, auf Mehrbenutzersystem für jeden Benutzer einen eigenen Container unter der jeweiligen Kennung laufen zu lassen. Es wäre dann notwendig für jeden Benutzer einen anderen Port für die Web-GUI zu verwenden.
3)
Ich bin da etwas vorsichtig, weil es bei mir nicht immer auf Anhieb geklappt hat…
4)
z.B. Sicherung durch Traefik
thoschwiki/anwendungen/resiliosync.txt · Zuletzt geändert: 22.12.2020 10:15 von thosch