====== Syncthing ====== Syncthing je nástroj pro synchronizaci adresářů se soubory. ===== Instalace ===== Postup instalace se může lišit pro různé operační systémy, většinou je přítomen v repozitáři Linuxové distribuce. Pro systémy používající deb balíčky je také k dispozici [[https://apt.syncthing.net/|repozitář Syncthing]]. ===== Webové GUI rozhraní ===== Defaultně je na localhostu na portu 8384. [[http://127.0.0.1:8384]] Je možné nastavit uživatelské jméno a heslo, dále lze zapnout zabezpečení HTTPS a dá se změnit naslouchací adresa i port. ==== Lighttpd reverzní proxy ==== Na stránkách Syncthing je [[https://docs.syncthing.net/users/reverseproxy.html|návod]] pro nastavení reverzní proxy pro různé webové servery, jen ne pro ''lighttpd''. Předem ještě dodám, že lighttpd [[https://redmine.lighttpd.net/projects/lighttpd/wiki/Mod_proxy|mod_proxy]] v současnosti nepodporuje SSL/TLS spojení k backend serveru, takže pro syncthing webové GUI doporučuji mít vypnuté HTTPS zabezpečení a to si zajistit na úrovni lighttpd, například skriptem [[banana_pi_m2u:lighttpd:dehydrated|dehydrated]] získat certifikáty Lets Encrypt. Jméno a heslo pro přihlášení lze mít buď přes syncthing GUI nebo přes lighttpd [[https://redmine.lighttpd.net/projects/lighttpd/wiki/Mod_auth|mod_auth]]. Upravíme soubor ''/etc/lighttpd/lighttpd.conf'', případně jiný soubor s konfigurací našeho webserveru. Pro příklad předpokládejme adresu ''http://domain.com/examplesync/'' sudo vim /etc/lighttpd/lighttpd.conf a do souboru vložíme: $HTTP["url"] =~ "^/examplesync/" { proxy.server = ( "" => ( ( "host" => "127.0.0.1", "port" => 8384 ) ) ) proxy.header = ( "map-urlpath" => ( "/examplesync/" => "/" ) ) } Nastavení ''map-urlpath'' je velmi důležité v případě, že chceme nějakou cestu za doménami (složku ''examplesync''), protože lighttpd zjevně defaultně kopíruje tuto cestu i v rámci proxy, když s tím aplikace nepočítá. Po uložení konfigurace lighttpd znovu načteme jeho konfiguraci. sudo /etc/init.d/lighttpd force-reload Syncthing má implementovanou ochranu proti DNS rebinding útoku a pokud jsme nastavili naslouchací adresu na localhost, při přístupu přes reverse proxy se zobrazí hlášení ''Host check error''. Více informací je ve [[https://docs.syncthing.net/users/faq.html#why-do-i-get-host-check-error-in-the-gui-api|FAQ]]. Jedno z řešení je vypnout kontrolu hosta. Ve webovém GUI to jde zaškrtnout v **Akce** → **Pokročilé** → **Grafické rozhraní** → **Insecure Skip Hostcheck**, nebo se musí upravit soubor ''~/.config/syncthing/config.xml''. Otevřeme soubor ~/.config/syncthing/config.xml vim ~/.config/syncthing/config.xml a do sekce vložíme direktivu ''true''
127.0.0.1:8384
true someuser somehashedpassword someapikey default
Poté znovu spustíme syncthing a mělo by vše fungovat. ===== Spouštění syncthing ===== V této části zápisku popíšu spouštění jak na serveru, tak i v grafickém prostředí. ==== Trvalý běh v systému bez systemd ==== V balíčku jsou přítomny systemd service soubory, viz [[https://docs.syncthing.net/users/autostart.html#linux|návod]], ale pokud systemd nemáme, návod doporučuje program ''supervisord''. Já jsem se rozhodl jít cestou přes ''cron'' a ''screen''. Otevřeme si uživatelský cron: crontab -e a do souboru vložíme: */5 * * * * if [ `screen -list | grep [.]syncthing | wc -l` = '0' ]; then screen -h 1024 -dmS syncthing syncthing ; fi Tento způsob může mít tu nevýhodu, že při vypínání systému by teoreticky mohlo dojít k ukončení syncthing a jeho opětovném zapnutí před ukončením cronu. ==== Běh v desktopovém prostředí ==== === GTK varianta === Na desktopu lze nainstalovat balíček ''syncthing-gtk'' z repozitáře a v tomto GUI je možné nastavit start programu i s démonem syncthing zároveň s přihlášením do desktopového prostředí. === QT varianta === [[https://packages.debian.org/bookworm/syncthingtray|syncthingtray]] jako balíček je v době psaní tohoto zápisku přítomný v Debianu jen v testing větvi (bookworm). Z uvedených závislostí lze vycházet i pro starší vydání, snad jen s dodatkem, že knihovny, které začínají názvem ''libmartchus'' nejsou ve starší verzi distribuce nutné. Ze [[https://github.com/Martchus/syncthingtray/releases|stránky projektu]] lze stáhnout binární soubor pro architekturu x86-64 (archiv syncthingtray) a je možné jej vložit například do adresáře ''/opt/syncthingtray''. cd /opt/ tar xf syncthingtray-1.3.2-x86_64-pc-linux-gnu.tar.xz Pro ostatní architektury bude nezbytné přeložit program ze zdrojového kódu. Podle potřeby vytvoříme .desktop soubor nebo záznam v nabídce programů pro snazší spouštění. V programu se dá nastavit jeho spouštění do tray v panelu po přihlášení do uživatelského prostředí a tento program si zároveň spustí démona syncthing.