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.