Syncthing Cloud

Ez a bejegyzés egy nyílt forráskódú eszközt mutat be, mely segítségével szinkronizálni tudjuk a különböző eszközeinken lévő állományainkat. Telepíthető Android-, Linux- és Windows környezetre egyaránt. Jelen esetben egy Debian 10 (buster) alaprendszeren mutatom be az eszköz telepítését.

Syncthing telepítése

Mielőtt bármit is tennénk, telepítsük a curl csomagot:

apt-get install gnupg gnupg2 gnupg1 curl sudo

Először is adjuk hozzá a Syncthing csomagtárolóját a rendszerünkhöz:

curl -s https://syncthing.net/release-key.txt | sudo apt-key add -
echo "deb http://apt.syncthing.net/ syncthing release" | sudo tee /etc/apt/sources.list.d/syncthing.list
apt-get update

Majd rögtön telepítsük is fel a szolgáltatást:

apt-get install syncthing

A szolgáltatás egy adott felhasználó nevében fut, amikor elindul. Biztonsági szempontból hasznosabb, ha szolgáltatás indításához egy külön felhasználót hozunk létre, akinek adunk egy külön könyvtárat, így ide fognak a távoli állományok szinkronizálódni. Így amennyiben támadás érné a szerverünket, csak az adott felhasználó jogosultságának megfelelő jogokkal fog rendelkezni a támadó:

useradd -r syncthing -m -d /home/syncthing
  • r: rendszer felhasználó
  • m: felhasználói könyvtár készítése
  • d: felhasználói könyvtár elérési útja

A /lib/systemd/system könyvtár alatt fogjuk találni a syncthing@.service fájlt. Engedélyezzük az általunk létrehozott felhasználónak a szolgáltatás használatát:

systemctl enable syncthing@syncthing.service

Az első syncthing a futtatni kívánt szolgáltatás neve, míg a második syncthing a korábban létrehozott felhasználó. Az utasítás hatására létrejön egy symlink:

 symlink /etc/systemd/system/multi-user.target.wants/syncthing@syncthing.service → /lib/systemd/system/syncthing@.service.

Indítsuk el a szolgáltatást:

systemctl start syncthing@syncthing.service

Ellenőrizzük, hogy a szolgáltatás elindult:

systemctl status syncthing@syncthing.service

Valami ilyesmit fogunk látni:

syncthing@syncthing.service - Syncthing - Open Source Continuous File Synchronization for syncthing
   Loaded: loaded (/lib/systemd/system/syncthing@.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2019-12-29 15:56:10 CET; 9s ago
     Docs: man:syncthing(1)
 Main PID: 2256 (syncthing)
    Tasks: 9 (limit: 1150)
   Memory: 28.2M
   CGroup: /system.slice/system-syncthing.slice/syncthing@syncthing.service
           └─2256 /usr/bin/syncthing -no-browser -no-restart -logflags=0

dec 29 15:56:11 syncth syncthing[2256]: [7CGGB] INFO: Using discovery server https://discovery-v6.syncthing.net/v2/?nolookup&id=LYXKCHX-VI3NYZR-ALCJBHF-WMZYSPK-******-******
dec 29 15:56:11 syncth syncthing[2256]: [7CGGB] INFO: QUIC listener ([::]:22000) starting
dec 29 15:56:11 syncth syncthing[2256]: [7CGGB] INFO: Loading HTTPS certificate: open /home/syncthing/.config/syncthing/https-cert.pem: no such file or directory
dec 29 15:56:11 syncth syncthing[2256]: [7CGGB] INFO: Creating new HTTPS certificate
dec 29 15:56:11 syncth syncthing[2256]: [7CGGB] INFO: TCP listener ([::]:22000) starting
dec 29 15:56:11 syncth syncthing[2256]: [7CGGB] INFO: Relay listener (dynamic+https://relays.syncthing.net/endpoint) starting
dec 29 15:56:11 syncth syncthing[2256]: [7CGGB] INFO: Completed initial scan of sendreceive folder "Default Folder" (default)
dec 29 15:56:11 syncth syncthing[2256]: [7CGGB] INFO: GUI and API listening on 127.0.0.1:8384
dec 29 15:56:11 syncth syncthing[2256]: [7CGGB] INFO: Access the GUI via the following URL: http://127.0.0.1:8384/
dec 29 15:56:11 syncth syncthing[2256]: [7CGGB] INFO: My name is "syncth"

A szolgáltatás konfigurációs állománya a /home/syncthing/.config/syncthing/config.xml lesz. A szinkronizáció a /home/syncthing/Sync könyvtárba fog történni. Alapértelmezés szerint a webes adminisztrációs felület, a 127.0.0.1:8384 címen érhető el.

Apache2 beállítása

Én az Apache2 webszervert fogom használni a Syncthing alkalmazás kiszolgálására. Telepítsük- és konfiguráljuk a webszervert:

apt install apache2

Engedélyezzük a szükséges modulokat:

a2enmod proxy proxy_http
systemctl restart apache2

Konfigurációs állomány létrehozása:

nano /etc/apache2/sites-available/syncthing.conf
<VirtualHost *:80>
ServerName syncth.vanyi.lan
ProxyPass / http://localhost:8384/
<Location />
    ProxyPassReverse http://localhost:8384/
    Require all granted
</Location>
</VirtualHost>

Engedélyezzük a konfigurációt, majd indítsuk újra a webszervert:

a2ensite syncthing.conf
a2dissite 000-default.conf
systemctl restart apache2

A default beállítást azért tiltottam le, mert a syncth.vanyi.lan domain név maga a szerverem neve, nem egy virtuális név. Így ha nem kapcsolom ki az alapértelmezett konfigurációt, az apache alapértelmezett weboldala jön be.

Legyen SSL

Telepítsük a Let’s Encrypt tanusítvány hatóság ingyenes tanusítványát. Először a szolgáltatás:

cd /usr/local/bin
wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
./certbot-auto --install-only

Majd telepítsük a tanusítványt:

certbot --apache

Tulajdonképpen el is készültünk. A weboldalon érdemes a bejelentkezéshez megadni a felhasználói nevet és jelszót. A bejegyzéshez készítéséhez a következő cikket használtam.