Wie man Syncthing auf Ubuntu 20.04 installiert

Syncthing ist ein Open-Source-Tool, das zum Synchronisieren von Dateien zwischen zwei oder mehreren Computern in einem Netzwerk verwendet wird. Es nutzt eine Peer-to-Peer Architektur und tauscht deine Daten direkt zwischen deinen Geräten aus. Alle Daten, die zwischen mehreren Geräten übertragen werden, sind mit TLS verschlüsselt. Wann immer du Daten auf einem Syncthing-Rechner erstellst, änderst oder löschst, werden sie automatisch auf andere Server repliziert. Es kann auf allen gängigen Betriebssystemen installiert werden, einschließlich Linux, Windows, Mac OS X, etc.

In dieser Anleitung zeigen wir dir, wie du den Syncthing Server auf Ubuntu 20.04 installieren und einrichten kannst.

Voraussetzungen

  • Zwei Server, auf denen Ubuntu 20.04 läuft.
  • Ein gültiger Domainname, der auf die IP deines Servers zeigt.
  • Ein Root-Passwort ist auf beiden Servern konfiguriert.

Erste Schritte

Als erstes aktualisierst du die Systempakete auf die aktuelle Version, indem du den folgenden Befehl ausführst:

apt-get update -y

Sobald alle Pakete aktualisiert sind, kannst du mit dem nächsten Schritt fortfahren.

Syncthing Server auf beiden Servern installieren

Standardmäßig ist das Syncthing-Paket nicht im Standard-Repository von Ubuntu 20.04 enthalten. Daher musst du das Syncthing Repository zum APT hinzufügen.

Als erstes installierst du alle benötigten Abhängigkeiten auf beiden Servern mit dem folgenden Befehl:

apt-get install gnupg2 curl apt-transport-https -y

Als nächstes lädst du den Release Key herunter und fügst ihn mit dem folgenden Kommando hinzu:

curl -s https://syncthing.net/release-key.txt | apt-key add -

Als nächstes fügst du das Syncthing Repository mit dem folgenden Befehl zum APT hinzu:

echo "deb https://apt.syncthing.net/ syncthing release" > /etc/apt/sources.list.d/syncthing.list

Als nächstes aktualisiere das Repository und installiere den Syncthing Server mit dem folgenden Befehl:

apt-get update -y
apt-get install syncthing -y

Sobald die Installation abgeschlossen ist, überprüfe die Version von Syncthing mit dem folgenden Kommando:

syncthing --version

Du solltest die folgende Ausgabe erhalten:

syncthing v1.18.0 "Fermium Flea" (go1.16.5 linux-amd64) deb@build.syncthing.net 2021-06-21 20:53:50 UTC [noupgrade]

An diesem Punkt ist Syncthing auf beiden Servern installiert. Du kannst nun mit dem nächsten Schritt fortfahren.

Erstelle eine Systemd Unit Datei auf beiden Servern

Als nächstes musst du eine systemd Unit Datei erstellen, um den Syncthing Dienst zu verwalten. Du kannst sie auf beiden Servern mit dem folgenden Befehl erstellen:

nano /etc/systemd/system/syncthing@.service

Füge die folgenden Zeilen hinzu:

[Unit]
Description=Syncthing - Open Source Continuous File Synchronization for %I
Documentation=man:syncthing(1)
After=network.target

[Service]
User=%i
ExecStart=/usr/bin/syncthing -no-browser -gui-address="0.0.0.0:8384" -no-restart -logflags=0
Restart=on-failure
SuccessExitStatus=3 4
RestartForceExitStatus=3 4

[Install]
WantedBy=multi-user.target

Speichere und schließe die Datei, wenn du fertig bist. Lade dann den systemd-Daemon neu, um die Konfiguration zu übernehmen:

systemctl daemon-reload

Starte als nächstes den Syncthing-Dienst mit dem folgenden Befehl:

systemctl start syncthing@root

Um den Status des Syncthing-Dienstes zu überprüfen, führe den folgenden Befehl aus:

systemctl status syncthing@root

Du solltest die folgende Ausgabe sehen:

? syncthing@root.service - Syncthing - Open Source Continuous File Synchronization for root
     Loaded: loaded (/etc/systemd/system/syncthing@.service; disabled; vendor preset: enabled)
     Active: active (running) since Fri 2021-07-09 04:40:12 UTC; 5s ago
       Docs: man:syncthing(1)
   Main PID: 2878 (syncthing)
      Tasks: 14 (limit: 2353)
     Memory: 44.2M
     CGroup: /system.slice/system-syncthing.slice/syncthing@root.service
             ??2878 /usr/bin/syncthing -no-browser -gui-address=0.0.0.0:8384 -no-restart -logflags=0
             ??2889 /usr/bin/syncthing -no-browser -gui-address=0.0.0.0:8384 -no-restart -logflags=0

Jul 09 04:40:14 node1 syncthing[2878]: [WPOF6] INFO: QUIC listener ([::]:22000) starting
Jul 09 04:40:14 node1 syncthing[2878]: [WPOF6] INFO: Loading HTTPS certificate: open /root/.config/syncthing/https-cert.pem: no such file or d>
Jul 09 04:40:14 node1 syncthing[2878]: [WPOF6] INFO: Creating new HTTPS certificate
Jul 09 04:40:14 node1 syncthing[2878]: [WPOF6] INFO: Completed initial scan of sendreceive folder "Default Folder" (default)
Jul 09 04:40:14 node1 syncthing[2878]: [WPOF6] INFO: GUI and API listening on [::]:8384
Jul 09 04:40:14 node1 syncthing[2878]: [WPOF6] INFO: Access the GUI via the following URL: http://127.0.0.1:8384/
Jul 09 04:40:14 node1 syncthing[2878]: [WPOF6] INFO: My name is "node1"
Jul 09 04:40:14 node1 syncthing[2878]: [WPOF6] WARNING: Syncthing should not run as a privileged or system user. Please consider using a norma>
Jul 09 04:40:14 node1 syncthing[2878]: [WPOF6] INFO: quic://0.0.0.0:22000 detected NAT type: Not behind a NAT
Jul 09 04:40:14 node1 syncthing[2878]: [WPOF6] INFO: quic://0.0.0.0:22000 resolved external address quic://45.58.35.6:22000 (via stun.syncthin>

Zu diesem Zeitpunkt ist der Syncthing-Dienst gestartet und lauscht auf Port 8384. Du kannst es mit dem folgenden Befehl überprüfen:

ss -antpl | grep 8384

Du solltest die folgende Ausgabe sehen:

LISTEN    0         4096                     *:8384                   *:*        users:(("syncthing",pid=2889,fd=12))    

Access Syncthing Web Interface

Als nächstes öffnest du deinen Webbrowser und rufst das Syncthing Webinterface mit den URLs http://first-server-ip:8384 und http://first-server-ip:8384 auf.

Du solltest den folgenden Bildschirm sehen:

Syncthing Admin Interface

Klicke auf die Einstellungen, um den Admin-Benutzer und das Passwort wie unten gezeigt zu definieren:

Passwort setzen

Gib deinen Benutzernamen und dein Passwort ein und klicke auf die Schaltfläche Speichern, um die Änderungen zu übernehmen. Du wirst auf die Syncthing Login Seite weitergeleitet:

anmeldung

Gib deinen Admin-Benutzernamen und dein Passwort ein und klicke auf den Sign in Button. Du solltest den folgenden Bildschirm sehen:

Ordner

Als nächstes musst du die Geräte-ID eines jeden Servers zu einem anderen Server hinzufügen, um Dateien zwischen beiden Servern zu synchronisieren. Klicke dazu auf Aktionen > ID anzeigen auf beiden Servern. Du solltest den folgenden Bildschirm sehen:

Geräteidentifikation

Knoten 2 identifizieren

Auf dem ersten Server klickst du auf Remotegerät hinzufügen. Du solltest den folgenden Bildschirm sehen:

Gerät hinzufügen

Gib die Geräte-ID des zweiten Servers ein und klicke auf die Schaltfläche Speichern.

Auf dem zweiten Server klickst du auf Remotegerät hinzufügen. Du solltest den folgenden Bildschirm sehen:

Geräte-ID

Gib die Geräte-ID des ersten Servers ein und klicke auf die Schaltfläche Speichern. Du solltest den folgenden Bildschirm sehen:

Ordner und Geräte

Jetzt musst du den Ordner hinzufügen und freigeben, den du mit dem zweiten Server synchronisieren möchtest. Klicke auf den Add Folder Button. Du solltest den folgenden Bildschirm sehen:

Einen Ordner hinzufügen

Gib deine Ordnerbezeichnung und den Ordnerpfad an und klicke auf den Reiter Freigabe. Du solltest den folgenden Bildschirm sehen:

Ordner teilen

Setze ein Häkchen beim zweiten Server und klicke auf den Speichern-Button. Du solltest den folgenden Bildschirm sehen:

Ordner und Geräte in Syncthing

Gehe als nächstes zum zweiten Server und klicke auf die Schaltfläche Alle neu scannen. Du solltest den folgenden Bildschirm sehen:

Alle neu scannen

Klicke auf Hinzufügen, um den auf dem ersten Server freigegebenen Backup Ordner hinzuzufügen. Du solltest den folgenden Bildschirm sehen:

Ordner synchronisieren

Wann immer du nun Dateien im Backup-Ordner auf dem ersten Server erstellst oder änderst, werden diese automatisch mit dem zweiten Server synchronisiert.

Nginx als Reverse Proxy für Syncthing konfigurieren

Du kannst auch Nginx als Reverse Proxy einrichten, um auf den Syncthing Server über Port 80 zuzugreifen.

Als erstes installierst du den Nginx Server mit dem folgenden Befehl:

apt-get install nginx -y

Als nächstes erstelle eine Nginx-Konfigurationsdatei für den virtuellen Host mit dem folgenden Befehl:

nano /etc/nginx/conf.d/syncthing.conf

Füge die folgenden Zeilen hinzu:

server {
  listen 80;
  server_name syncthing.example.com;

  access_log /var/log/nginx/syncthing.access.log;
  error_log /var/log/nginx/syncthing.error.log;
  location / {
    proxy_pass http://127.0.0.1:8384;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
  }
}

Speichere und schließe die Datei und überprüfe dann Nginx auf Syntaxfehler mit dem folgenden Befehl:

nginx -t

Du solltest die folgende Ausgabe erhalten:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Als nächstes musst du den Nginx neu laden, um die Änderungen zu übernehmen.

systemctl reload nginx

Du kannst auch den Status des Nginx mit folgendem Befehl überprüfen:

systemctl status nginx

Du solltest die folgende Ausgabe sehen:

? nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2021-07-09 05:01:36 UTC; 21s ago
       Docs: man:nginx(8)
   Main PID: 3394 (nginx)
      Tasks: 2 (limit: 2353)
     Memory: 6.2M
     CGroup: /system.slice/nginx.service
             ??3394 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             ??3395 nginx: worker process

Jul 09 05:01:36 node1 systemd[1]: Starting A high performance web server and a reverse proxy server...
Jul 09 05:01:36 node1 systemd[1]: Started A high performance web server and a reverse proxy server.

Jetzt kannst du auf den Syncthing Server über die URL http://syncthing.example.com zugreifen.

Fazit

Herzlichen Glückwunsch! Du hast Syncthing erfolgreich auf zwei Ubuntu 20.04 Servern installiert und konfiguriert und die Synchronisation zwischen beiden Servern eingerichtet. Ich hoffe, dieses Tutorial hilft dir bei der Sicherung deines Servers.

Das könnte dich auch interessieren …