GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak nainstalovat Syncthing na Ubuntu Desktop/Server

Tento tutoriál vám ukáže, jak nainstalovat Syncthing na Ubuntu. Syncthing je bezplatný program pro nepřetržitou synchronizaci souborů typu peer-to-peer, který vám umožňuje synchronizovat soubory mezi více zařízeními a je k dispozici pro Linux, BSD, macOS, Windows, Android a Solaris.

Je to open-source alternativa k populární Resilio Sync (dříve známé jako BitTorrent Sync ) aplikace. Vytváření, úprava nebo mazání souborů na jednom počítači bude automaticky replikováno do vašich ostatních zařízení. Syncthing nenahrává vaše soubory na centrální server, jako je Nextcloud , ale vyměňujte si data přímo mezi vašimi zařízeními. Všechna vaše data jsou šifrována pomocí TLS při přenosu mezi vašimi zařízeními.

Funkce synchronizace

  • Bezplatný a otevřený zdroj.
  • Vysoká rychlost synchronizace.
  • Podporuje jednosměrnou synchronizaci.
  • Selektivní synchronizace (Ignorovat vzory).
  • Pokud se dva partneři nemohou navzájem spojit, může použít přenosové servery.
  • Podporuje ověřování LDAP.

Nainstalujte Syncthing na Ubuntu prostřednictvím oficiálního úložiště Deb

Syncthing je součástí výchozího úložiště Ubuntu od 18.04 Bionic Beaver. Nicméně se doporučuje nainstalovat Syncthing z upstream oficiálního úložiště, takže získáte nejnovější verzi.

Použijte curl stáhněte si klíč GPG a poté klíč importujte pomocí apt-key .

sudo apt-get install curl

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

Pokud vidíte OK v terminálu, to znamená, že GPG klíč byl úspěšně importován. Poté přidejte oficiální úložiště deb pomocí následujícího příkazu.

echo "deb https://apt.syncthing.net/ syncthing stable" | sudo tee /etc/apt/sources.list.d/syncthing.list

Protože toto úložiště používá https, musíme nainstalovat apt-transport-https balíček, takže správce balíčků APT může navázat https spojení s tímto úložištěm.

sudo apt-get install apt-transport-https

Aktualizujte místní index balíčků a nainstalujte synchronizaci na Ubuntu.

sudo apt-get update

sudo apt-get install syncthing

Použití Systemd k nastavení synchronizace jako systémové služby

Oficiální deb balíček Syncthing se dodává s potřebným souborem služby systemd. Pod /lib/systemd/system/ adresář, najdete [email protected] soubor. Povolte synchronizaci pro automatické spuštění při spouštění spuštěním níže uvedeného příkazu. Nahraďte username s vaším skutečným uživatelským jménem.

sudo systemctl enable [email protected]username.service

Výše uvedený příkaz vytvoří symbolický odkaz, který ukazuje na [email protected] soubor.

Created symlink from /etc/systemd/system/multi-user.target.wants/[email protected] to /lib/systemd/system/[email protected]

Nyní můžeme spustit službu Syncthing pomocí následujícího příkazu.

sudo systemctl start [email protected]username.service

Zkontrolujte stav

systemctl status [email protected]username.service

Výstup:

Tip:Pokud se výše uvedený příkaz okamžitě neukončí, stiskněte Q získat zpět kontrolu nad terminálem.

Vidíme, že automatické spouštění Syncthing je povoleno a běží.

Služba syncthing systemd vytváří konfigurační soubory pod /home/username/.config/syncthing/ a složku /home/username/Sync jako výchozí synchronizační složku. Hlavní konfigurační soubor je /home/username/.config/syncthing/config.xml .

Nainstalujte Syncthing na jiný operační systém

Přejděte na stránku pro stažení Syncthing a nainstalujte Syncthing do jiných operačních systémů, jako jsou Windows, macOS, BSD, Android.

Otevřete port 22000 v bráně firewall

Syncthing používá port 22000 ke komunikaci s partnery. Pokud váš počítač nebo server aktivoval UFW firewall, musíte povolit port 22000 pomocí následujícího příkazu.

sudo ufw allow 22000/tcp

Přístup k webovému rozhraní Ubuntu Syncthing

Ve výchozím nastavení služba Syncthing naslouchá na 127.0.0.1:8384. Nyní do adresního řádku webového prohlížeče zadejte 127.0.0.1:8384 pro přístup k webovému rozhraní Syncthing. Můžete přidat další zařízení Syncthing a sdílet s nimi složky.

Pokud nainstalujete Syncthing na vzdálený server Ubuntu, musíte nastavit reverzní proxy s Nginx nebo Apache, abyste získali přístup k webovému uživatelskému rozhraní, což je vysvětleno dále v tomto tutoriálu.

Začněte synchronizovat soubory mezi vašimi zařízeními

Jakmile budeme mít dvě zařízení se systémem Syncthing, můžeme mezi nimi začít synchronizovat soubory.

Ve webovém rozhraní Syncthing klikněte na Akce> Zobrazit ID v pravém horním rohu. Uvidíte ID zařízení, což je dlouhý řetězec písmen a číslic. QR kód, který je zároveň ID zařízení, se používá pro konfiguraci Syncthing na chytrých telefonech.

Zkopírujte ID zařízení, otevřete webové rozhraní Syncthing druhého zařízení a klikněte na Přidat vzdálené zařízení v pravém dolním rohu. Poté vložte ID zařízení a pojmenujte zařízení. Klikněte na tlačítko Uložit.

Nyní se druhé zařízení pokusí připojit k prvnímu zařízení. Obnovte webové rozhraní na prvním zařízení, zobrazí se následující zpráva. Klikněte na Přidat zařízení pro přidání druhého zařízení do seznamu zařízení prvního zařízení.

Nyní jsou obě zařízení připojena.

V levém podokně webového rozhraní je výchozí složka pro synchronizaci (/home/username/Sync ). Klikněte na Add Folder tlačítko pro přidání nové složky. Dejte této složce popisný štítek a nastavte cestu ke složce.

Syncthing běží jako váš vlastní uživatelský účet, takže musíte mít oprávnění k zápisu do sdílené složky. Pokud se při sdílení složky zobrazí následující chybová zpráva, znamená to, že do této složky nemáte oprávnění k zápisu.

2020-06-21 20:05:49: Failed to create folder marker: mkdir .stfolder: read-only file system

Oprávnění k zápisu můžete udělit pomocí setfacl .

sudo apt install acl
sudo setfacl -R -m u:username:rwx /folder/path/

Poznámka :Pokud problém stále přetrvává, přečtěte si prosím tipy pro odstraňování problémů na konci tohoto článku.

V části Sharing vyberte své druhé zařízení Syncthing.

V Ignore Pattens můžete zadat vzory jmen pro soubory, které nemají být synchronizovány.

V Advanced můžete zvolit typ složky, interval opětovného skenování atd.

Klepnutím na tlačítko Uložit zahájíte synchronizaci. Ve webovém rozhraní druhého zařízení se zobrazí zpráva. Klikněte na Přidat přijímat soubory.

Nyní obě zařízení synchronizují soubory. Na pravé straně můžete vidět rychlost stahování, rychlost odesílání, velikost místní složky atd.

Nastavit reverzní proxy

Protože naslouchá na 127.0.0.1:8384, webové rozhraní Syncthing je dostupné pouze pro připojení ze stejného počítače. Abychom mohli přistupovat k webovému rozhraní Syncthing ze vzdáleného počítače, můžeme nastavit reverzní proxy pro Syncthing s Nginx nebo Apache.

Nginx

Nginx je velmi oblíbený webový server a reverzní proxy. Pokud dáváte přednost použití Nginx, spusťte následující příkaz a nainstalujte jej.

sudo apt install nginx

Poté vytvořte konfigurační soubor serveru.

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

Přidejte do tohoto souboru následující obsah. Nahraďte syncthing.example.com s vaším preferovaným názvem domény. Měli byste také přidat záznam DNS A pro tuto subdoménu. Pokud nemáte skutečný název domény, doporučuji přejít na NameCheap a koupit si ho. Cena je nízká a poskytují ochranu soukromí whois doživotně zdarma.

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;
  }
}

Uložte a zavřete soubor. Otestujte konfiguraci Nginx a znovu načtěte Nginx.

sudo nginx -t

sudo systemctl reload nginx

Poté, co nasměrujete název své domény na IP adresu Ubuntu, zadejte název své domény do adresního řádku prohlížeče a měli byste vidět webové rozhraní Syncthing.

Pokud se váš prohlížeč nemůže připojit k webovému rozhraní Syncthing, možná budete muset otevřít port 80 ve bráně firewall. Pokud například používáte UFW, spusťte následující příkaz.

sudo ufw allow 80/tcp

Apache

Apache je známý webový server, který lze také použít jako reverzní proxy. Pokud dáváte přednost Apache před Nginx, nainstalujte jej pomocí:

sudo apt install apache2

Spusťte Apache a povolte automatické spouštění.

sudo systemctl start apache2

sudo systemctl enable apache2

Chcete-li používat Apache jako reverzní proxy, musíme povolit proxy moduly a modul záhlaví.

sudo a2enmod proxy proxy_http headers proxy_wstunnel

Nyní vytvořte soubor virtuálního hostitele pro Syncthing.

sudo nano /etc/apache2/sites-available/syncthing.conf

Zkopírujte a vložte následující řádky do souboru. Nahraďte syncthing.example.com s vaším skutečným názvem domény. Měli byste také přidat záznam DNS A pro tuto subdoménu. Pokud nemáte skutečný název domény, doporučuji přejít na NameCheap a koupit si ho. Cena je nízká a poskytují ochranu soukromí whois doživotně zdarma.

<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>

Uložte a zavřete soubor. Poté povolte tohoto virtuálního hostitele.

sudo a2ensite syncthing.conf

Restartujte Apache

sudo systemctl restart apache2

Nyní máte přístup k webovému uživatelskému rozhraní přes syncthing.example.com .

Pokud se váš prohlížeč nemůže připojit k webovému rozhraní Syncthing, možná budete muset otevřít port 80 ve bráně firewall. Pokud například používáte UFW, spusťte následující příkaz.

sudo ufw allow 80/tcp

Zabezpečte webové uživatelské rozhraní Syncthing pomocí protokolu HTTPS

Chcete-li šifrovat provoz HTTP při návštěvě webového uživatelského rozhraní Syncthing prostřednictvím názvu domény, můžeme povolit HTTPS instalací bezplatného certifikátu TLS vydaného z Let’s Encrypt. Nejprve otevřete port 443 ve bráně firewall.

sudo ufw allow 443/tcp

Poté spusťte následující příkaz a nainstalujte klienta Let’s Encrypt (certbot).

sudo apt install certbot

Pokud používáte Nginx, musíte si také nainstalovat plugin Certbot Nginx.

sudo apt install python3-certbot-nginx

Dále spusťte následující příkaz pro získání a instalaci certifikátu TLS.

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d syncthing.example.com

Pokud používáte Apache, nainstalujte si plugin Certbot Apache.

sudo apt install python3-certbot-apache

A spusťte tento příkaz, abyste získali a nainstalovali certifikát TLS.

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d syncthing.example.com

Kde

  • --nginx :Použijte plugin nginx.
  • --apache :Použijte plugin Apache.
  • --agree-tos :Souhlas se smluvními podmínkami.
  • --redirect :Vynutit HTTPS přesměrováním 301.
  • --hsts :Přidejte hlavičku Strict-Transport-Security do každé odpovědi HTTP. Vynucení prohlížeče, aby pro doménu vždy používal TLS. Chrání před odstraněním SSL/TLS.
  • --staple-ocsp :Umožňuje sešívání OCSP. Platná odpověď OCSP je přišita k certifikátu, který server nabízí během TLS.

Certifikát by nyní měl být získán a automaticky nainstalován.

Obnovte své grafické uživatelské rozhraní Syncthing, zjistíte, že připojení HTTP je automaticky přesměrováno na zabezpečené připojení HTTPS.

Povolit ověření uživatele

Ve výchozím nastavení má kdokoli přístup k vašemu webovému rozhraní Syncthing po nastavení reverzního proxy. Pro omezení přístupu můžeme povolit ověření uživatele. Klikněte na Akce v pravém horním rohu a poté vyberte Nastavení -> GUI.

Zadejte uživatelské jméno do GUI Authentication User zadejte heslo do pole GUI Authentication Password . Poté nastavení uložte.

Upozorňujeme, že nemusíte zaškrtávat možnost Použít HTTPS pro grafické uživatelské rozhraní box, který umožňuje Syncthing používat certifikát s vlastním podpisem. Již jsme nainstalovali platný certifikát v Apache/Nginx, kterému důvěřují běžné webové prohlížeče.

Jakmile změny uložíte, restartujte službu Syncthing systemd, jinak se při opětovném načítání stránky může zobrazit chybná chyba brány 502.

sudo systemctl restart [email protected]username.service

Nyní se přihlaste do webového rozhraní Syncthing se svým novým uživatelským jménem a heslem.

Jak používat certifikát TLS s vlastním podpisem

Pokud nechcete pro přístup k webovému rozhraní Syncthing používat název domény a platný certifikát TLS. Můžete použít certifikát s vlastním podpisem. Upravte konfigurační soubor Syncthing.

nano ~/.config/syncthing/config.xml

Najděte následující řádky.

    <gui enabled="true" tls="false" debugging="false">
        <address>127.0.0.1:8384</address>
        <apikey>P4sYoeq2CNQRdfq33dq823dakE2</apikey>
        <theme>default</theme>

Chcete-li použít certifikát podepsaný svým držitelem, jednoduše změňte tls="false" na tls="true" . A pokud se chystáte přistupovat k webovému rozhraní Syncthing ze vzdáleného počítače, změňte 127.0.0.1 na 0.0.0.0 .

Uložte a zavřete soubor. Poté restartujte Syncthing, aby se změny projevily.

sudo systemctl restart [email protected]username.service

Složky pouze pro odesílání a pouze pro příjem

Při sdílení složky v Syncthing můžete přejít na kartu Upřesnit a vybrat jeden ze tří typů složek:

  • Odeslat a přijmout (výchozí)
  • Pouze odeslat
  • Pouze přijímat

Možná budete chtít vybrat pouze odesílání nebo pouze příjem. Pokud máte například 3 počítače:A, B a C a chcete agregovat složky na počítači A a B do jedné složky na počítači C. Pak můžete nastavit typ složky na pouze pro příjem na počítači C. Tímto způsobem bude mít počítač C všechny soubory v jedné složce. Počítač A a B má stále původní soubory. Nic více a nic méně.

Když použijete stejnou cestu ke složce na počítači C, Syncthing vás může varovat, že „tato cesta je podadresářem existující složky“. Toto upozornění můžete ignorovat, protože máte složku pouze pro příjem. Stávající soubory ve složce nebudou smazány.

Synchronizace přes přenosové servery

Pokud se dvě instance Syncthing nemohou vzájemně propojit, pokusí se Syncthing k přenosu souborů použít přenosový server.

Častým důvodem, proč se k sobě nemohou připojit, je to, že jeden z nich je za zařízením NAT a nenakonfiguroval přesměrování portů. Jakmile nakonfigurujete předávání portů, můžete zakázat přenosové servery. Zde je návod. Klikněte na Edit a vyberte Advanced Změňte adresu z dynamic na tcp://ip-address:22000 . Samozřejmě musíte použít svou skutečnou IP adresu.

Synchronizace velkého množství malých souborů

Syncthing není vhodný pro synchronizaci velkého množství malých souborů, jako jsou osm dlaždicové soubory, protože rychle narazí na limity inotify souborového systému Linux. Pokud obě zařízení používají Linux, můžete použít rsync (vzdálená synchronizace) nástroj pro synchronizaci velkého množství malých souborů, jako je tento:

rsync -aP /path/to/source/folder/  [email protected]:/path/to/destination/folder

Spuštění více instancí synchronizace

Pokud máte více sdílených složek, které patří různým uživatelům, je dobré spustit více instancí Syncthing pro každého uživatele.

sudo systemctl start [email protected]
sudo systemctl start [email protected]

Pokud spustíte Syncthing jako uživatel 1 a sdílíte složky patřící uživateli 2, budete mít problémy s nesynchronizovaností/odepřením oprávnění, protože Syncthing vytvoří soubory s uživatelem, pod kterým běží.

Každá instance musí mít jedinečný port GUI a synchronizační port, které lze nakonfigurovat v konfiguračním souboru synchronizace uživatele v domovském adresáři.

nano ~/.config/syncthing/config.xml

Konfigurace GUI portu je

<address>127.0.0.1:8384</address>

Výchozí konfigurace synchronizačního portu je

<listenAddress>default</listenAddress>

Můžete to změnit na

<listenAddress>tcp://0.0.0.0:22001</listenAddress>

Pokud nechcete vytvořit subdoménu pro každou instanci Syncthing, můžete vytvořit podadresář v názvu své domény. Například konfigurace podadresáře Nginx pro Syncthing je následující.

 location /user2/ {
    proxy_pass http://127.0.0.1:8385/;
    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;
  }

Jako podadresář používám user2. Můžete si vybrat, jaké jméno chcete. Všimněte si, že v proxy_pass http://127.0.0.1:8385/; , koncové lomítko / je potřeba. Pokud jej smažete, nebude fungovat.

Tipy pro odstraňování problémů

Nelze se připojit

Pokud se vaše instance Syncthing nemohou navzájem propojit, můžete použít ss (socket stats) pro kontrolu, zda Syncthing naslouchá na TCP portu 22000.

sudo ss -lnpt | grep syncthing

Jak můžete vidět na snímku obrazovky níže, můj Syncthing naslouchá na portu 8384 (webové rozhraní) a 22000 (připojení peer-to-peer).

Pokud ne, můžete upravit konfigurační soubor.

nano ~/.config/syncthing/config.xml

Najděte následující řádek.

<listenAddress>default</listenAddress>

Změnit default na tcp://your-IP-address .

<listenAddress>tcp://12.34.56.78</listenAddress>

Uložte a zavřete soubor. Poté restartujte Syncthing.

sudo systemctl restart [email protected]username.service

Vytvoření značky složky se nezdařilo

Pokud chcete synchronizovat systémovou složku, jako je /etc/ , pravděpodobně se vám zobrazí následující chybová zpráva:

Failed to create folder marker, read-only file system

Je to proto, že synchronizační služba systemd (/lib/systemd/system/[email protected] ) má následující ProtectSystem proměnná, která zakazuje operaci zápisu do složek systemd (/usr/, /boot/, /etc/).

ProtectSystem=full

Můžeme přidat výjimky, takže Syncthing může zapisovat do složky. Vytvořte složku pro uložení našich vlastních konfigurací systemd.

sudo mkdir /etc/systemd/system/[email protected]username.service.d/

Poté vytvořte soubor v tomto adresáři.

sudo nano /etc/systemd/system/[email protected]username.service.d/permission.conf

Přidejte do tohoto souboru následující řádky.

[Service]
ReadWritePaths=/shared/foler/one/  /shared/foler/two/

Složky jsou odděleny prázdným prostorem. Můžete přidat libovolný počet složek. Složka musí ve vašem systému existovat, jinak se Syncthing nepodaří restartovat.

Uložte a zavřete soubor. Poté znovu načtěte systemd.

sudo systemctl daemon-reload

A restartujte Syncthing.

sudo systemctl restart [email protected]username.service

Velikost složky v globálním stavu je nepřesná

K tomu může dojít, pokud sdílíte složky s více zařízeními. Řekněme, že sdílíte složku ze zařízení 1 do zařízení 2. Pokud zařízení 2 nedokončí synchronizaci souborů a sdílíte složku ze zařízení 2 do zařízení 3, bude globální velikost složky zobrazená na zařízení 3 menší než skutečná velikost .

Synchronizace složky se zastaví

Zkontrolujte protokoly Syncthing a zjistěte, proč se synchronizace zastavila.

sudo journalctl -eu [email protected]

Problém se zpracováním požadavků

Pokud uvidíte následující chybu, můžete zkontrolovat protokol chyb Nginx (/var/log/nginx/syncthing.error.log ) nebo protokol chyb Apache (/var/log/apache/syncthing_error.log ), abyste zjistili, co tento problém způsobilo.

Syncthing seems to be experiencing a problem processing your request. Please refresh the page or restart Syncthing if the problem persists.

V mém případě je to proto, že jsem povolil bránu firewall webové aplikace ModSecurity.

Asynchronní replikace

Všimněte si, že Syncthing používá asynchronní metodu, takže replikace změn provedených na jednom uzlu do ostatních uzlů bude nějakou dobu trvat. Pokud je vaše aplikace citlivá na zpoždění synchronizace, doporučuje se určit uzel jako hlavní uzel. Proveďte změny pouze na hlavním uzlu a použijte podřízené uzly jako zálohu.


Ubuntu
  1. Jak nainstalovat plochu (GUI) na server Ubuntu

  2. Jak nainstalovat MySQL na Ubuntu 18.04

  3. Jak nainstalovat Minecraft Server na Ubuntu 18.04

  1. Jak nainstalovat Xrdp Server (Remote Desktop) na Ubuntu 18.04

  2. Jak nainstalovat Nginx na Ubuntu 20.04

  3. Jak nainstalovat Xrdp Server (Remote Desktop) na Ubuntu 20.04

  1. Jak nainstalovat MariaDB na Ubuntu 20.04

  2. Jak nainstalovat klienta ownCloud na plochu Ubuntu 14.04

  3. Jak nainstalovat Ubuntu Desktop ze serveru Ubuntu