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