Marco Burmeister

  private Homepage



Helferlein - Linux / Windows - Syncthing - Einrichtung - Verzeichnis-Synchronisierung

Was kann ich tun, damit ich ein Verzeichnis mit ein paar Dokumenten auf verschiedenen Rechnern synchronisieren kann, ohne hierfür einen Cloud Dienst nutzen zu müssen ?
Das ist eine Frage, die ich mir letztens gestellt hatte.

Ich hatte den Bedarf einige wenige Dateien, die mir wichtig waren, auf zwei Rechnern gleich zu halten. Sie lagen jetzt schon im gleichen Verzeichnis auf einem Rechner.

Es gibt hier ein Programm namens Syncthing, welches einen großen Vorteil hat. Es gibt Clients für verschiedene Betriebssysteme, die auch miteinander arbeiten können. Ich muss also nicht in meiner Betriebssystemwelt bleiben.
Die Dokumente müssen dabei natürlich so aufgebaut sein, dass sie in jedem beteiligten Betriebssystem lesbar / änderbar sind.

Das Tool Syncthing sorgt dann für das gleich halten der angeschlossenen Verzeichnisse auf den beteiligten Rechnern.
Die gängigen Betriebssystem Linux, Windows und macOS werden unterstützt. Weitere Betriebssysteme werden unterstützt.
Das Programm arbeitet hierbei in einem RW-RW Modus, was bedeutet, dass ich nicht nur von einem Rechner zu allen anderen synchronisieren kann, sondern die Änderungen auf jedem Rechner durchgeführt werden können und dann das Tool die Inhalte synchronisiert. Das kann aber auch für die zu synchronisierenden Verzeichnisse auch angepasst werden.

Die Anleitung ist für mich eine Anleitung, wenn ich das nochmals aufsetzen muss.

Hinweis:
Für die Richtigkeit der Daten übernehme ich keine Gewähr!

Die Seite ist in die folgenden Bereiche eingeteilt:




top Voraussetzungen

Wir haben mindestens zwei Rechner, die sich im Netzwerk erreichen können.

In meinem Fall waren ein Linux openSUSE und ein relativ aktuelles Windows Betriebssystem an dem Szenario beteiligt.

Auf jedem Rechner benötigen wir die Rechte als Superuser und einen normalen Benutzer.
Das kann der normale Arbeitsuser sein, den wir immer nutzen, um auf dem Rechner zu arbeiten.

Wir haben auf einem der Rechner ein Verzeichnis (kann auch leer sein), welches wir synchronisieren wollen.

Wir brauchen einen Browser, weil das Tool Syncthing implizit einen Web-Dienst startet, damit man diesen konfigurieren kann. Eventuell muss hier auch bei den Freigaben in der Firewall aufgepasst werden, damit nicht zu viel freigegeben wird.

top Syncthing einrichten

Einführung

Die Installation der Software ist der erste Schritt.
Hier unterscheiden sich die Schritte in Abhängigkeit des Betriebssystems. Für openSUSE kann die Software aus dem Linux Repo via YaST installiert werden. Im Falle von Windows habe ich die Software von der Homepage des Anbieters (siehe unten bei den Links) heruntergeladen und unter meinem normalen Windows User installiert.

Die Software Installation sollte auf allen beteiligten Rechner als erster Schritt erfolgen.

Installation / Konfiguration auf openSUSE

Nach der Installation der Software aus dem Repo mittels YaST gehen wir an die Einrichtung.
Die folgenden Schritte sind nun zur Einrichtung notwendig:
  1. Anmeldung am Linux als normaler OS User - nicht root
  2. Wir richten nun den Dienst ein ( in dem Beispiel heisst der OS User meinusr - das muss dann vor der Ausführung angepasst werden:
    Syntax:
    sudo systemctl start syncthing@<os user name>.service
    sudo systemctl enable syncthing@<os user name>.service
    sudo systemctl status syncthing@<os user name>.service


    Beispiel:
    sudo systemctl start syncthing@meinusr.service
    sudo systemctl enable syncthing@meinusr.service
    sudo systemctl status syncthing@meinusr.service
  3. Nun aktivieren wir TLS und tragen unsere IP-Adresse in der Konfiguration ein, damit wir auch remote auf den Dienst zugreifen können. Ansonsten könnte auch die Adresse 127.0.0.1 verbleiben. Hierfür wechseln wir in die Konfigurations-Datei und passen diese an.
    Die Konfiguration liegt unterhalb des normales OS Nutzers in der Datei ~/.local/state/syncthing/config.xml.
    Beispiel-Befehl: vi ~/.local/state/syncthing/config.xml
    Beispiel-Inhalt:
    
     <gui enabled="true" tls="false" debugging="false" sendBasicAuthPrompt="false">
       <address>127.0.01:8384</address>
       <apikey>GENERATED-API-KEY</apikey>
        <theme>default</theme>
     </gui>
    
    Hierbei müsen wir dann tls="false" mit tls="true" ersetzen.
    Ergänzend können wir die Adresse 127.0.0.1 durch die IP Adresse der Netzwerk-Karte der gewünschten Netzes auf dem Rechner ersetzen. Damit können wir dann auch entfernt den Web-Dienst zur Konfiguration erreichen.
  4. Nach der Anpassung müssen wir nun den Dienst durchstarten.
    Syntax:
    sudo systemctl restart syncthing@<os user name>.service
    Beispiel:
    sudo systemctl restart syncthing@meinusr.service
  5. Nun können wir das Tool einrichten. Die URL lautet https://<ip adresse>:8384/

    Die Einrichtung wird später erklärt.
    Weiter unten kommt auch die Erklärung, welche Firewall-Einstellungen ggfs. bei openSUSE auszuführen sind, wenn ein Zugriff von entfernten Rechnern gewünscht wird.


Installation / Konfiguration auf Windows

Die Software installiere ich nach dem Download von der Webseite des Herstellers. Das ist der erste Schritt bei den folgenden Schritten.
Die folgenden Schritte sind zur Einrichtung notwendig:
  1. Anmeldung am Windows als normaler OS User - nicht Administrator
  2. Ich installiere die Software als normaler OS User.
  3. Nun aktivieren wir TLS und tragen unsere IP-Adresse in der Konfiguration ein, damit wir auch remote auf den Dienst zugreifen können. Ansonsten könnte auch die Adresse 127.0.0.1 verbleiben. Hierfür wechseln wir in die Konfigurations-Datei und passen diese an.
    Die Konfiguration liegt unterhalb des normales OS Nutzers in der Datei C:\Users\<Name des OS Users>\AppData\Local\Syncthing/config.xml.
    Die Datei kann mit einem normalen Editor angepasst werden.
    Beispiel-Inhalt:
    
     <gui enabled="true" tls="false" debugging="false" sendBasicAuthPrompt="false">
       <address>127.0.01:8384</address>
       <apikey>GENERATED-API-KEY</apikey>
        <theme>default</theme>
     </gui>
    
    Hierbei müsen wir dann tls="false" mit tls="true" ersetzen.
    Ergänzend können wir die Adresse 127.0.0.1 durch die IP Adresse der Netzwerk-Karte der gewünschten Netzes auf dem Rechner ersetzen. Damit können wir dann auch entfernt den Web-Dienst zur Konfiguration erreichen.
  4. Nach der Anpassung müssen wir nun den Dienst durchstarten.
    Hierfür habe ich nach der Installation zwei Verknüpfungen erhalten, die im Hintergrund folgendes ausführen möchten:

    Start:
    C:\Users\<Name des OS User>\AppData\Local\Programs\Syncthing\stctl.exe --start
    Stop:
    C:\Users\<Name des OS User>\AppData\Local\Programs\Syncthing\stctl.exe --stop
  5. Nun können wir das Tool einrichten. Die URL lautet https://<ip adresse>:8384/

    Die Einrichtung wird später erklärt.


Netzwerk-Ports

Syncthing nutzt die folgenden Netzwerk-Ports:
ZweckPort-Nummer
GUI Port8384
TCP und UDP Sync / Data Transfer22000,21025
Port Für Relay Server21027


Firewall-Einrichtung unter openSUSE

Damit wir Syncthing via Netzwerk erreichen können, benötigen wir noch eine Firewall-Freischaltung. In meinem Fall ist der Firewall-Daemon firewalld aktiv.

Wenn wir nicht wissen, was aktuell eingestellt ist, können wir einen der folgenden Befehle nutzen, um einen ersten Überblick zu erhalten:
firewall-cmd --list-all-zones
firewall-cmd --list-all-policies

In meinem Beispiel muss in der Zone home die Freischaltung vornehmen.
Der Port 8384 muss nur dann geöffnet werden, wenn wir von einem anderen Rechner das GUI des Tools nutzen möchten. Ansonsten sollten wir den Port NICHT öffnen.

Syntax für die Befehle:
firewall-cmd --zone=<Name der Zone> --add-port=22000/tcp
firewall-cmd --zone=<Name der Zone> --add-port=22000/udp
firewall-cmd --zone=<Name der Zone> --add-port=21025/tcp
firewall-cmd --zone=<Name der Zone> --add-port=21025/udp
firewall-cmd --zone=<Name der Zone> --add-port=8384/tcp

Beispiel für die Zone mit dem Namen home:
firewall-cmd --zone=home --add-port=22000/tcp
firewall-cmd --zone=home --add-port=22000/udp
firewall-cmd --zone=home --add-port=21025/tcp
firewall-cmd --zone=home --add-port=21025/udp
firewall-cmd --zone=home --add-port=8384/tcp

Mit den genannten Befehlen werden die Regeln nur bis zum nächsten Restart des Dienstes aktiv sein.
Sollen die permanent im firewalld aktiv sein, so ist der Parameter / die Option --permanent hinter dem Befehl firewall-cmd anzugeben.

Beispiel:
firewall-cmd --permanent --zone=home --add-port=22000/tcp
firewall-cmd --permanent --zone=home --add-port=22000/udp
firewall-cmd --permanent --zone=home --add-port=21025/tcp
firewall-cmd --permanent --zone=home --add-port=21025/udp
firewall-cmd --permanent --zone=home --add-port=8384/tcp


Einrichtung von Syncthing

Browser und Anmeldung
Zur Konfiguration / Einrichtung von Syncthing nutzen wir den Browser.
Wir rufen die Webseite mit https://<ip adresse>:8384/ auf.
Das muss auf beiden Rechnern geschehen.

Nun kann ein Fenster erscheinen, welches abfragt, ob anonyme Nutzerberichte verschickt werden sollen. Die Wahl kann später unter "Aktionen -> Einstellungen" Einstellungen noch wieder geändert werden.

Nun werden wir nach erstmaliger Anmeldung aufgefordert einen Benutzernamen und ein Passwort für die Benutzeroberfläche zu vergeben. Das sollten wir auch als erstes tun. Dafür müssen wir auf den Button mit dem Namen "Einstellungen" drücken.
Wenn das später noch geändert werden soll, so kann das unter dem Menüpunkt "Aktionen -> Einstellungen -> GUI" erfolgen.

Allgemeines Vorgehen
Für die folgenden Schritte empfehle ich, dass wir uns bei zwei Rechner für die Einrichtung einen Primary und eine Secondary Knoten aussuchen. Was meine ich damit ? Auf dem Master-Knoten machen wir zunächst alle Konfigurationsarbeiten. Der Secondary liefert nur Daten bzw. wartet auf Daten. Damit kommt es zu weniger Konfusion bei der Einrichtung.

Instanzen verbinden
Der nächste Schritt wäre die Verbindung der beiden Rechner bzw. der Syncthing-Instanzen miteinander. Hierfür müssen wir auf dem Secondary Rechner oben rechts auf den Punkt "Aktionen -> Eigene Kennung" klicken und erhalten hier einen langen Zahlencode. Diesen Zahlencode nutzen wir nun auf dem Primary Knoten. Auf der Einstiegsseite gibt es unten Rechts den Button "Gerät hinzufügen". Dieser erwartet mindestens den kopierten Zahlencode als Eingabe. Das Feld "Gerätename" habe ich ebenfalls für mich sprechend benannt.

Auf dem Rechner, auf dem ich den Code erzeugt habe (Secondary), erscheint nun eine Meldung, dass ein Gerät mit dem DNS-Namen XXX und der syncthing-ID YYY sich mit diesem Rechner (Secondary) verbinden möchte.
Diese Anfrage muss explizit bestätigt werden!
Wenn uns der angezeigt Name nicht gefällt, können wir ihn im Nachgang auch noch anpassen. Bei der Liste der externen Geräte gibt es hierfür den Button mit dem Namen "Bearbeiten".

Nun haben wir die Instanzen verbunden.

Verzeichnisse teilen
Im nächsten Schritt müssen wir nun die Verzeichnisse definieren, die synchron gehalten werden sollen.
Hierfür drücken wir auf dem Eingangsschirm (in dem Beispiel auf den als Primary erklärten Rechner) den Button "Ordner hinzufügen".
Auf dem folgenden Schirm ist nun mindestens einzugeben: Das Feld "Ordnerbezeichnung" sollte aber auch sinnvoll ausgefüllt werden. Auf dem Tab mit dem Namen "Teilen" müssen die Knoten angegeben werden, die das Verzeichnis erhalten sollen. Wenn das Verzeichnis auf unserem Primary Rechner freigegeben worden ist, müssen wir auf dem Secondary das Verzeichnis auch einbinden und auf das gewünschte Verzeichnis im OS zeigen lassen. Das muss nicht der gleiche Pfad sein wie beim Primary!
Hierfür wird, nachdem wir auf dem als Primary definierten Rechner im TAB "Teilen" unter den Button mit dem Namen "Bearbeiten" den Rechner ausgewählt haben, mit dem wir das Verzeichnis teilen möchten, auf dem als Secondary definierten Rechner im Syncthing ein Fenster erscheinen. Bisher haben wir nut gesagt, dass der Primary Rechner ein Verzeichnis teilen möchte. Mit dem nun auszufüllenden Menü definieren wir, wie das Verzeichnis aus dem als Secondary definierten Rechner aussehen / abgelegt werden soll.
Wir drücken also bei der Meldung mit dem sinngemäßen Inhalt "Rechner1 möchte den Ordner XXX mit ihnen teilen" auf den Button mit dem Namen "Hinzufügen".
Auf dem folgenden Schirm ist nun mindestens einzugeben: Das Feld "Ordnerkennung" kann nicht angepasst werden, da das die ID für den Ordner ist.


Jetzt haben wir initial ein synchrones Verzeichnis hergestellt.

Dateiversionierung
Es lohnt sich, einen Blick auf die weiteren Einstellungen der Verzeichnisfreigabe zu werfen. Ich meine den Tab "Dateiversionierung". Mit den Einstellungen hier können Sicherheitskopien erstellt werden, wenn Syncthing bei Sync-Aktionen Dateien ersetzt. Das ist dann eine Form von Backup. Es liegt aber üblicherweise auf der gleichen Platte oder in der ähnlichen Pfad-Struktur, wie das Original-Verzeichnis. Bei größeren Löschaktionen im OS könnte es also auch diese "Backups" treffen.
Die Einstellungen müssen / können auf jedem beteiligten Rechner vorgenommen werden, da das eine lokale Einstellung ist!
Ein richtiges / vollwertiges Backup sollte nicht vergessen werden!

Senden und/oder Empfangen
Über den Tab "Erweitert" bei den "Ordnertyp"-Einstellungen kann auch festgelegt werden, ob der Order / das Verzeichnis die Daten nur senden, nur empfangen oder senden und empfangen soll.

Zusammenfassung
Das wären die wichtigsten Einstellungen für den Start. Nun sollten sich Tests anschließen, damit man versteht, wie sich das System verhält, wenn wir nur auf einer Seite Änderungen vornehmen oder auch auf beiden Seiten.


top Links zum Thema


Hinweis:
Für die Richtigkeit der Daten übernehme ich keine Gewähr!
Für den Inhalt von Internet-Seiten, auf die von dieser Seite verwiesen wird, übernehme ich keine Verantwortung!