Dieses Tutorial zeigt Ihnen, wie Sie Syncthing installieren auf Debian. Syncthing ist ein kostenloses, kontinuierliches Peer-to-Peer-Dateisynchronisierungsprogramm, mit dem Sie Ihre Dateien auf mehreren Geräten synchronisieren können, verfügbar für Linux, BSD, macOS, Windows, Android und Solaris.
Es ist eine Open-Source-Alternative zum beliebten Resilio Sync (früher bekannt als BitTorrent Sync ) Anwendung. Das Erstellen, Ändern oder Löschen von Dateien auf einem Computer wird automatisch auf Ihre anderen Geräte repliziert. Syncthing lädt Ihre Dateien nicht auf einen zentralen Server wie Nextcloud hoch , sondern tauschen Sie Ihre Daten direkt zwischen Ihren Geräten aus. Alle Ihre Daten werden mit TLS verschlüsselt bei der Übertragung zwischen Ihren Geräten.
Installieren Sie Syncthing auf Debian über das offizielle Deb-Repository
Verwenden Sie curl
Um den GPG-Schlüssel herunterzuladen, importieren Sie den Schlüssel mit apt-key
.
sudo apt-get install curl curl -s https://syncthing.net/release-key.txt | sudo apt-key add -
Wenn Sie OK
sehen im Terminal bedeutet das, dass der GPG-Schlüssel erfolgreich importiert wurde. Fügen Sie dann das offizielle Deb-Repository mit dem folgenden Befehl hinzu.
echo "deb https://apt.syncthing.net/ syncthing stable" | sudo tee /etc/apt/sources.list.d/syncthing.list
Da dieses Repository https verwendet, müssen wir apt-transport-https
installieren Paket, damit der APT-Paketmanager eine https-Verbindung mit diesem Repository herstellen kann.
sudo apt-get install apt-transport-https
Aktualisieren Sie den lokalen Paketindex und installieren Sie Syncthing auf Debian.
sudo apt-get update sudo apt-get install syncthing
Mit Systemd Syncthing als Systemdienst einrichten
Das offizielle Syncthing-deb-Paket wird mit der erforderlichen systemd-Dienstdatei geliefert. Unter /lib/systemd/system/
Verzeichnis finden Sie einen [email protected]
Datei. Aktivieren Sie Syncthing so, dass es beim Booten automatisch startet, indem Sie den folgenden Befehl ausführen. Ersetzen Sie username
mit Ihrem tatsächlichen Benutzernamen.
sudo systemctl enable [email protected]username.service
Der obige Befehl erstellt einen symbolischen Link, der auf [email protected]
verweist Datei.
Created symlink from /etc/systemd/system/multi-user.target.wants/[email protected] to /lib/systemd/system/[email protected]
Jetzt können wir den Syncthing-Dienst mit dem folgenden Befehl starten.
sudo systemctl start [email protected]username.service
Status prüfen
systemctl status [email protected]username.service
Ausgabe:
Tipp:Wenn der obige Befehl nicht sofort beendet wird, drücken Sie Q um die Kontrolle über das Terminal zurückzugewinnen.
Wir können sehen, dass der Autostart von Syncthing aktiviert ist und ausgeführt wird.
Der systemd-Dienst syncthing erstellt Konfigurationsdateien unter /home/username/.config/syncthing/
und einen Ordner /home/username/Sync
als standardmäßiger Synchronisierungsordner. Die Hauptkonfigurationsdatei ist /home/username/.config/syncthing/config.xml
.
Installieren Sie Syncthing auf einem anderen Betriebssystem
Gehen Sie zur Download-Seite von Syncthing und installieren Sie Syncthing auf anderen Betriebssystemen wie Windows, macOS, BSD, Android.
Port 22000 in der Firewall öffnen
Syncthing verwendet Port 22000, um mit Peers zu kommunizieren. Wenn Ihr Computer oder Server die UFW-Firewall aktiviert hat, müssen Sie Port 22000 mit dem folgenden Befehl zulassen.
sudo ufw allow 22000/tcp
Zugriff auf die Debian-Syncthing-Weboberfläche
Standardmäßig lauscht der Syncthing-Dienst auf 127.0.0.1:8384. Geben Sie nun in die Adressleiste Ihres Webbrowsers 127.0.0.1:8384
ein um auf die Syncthing-Weboberfläche zuzugreifen. Sie können andere Syncthing-Geräte hinzufügen und Ordner mit ihnen teilen.
Wenn Sie Syncthing auf einem entfernten Debian-Server installieren, können Sie den Fernzugriff auf die Syncthing-Weboberfläche aktivieren, indem Sie die Konfigurationsdatei bearbeiten.
nano /home/username/.config/syncthing/config.xml
Suchen Sie die folgenden zwei Zeilen.
<gui enabled="true" tls="false" debugging="false"> <address>127.0.0.1:8384</address>
Ändern Sie tls="false"
zu tls="true"
, sodass der HTTP-Datenverkehr verschlüsselt wird. Und ändern Sie 127.0.0.1
an die öffentliche IP-Adresse des Debian-Servers. Speichern und schließen Sie die Datei. Starten Sie Syncthing neu, damit die Änderungen wirksam werden.
sudo systemctl start [email protected]username.service
Geben Sie nun server-ip-address:8384
ein im Webbrowser, um auf die Syncthing-Weboberfläche zuzugreifen. Offensichtlich müssen Sie die echte IP-Adresse des Debian-Servers verwenden. Sie werden aufgefordert, einen Benutzernamen und ein Passwort zum Schutz der Syncthing-Weboberfläche festzulegen.
Sie können auch einen Reverse-Proxy mit Nginx oder Apache einrichten, um auf die Web-Benutzeroberfläche zuzugreifen, was später in diesem Tutorial erklärt wird.
Beginnen Sie mit der Synchronisierung von Dateien zwischen Ihren Geräten
Sobald wir zwei Geräte haben, auf denen Syncthing läuft, können wir mit der Synchronisierung von Dateien zwischen ihnen beginnen.
Klicken Sie in der Syncthing-Weboberfläche auf Aktionen> ID anzeigen in der oberen rechten Ecke. Sie sehen die Geräte-ID, die aus einer langen Folge von Buchstaben und Zahlen besteht. Der QR-Code, der auch die Geräte-ID ist, wird zur Konfiguration von Syncthing auf Smartphones verwendet.
Kopieren Sie die Geräte-ID, öffnen Sie dann die Syncthing-Weboberfläche des zweiten Geräts und klicken Sie auf Remote-Gerät hinzufügen in der unteren rechten Ecke. Fügen Sie dann die Geräte-ID ein und geben Sie dem Gerät einen Namen. Klicken Sie auf die Schaltfläche Speichern.
Jetzt versucht das zweite Gerät, sich mit dem ersten Gerät zu verbinden. Aktualisieren Sie die Weboberfläche auf dem ersten Gerät, Sie sehen die folgende Meldung. Klicken Sie auf Gerät hinzufügen um das zweite Gerät zur Geräteliste des ersten Geräts hinzuzufügen.
Jetzt sind die beiden Geräte verbunden.
Einer der linken Bereiche der Webschnittstelle ist der standardmäßige Synchronisierungsordner (/home/username/Sync
). Klicken Sie auf Add Folder
Schaltfläche, um einen neuen Ordner hinzuzufügen. Geben Sie diesem Ordner eine aussagekräftige Bezeichnung und legen Sie den Ordnerpfad fest.
Syncthing wird als Ihr eigenes Benutzerkonto ausgeführt, daher benötigen Sie Schreibrechte für den freigegebenen Ordner. Wenn beim Freigeben eines Ordners die folgende Fehlermeldung angezeigt wird, bedeutet dies, dass Sie keine Schreibberechtigung für diesen Ordner haben.
2020-06-21 20:05:49: Failed to create folder marker: mkdir .stfolder: read-only file system
Sie können Schreibrechte mit setfacl
erteilen .
sudo apt install acl
sudo setfacl -R -m u:username:rx /folder/path/
Im Sharing
Wählen Sie auf der Registerkarte Ihr anderes Syncthing-Gerät aus.
Unter Advanced
Auf der Registerkarte können Sie den Ordnertyp, das Intervall für die erneute Überprüfung usw. auswählen.
Klicken Sie auf die Schaltfläche Speichern, um mit der Synchronisierung zu beginnen. Auf der Weboberfläche des anderen Geräts wird eine Meldung angezeigt. Klicken Sie auf Hinzufügen um Dateien zu empfangen.
Jetzt synchronisieren die beiden Geräte Dateien. Auf der rechten Seite sehen Sie die Downloadrate, Uploadrate, lokale Ordnergröße usw.
Reverse-Proxy einrichten
Da es auf 127.0.0.1:8384 lauscht, ist die Syncthing-Webschnittstelle nur für Verbindungen von demselben Computer verfügbar. Um von einem entfernten Computer aus auf die Syncthing-Weboberfläche zugreifen zu können, können wir einen Reverse-Proxy für Syncthing mit Nginx oder Apache einrichten.
Nginx
Nginx ist ein sehr beliebter Webserver und Reverse-Proxy. Wenn Sie lieber Nginx verwenden, führen Sie den folgenden Befehl aus, um es zu installieren.
sudo apt install nginx
Erstellen Sie dann eine Serverkonfigurationsdatei.
sudo nano /etc/nginx/conf.d/syncthing.conf
Fügen Sie dieser Datei den folgenden Inhalt hinzu. Ersetzen Sie syncthing.example.com
mit Ihrem bevorzugten Domainnamen. Sie sollten auch einen DNS-A-Eintrag für diese Subdomain hinzufügen. Wenn Sie keinen echten Domainnamen haben, empfehle ich, zu NameCheap zu gehen, um einen zu kaufen. Der Preis ist niedrig und sie bieten Whois-Datenschutz lebenslang kostenlos.
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; } }
Speichern und schließen Sie die Datei. Testen Sie die Nginx-Konfiguration und laden Sie Nginx neu.
sudo nginx -t sudo systemctl reload nginx
Nachdem Sie Ihren Domainnamen auf die IP-Adresse von Debian verweisen, geben Sie Ihren Domainnamen in die Adressleiste des Browsers ein und Sie sollten die Syncthing-Weboberfläche sehen.
Wenn Ihr Browser keine Verbindung zur Syncthing-Weboberfläche herstellen kann, müssen Sie möglicherweise Port 80 in der Firewall öffnen. Wenn Sie beispielsweise UFW verwenden, führen Sie den folgenden Befehl aus.
sudo ufw allow 80/tcp
Apache
Apache ist ein bekannter Webserver, der auch als Reverse-Proxy verwendet werden kann. Wenn Sie Apache Nginx vorziehen, installieren Sie es mit:
sudo apt install apache2
Starten Sie Apache und aktivieren Sie den automatischen Start.
sudo systemctl start apache2 sudo systemctl enable apache2
Um Apache als Reverse-Proxy zu verwenden, müssen wir den proxy
aktivieren Module und das Header-Modul.
sudo a2enmod proxy proxy_http headers proxy_wstunnel
Erstellen Sie nun eine virtuelle Hostdatei für Syncthing.
sudo nano /etc/apache2/sites-available/syncthing.conf
Kopieren Sie die folgenden Zeilen und fügen Sie sie in die Datei ein. Ersetzen Sie syncthing.example.com
mit Ihrem echten Domainnamen. Sie sollten auch einen DNS-A-Eintrag für diese Subdomain hinzufügen. Wenn Sie keinen echten Domainnamen haben, empfehle ich, zu NameCheap zu gehen, um einen zu kaufen. Der Preis ist niedrig und sie bieten Whois-Datenschutz lebenslang kostenlos.
<VirtualHost *:80> ServerName syncthing.example.com ErrorDocument 404 /404.html ProxyPass / http://127.0.0.1:8384/ ProxyPassReverse / http://127.0.0.1:8384/ ErrorLog ${APACHE_LOG_DIR}/syncthing_error.log CustomLog ${APACHE_LOG_DIR}/syncthing_access.log combined </VirtualHost>
Speichern und schließen Sie die Datei. Aktivieren Sie dann diesen virtuellen Host.
sudo a2ensite syncthing.conf
Starten Sie Apache neu
sudo systemctl restart apache2
Jetzt können Sie über syncthing.example.com
auf die Web-Benutzeroberfläche zugreifen .
Wenn Ihr Browser keine Verbindung zur Syncthing-Weboberfläche herstellen kann, müssen Sie möglicherweise Port 80 in der Firewall öffnen. Wenn Sie beispielsweise UFW verwenden, führen Sie den folgenden Befehl aus.
sudo ufw allow 80/tcp
Sichern Sie die Syncthing-Web-UI mit HTTPS
Um den HTTP-Verkehr zu verschlüsseln, wenn Sie die Syncthing-Web-UI über einen Domainnamen besuchen, können wir HTTPS aktivieren, indem wir ein kostenloses TLS-Zertifikat installieren, das von Let’s Encrypt ausgestellt wurde. Öffnen Sie zuerst Port 443 in der Firewall.
sudo ufw allow 443/tcp
Führen Sie dann den folgenden Befehl aus, um den Let’s Encrypt-Client (certbot) zu installieren.
sudo apt install certbot
Wenn Sie Nginx verwenden, müssen Sie auch das Certbot Nginx-Plugin installieren.
sudo apt install python3-certbot-nginx
Führen Sie als Nächstes den folgenden Befehl aus, um das TLS-Zertifikat zu erhalten und zu installieren.
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d syncthing.example.com
Wenn Sie Apache verwenden, installieren Sie das Certbot Apache-Plugin.
sudo apt install python3-certbot-apache
Und führen Sie diesen Befehl aus, um das TLS-Zertifikat zu erhalten und zu installieren.
sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d syncthing.example.com
Wo
--nginx
:Verwenden Sie das nginx-Plugin.--apache
:Verwenden Sie das Apache-Plugin.--agree-tos
:Nutzungsbedingungen akzeptieren.--redirect
:HTTPS durch 301-Umleitung erzwingen.--hsts
:Fügen Sie jeder HTTP-Antwort den Strict-Transport-Security-Header hinzu. Erzwingen, dass der Browser immer TLS für die Domäne verwendet. Schützt vor SSL/TLS-Stripping.--staple-ocsp
:Aktiviert OCSP-Heften. Eine gültige OCSP-Antwort wird an das Zertifikat geheftet, das der Server während TLS anbietet.
Das Zertifikat sollte nun abgerufen und automatisch installiert werden.
Aktualisieren Sie Ihre Syncthing-Web-GUI, Sie werden feststellen, dass die HTTP-Verbindung automatisch auf eine sichere HTTPS-Verbindung umgeleitet wird.
Benutzerauthentifizierung aktivieren
Standardmäßig kann jeder auf Ihre Syncthing-Weboberfläche zugreifen, nachdem der Reverse-Proxy eingerichtet wurde. Wir können die Benutzerauthentifizierung aktivieren, um den Zugriff einzuschränken. Klicken Sie auf Aktionen Schaltfläche oben rechts und wählen Sie dann Einstellungen aus -> Benutzeroberfläche.
Geben Sie unter GUI-Authentifizierungsbenutzer einen Benutzernamen ein Geben Sie im GUI-Authentifizierungspasswortfeld ein Passwort ein . Speichern Sie dann Ihre Einstellungen.
Bitte beachten Sie, dass Sie HTTPS für GUI verwenden nicht ankreuzen müssen Box, die es Syncthing ermöglicht, ein selbstsigniertes Zertifikat zu verwenden. Wir haben bereits ein gültiges Zertifikat in Apache/Nginx installiert, dem gängige Webbrowser vertrauen.
Sobald Sie die Änderungen gespeichert haben, starten Sie den Syncthing-Systemd-Dienst neu, oder Sie sehen möglicherweise einen 502 Bad Gateway-Fehler, wenn Sie die Seite neu laden.
sudo systemctl restart [email protected]username.service
Melden Sie sich jetzt mit Ihrem neuen Benutzernamen und Passwort bei der Syncthing-Weboberfläche an.
Nur-Senden- und Nur-Empfangen-Ordner
Wenn Sie einen Ordner in Syncthing freigeben, können Sie zur Registerkarte Erweitert gehen und einen von drei Ordnertypen auswählen:
- Senden &Empfangen (Standard)
- Nur senden
- Nur empfangen
Möglicherweise möchten Sie „Nur Senden“ oder „Nur Empfangen“ auswählen. Beispiel:Sie haben 3 Computer:A, B und C, und Sie möchten Ordner auf Computer A und B zu einem einzigen Ordner auf Computer C zusammenfassen. Dann können Sie den Ordnertyp auf Computer C auf „Nur Empfangen“ festlegen. Auf diese Weise hat Computer C alle Dateien in einem einzigen Ordner. Computer A und B haben noch die Originaldateien. Nicht mehr und nicht weniger.
Wenn Sie denselben Ordnerpfad auf Computer C verwenden, warnt Syncthing Sie möglicherweise, dass „dieser Pfad ein Unterverzeichnis eines vorhandenen Ordners ist“. Sie können diese Warnung ignorieren, da Sie über einen Nur-Empfangs-Ordner verfügen. Vorhandene Dateien im Ordner werden nicht gelöscht.
Synchronisierung über Relay-Server
Wenn zwei Syncthing-Instanzen keine Verbindung zueinander herstellen können, versucht Syncthing, einen Relay-Server zum Übertragen von Dateien zu verwenden.
Ein häufiger Grund, warum sie sich nicht miteinander verbinden können, ist, dass sich einer von ihnen hinter einem NAT-Gerät befindet und keine Portweiterleitung konfiguriert hat. Sobald Sie die Portweiterleitung konfiguriert haben, können Sie Relay-Server deaktivieren. Hier ist wie. Klicken Sie auf Edit
Schaltfläche und wählen Sie Advanced
Registerkarte, ändern Sie die Adresse von dynamic
an tcp://ip-address:22000
. Natürlich müssen Sie Ihre echte IP-Adresse verwenden.
Fehlerbehebung
Wenn sich Ihre Syncthing-Instanzen nicht miteinander verbinden können, können Sie den ss
verwenden (socket stats) Dienstprogramm, um zu überprüfen, ob Syncthing auf TCP-Port 22000 lauscht.
sudo ss -lnpt | grep syncthing
Wie Sie dem Screenshot unten entnehmen können, lauscht mein Syncthing auf Port 8384 (Webinterface) und 22000 (Peer-to-Peer-Verbindung).
Wenn nicht, können Sie die Konfigurationsdatei bearbeiten.
nano ~/.config/syncthing/config.xml
Suchen Sie die folgende Zeile.
<listenAddress>default</listenAddress>
default
ändern an tcp://your-IP-address
.
<listenAddress>tcp://12.34.56.78</listenAddress>
Speichern und schließen Sie die Datei. Starten Sie dann Syncthing neu.
sudo systemctl restart [email protected]username.service
Fehlende .stfoler-Datei
Die .stfoler
Datei wird von Syncthing benötigt, um zu funktionieren. Dies ist eine leere Datei. Sie müssen nichts hinzufügen. Wenn der .stfolder
Datei in Ihrem Synchronisierungsordner fehlt, wird die Synchronisierung beendet. Sie können den folgenden Cron-Job erstellen, um die Datei automatisch zu erstellen.
@hourly touch /path/to/sync/folder/.stfolder
Der Touch-Befehl erstellt die Datei, falls sie fehlt. Wenn die Datei bereits existiert, wird der Zeitstempel der Datei aktualisiert.