Na synchronizaci dat mezi počítači používám bezplatný a otevřený nástroj Syncthing. Dříve jsem používal Resilio Sync, ale poté co změnili licenční politiku a pro běh na serverovém OS je třeba měsíční platba, přešel jsem právě na Syncthing. A na kanálu Z-TECH jsem o něm vytvořil seriál:
- Základní představení a instalace na Windows
- Instalace na Linux a Raspberry Pi
- Pokročilejší nastavení synchronizace
- Instalace na Windows jako služba
Instalace na Windows je poměrně přímočará, ale na Linuxu je to o něco složitější, je tam více manuálních kroků. Proto jsem připravil návod krok za krokem.
Instalace aplikace Syncthing na Linuxu
Tento návod popisuje, jak nainstalovat synchronizační software na Linux. Počítá s následujícími distribucemi, aktuálními ke dni vydání článku:
- Ubuntu Linux 24.04 LTS
- Raspberry Pi OS 2024-03-15 (Debian 12 - Bookworm)
Z mého pohledu je důležitá zejména instalace na Raspberry Pi, protože pomocí něj a externího disku (ukážu vám, jak ho zprovoznit) si můžete jednoduše vytvořit off-site zálohu. V práci, u známého, kdekoliv kde je připojení k Internetu, si můžete jednoduše vytvořit zálohovací server, který ochrání vaše data i v případě, že by primární lokace byla zničena, například požárem.
Návodů na zprovoznění Syncthingu na Linuxu jsem našel spoustu, ale mají z mého pohledu dvě zásadní vady z hlediska bezpečnosti:
- Syncthing běží pod rootem, nebo pod uživatelem s vysokými oprávněními. Můj návod počítá s vytvořením speciálního uživatele s nízkými právy.
- Jeho webové administrační rozhraní je dostupné přímo z vnější sítě (případně z Internetu). Můj návod schovává rozhraní za nginx proxy.
Základní instalace
| 1. | Připojte se na server z konzole nebo přes SSH. |
|---|---|
| 2. | Následujícími příkazy plně aktualizujte systém
Vyčkejte, dokud vše neproběhne, což může v závislosti na rychlosti vašeho připojení a počítače trvat i několik desítek minut. |
Instalace aplikace Syncthing
| 3. | Přidejte klíč APT repository Syncthingu mezi důvěryhodné: |
|---|---|
| 4. | Přidejte repository do systému: |
| 5. | Aktualizujte seznam dostupných balíčků: |
| 6. | Nainstalujte aplikaci Syncthing: |
Vytvoření uživatele
Chceme, aby aplikace běžela nikoliv pod rootem (nebo jiným uživatelem s vysokými právy), ale pod svým vlastním uživatelem syncthing s minimálními oprávněními.
| 7. | Následujícím příkazem vytvoříte pro službu uživatele: |
|---|---|
| 8. | Přepněte se do kontextu tohoto uživatele: |
| 9. | Spusťte z konzole Syncthing, aby se vytvořila konfigurace: |
| 10. | Měli byste vidět log, zhruba jako na následujícím obrázku:
Ukončete aplikaci stiskem Ctrl+C. |
| 11. | Opusťte kontext uživatele služby: |
Konfigurace aplikace a registrace daemona
Protože budeme chtít webové rozhraní aplikace publikovat do Internetu pomocí nginxu, je třeba provést změnu v konfiguraci, aby fungovala publikace pomocí proxy. Také je nutné nastavit Syncthing jako daemona, automaticky spouštěnou aplikaci běžící na pozadí.
| 12. | Otevřete konfigurační soubor v editoru Nano: |
|---|---|
| 13. | Najděte v XML dokumentu element
|
| 14. | Stiskem Ctrl+S uložte změny a stiskem Ctrl+X ukončete editor. |
| 15. | Vytvořte v editoru Nano soubor s definicí služby: |
| 16. | Zadejte do něj následující text: |
| 17. | Stiskem Ctrl+S uložte změny a stiskem Ctrl+X ukončete editor. |
| 18. | Následujícími příkazy službu zaregistrujte a nastartujte: |
| 19. | Následujícím příkazem si ověřte, že úspěšně běží (je tam
|
Nyní již Syncthing běží a mohli byste se k němu připojit pomocí adresy |
Publikace pomocí nginxu
Nechceme, aby byl Syncthing do sítě (Internetu) vystaven přímo, ale prostřednictvím proxy nginx. Z bezpečnostních důvodů a i z důvodů praktických -- například je výrazně jednodušší nastavit automatické vystavení a obnovování HTTPS certifikátů od Let's Encrypt CA pro nginx než přímo pro Syncthing.
| 20. | Nainstalujte nginx: |
|---|---|
| 21. | Vytvořte v editoru Nano konfigurační soubor pro naši site: |
| 22. | Zadejte do něj následující obsah: |
| 23. | Stiskem Ctrl+S uložte změny a stiskem Ctrl+X ukončete editor. |
| 24. | Zakažte výchozí demo site a povolte nově vytvořenou site pro Syncthing: |
| 25. | Reloadněte konfiguraci nginxu: |
Základní zabezpečení
| 26. | Podívejte se v prohlížeči na IP adresu nebo název vašeho serveru. Zobrazí se vám webové GUI aplikace Syncthing:
|
|---|---|
| 27. | V tomto okamžiku není nastaveno pro webové rozhraní žádné uživatelské jméno a heslo.
|
Po klepnutí na Save se Syncthing restartuje, což chvíli trvá. Nenechte se zmást chybovými hlášeními jako například 502 Gateway Timeout. Chvíli vyčkejte a obnovte stránku. |
|
| 28. | Nyní budete před vstupem do uživatelského rozhraní vyzváni k zadání jména a hesla, které jste zvolili v kroku 27. |
| 29. | Abychom zvýšili zabezpečení celého systému, nastavíme pravidla na firewallu tak, aby byly povoleny pouze vybrané porty. Nainstalujte Uncomplicated firewall (UFW): |
Instalace UFW není nezbytná, lze přímo konfigurovat iptables, ale to není dvakrát pohodlné, proto je lepší toto jednoduché rozhraní. |
|
| 30. | Následujícími příkazy povolíte porty 22, 80 a 443: |
| 31. | Následujícím příkazem firewall aktivujete:
Na dotaz |
| 32. | Následujícím příkazem restartujte server a ověřte si, že všechny služby po rebootu řádně nastartovaly: |
Instalace dalšího disku
Syncthing nám úspěšně běží a můžeme s ním běžným způsobem pracovat. Nicméně v případě Raspberry Pi máme k dispozici pouze úložiště na paměťové kartě, což není ideální. Následujícím postupem lze připojit k Raspberry externí disk pomocí USB a zpřístupnit ho pro použití Syncthingem.
Tento postup předpokládá, že disk je zcela nový, prázdný, bez partitions atd. Pokud tomu tak není, budete v kroku 38 muset nejprve smazat existující partitions. |
|
| 33. | Nejprve zjistěte, jak se váš disk systémově jmenuje. To záleží na mnoha okolnostech, ale typicky to bude |
Je velmi důležité si být jisti, že pracujete se správným diskem! Pokud budete příkazy volat proti špatnému disku, přijdete o veškerá data na něm! |
|
| 34. | Následujícím příkazem si vypište seznam všech disků: |
| 35. | Najděte svůj disk. Poznáte jej podle velikosti (zde 931,51 GiB) a modelu (zde 024 HN-M101MBB). Pro náš případ se tento disk jmenuje
|
Pokud se váš disk jmenuje jinak, musíte |
|
| 36. | Spusťte interaktivní aplikaci pro vytvoření partitions cfdisk: |
| 37. | Jako label type zvolte výchozí hodnotu
|
| 38. | Pokud je váš disk prázdný, uvidíte pouze informaci Free space. Pokud by na něm byly partitions, musíte všechny smazat (Delete), dokud se do tohoto stavu nedostanete.
|
| 39. | Šipkami vyberte New a klepněte na Enter. |
| 40. | Potvrďte výchozí velikost (použije se celý disk) tím, že klepnete na Enter. |
| 41. | Vyberte Write. Na otázku Are you sure you want to write the partition table to disk? odpovězte |
| 42. | Podívejte se, jak se jmenuje nově vytvořená partition. Zde
|
Pokud se vaše partition jmenuje jinak, musíte |
|
| 43. | Následujícím příkazem partition naformátujte na souborový systém EXT4. První parametr ( |
Pokud budete vyzváni k přepsání existující partition, odpovězte |
|
| 44. | Vytvořte prázdný adresář |
| 45. | Přimountujte novou partition do tohoto adresáře: |
Nyní je váš disk dostupný pro operační systém. Můžete se o tom přesvědčit příkazem |
|
| 46. | Učiňte uživatele |
| 47. | Zakažte přístup komukoliv kromě vlastníka: |
| 48. | Nyní všechno funguje, ale po rebootu přestane. Aby byl disk funkční i po restartu (automaticky se přimountoval), editujte soubor |
| 49. | Přidejte na konec souboru následující řádek (oddělovač je tabulátor):
|
| 50. | Stiskem Ctrl+S uložte změny a stiskem Ctrl+X ukončete editor. |
| 51. | Následujícím příkazem restartujte server: |
| 52. | Po restartu se přesvědčte, že je disk řádně namountován (uvidíte v něm jako root adresář |









