Tento tutoriál vám ukáže, jak nainstalovat Syncthing na Debianu. 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.
Nainstalujte Syncthing na Debian prostřednictvím oficiálního úložiště Deb
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 Debian.
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í Debian 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 Debianu, můžete povolit vzdálený přístup k webovému rozhraní Syncthing úpravou konfiguračního souboru.
nano /home/username/.config/syncthing/config.xml
Najděte následující dva řádky.
<gui enabled="true" tls="false" debugging="false"> <address>127.0.0.1:8384</address>
Změňte tls="false"
na tls="true"
, takže provoz HTTP bude šifrován. A změňte 127.0.0.1
na veřejnou IP adresu serveru Debian. Uložte a zavřete soubor. Restartujte synchronizaci, aby se změny projevily.
sudo systemctl start [email protected]username.service
Nyní zadejte server-ip-address:8384
ve webovém prohlížeči pro přístup k webovému rozhraní Syncthing. Samozřejmě musíte použít skutečnou IP adresu serveru Debian. Budete požádáni o nastavení uživatelského jména a hesla pro ochranu webového rozhraní Syncthing.
Můžete také nastavit reverzní proxy s Nginx nebo Apache pro 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:rx /folder/path/
V části Sharing
vyberte své druhé zařízení Syncthing.
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 Debianu, 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.
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říjem
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.
Odstraňování problémů
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
Chybí soubor .stfoler
.stfoler
soubor vyžaduje Syncthing, aby fungoval. Toto je prázdný soubor. Není třeba k tomu nic dodávat. Pokud .stfolder
ve vaší synchronizační složce chybí soubor, synchronizace se zastaví. Pro automatické vytvoření souboru můžete vytvořit následující úlohu Cron.
@hourly touch /path/to/sync/folder/.stfolder
Dotykový příkaz vytvoří soubor, pokud chybí. Pokud soubor již existuje, aktualizuje časové razítko souboru.