GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come installare Syncthing su Ubuntu Desktop/Server

Questo tutorial ti mostrerà come installare Syncthing su Ubuntu. Syncthing è un programma di sincronizzazione di file continuo peer-to-peer gratuito che ti consente di sincronizzare i tuoi file su più dispositivi, disponibile per Linux, BSD, macOS, Windows, Android e Solaris.

È un'alternativa open source al popolare Resilio Sync (precedentemente noto come Sincronizzazione BitTorrent ) applicazione. La creazione, la modifica o l'eliminazione di file su una macchina verrà automaticamente replicata sugli altri dispositivi. Syncthing non carica i tuoi file su un server centrale come Nextcloud , ma scambia i tuoi dati direttamente tra i tuoi dispositivi. Tutti i tuoi dati sono crittografati con TLS durante la trasmissione tra i tuoi dispositivi.

Funzionalità di sincronizzazione

  • Gratuito e open source.
  • Velocità di sincronizzazione rapida.
  • Supporta la sincronizzazione unidirezionale.
  • Sincronizzazione selettiva (ignora pattern).
  • Può utilizzare server di inoltro se due peer non possono connettersi tra loro.
  • Supporta l'autenticazione LDAP.

Installa Syncthing su Ubuntu tramite il repository ufficiale di Deb

Syncthing è incluso nel repository Ubuntu predefinito dal 18.04 Bionic Beaver. Tuttavia, si consiglia di installare Syncthing dal repository ufficiale a monte, in modo da ottenere l'ultima versione.

Usa curl per scaricare la chiave GPG importare la chiave con apt-key .

sudo apt-get install curl

curl -s https://syncthing.net/release-key.txt | sudo apt-key add -

Se vedi OK nel terminale, ciò significa che la chiave GPG è stata importata correttamente. Quindi aggiungi il repository ufficiale di deb con il seguente comando.

echo "deb https://apt.syncthing.net/ syncthing stable" | sudo tee /etc/apt/sources.list.d/syncthing.list

Poiché questo repository utilizza https, è necessario installare apt-transport-https pacchetto, in modo che il gestore di pacchetti APT possa stabilire una connessione https con questo repository.

sudo apt-get install apt-transport-https

Aggiorna l'indice del pacchetto locale e installa la sincronizzazione su Ubuntu.

sudo apt-get update

sudo apt-get install syncthing

Utilizzo di Systemd per configurare la sincronizzazione come servizio di sistema

Il pacchetto ufficiale Syncthing deb viene fornito con il file di servizio systemd necessario. Sotto /lib/systemd/system/ directory, troverai un [email protected] file. Abilita la sincronizzazione per l'avvio automatico all'avvio eseguendo il comando seguente. Sostituisci username con il tuo nome utente effettivo.

sudo systemctl enable [email protected]username.service

Il comando precedente creerà un collegamento simbolico che punta a [email protected] file.

Created symlink from /etc/systemd/system/multi-user.target.wants/[email protected] to /lib/systemd/system/[email protected]

Ora possiamo avviare il servizio Syncthing con il seguente comando.

sudo systemctl start [email protected]username.service

Controlla lo stato

systemctl status [email protected]username.service

Uscita:

Suggerimento:se il comando precedente non si chiude immediatamente, premi Q per riprendere il controllo del terminale.

Possiamo vedere che l'avvio automatico di Syncthing è abilitato ed è in esecuzione.

Il servizio di sincronizzazione systemd crea file di configurazione in /home/username/.config/syncthing/ e una cartella /home/username/Sync come cartella di sincronizzazione predefinita. Il file di configurazione principale è /home/username/.config/syncthing/config.xml .

Installa Syncthing su altri sistemi operativi

Vai alla pagina di download di Syncthing e installa Syncthing su altri sistemi operativi come Windows, macOS, BSD, Android.

Apri la porta 22000 nel firewall

Syncthing utilizza la porta 22000 per comunicare con i peer. Se il tuo computer o server ha abilitato il firewall UFW, devi consentire la porta 22000 con il seguente comando.

sudo ufw allow 22000/tcp

Accesso all'interfaccia Web di sincronizzazione di Ubuntu

Per impostazione predefinita, il servizio Syncthing è in ascolto su 127.0.0.1:8384. Ora nella barra degli indirizzi del tuo browser Web, digita 127.0.0.1:8384 per accedere all'interfaccia Web di Syncthing. Puoi aggiungere altri dispositivi Syncthing e condividere cartelle con loro.

Se installi Syncthing su un server Ubuntu remoto, devi configurare un proxy inverso con Nginx o Apache per accedere all'interfaccia utente web, come spiegato più avanti in questo tutorial.

Inizia a sincronizzare i file tra i tuoi dispositivi

Una volta che abbiamo due dispositivi che eseguono Syncthing, possiamo iniziare a sincronizzare i file tra di loro.

Nell'interfaccia web di Syncthing, fai clic su Azioni> Mostra ID nell'angolo in alto a destra. Vedrai l'ID del dispositivo, che è una lunga stringa di lettere e numeri. Il codice QR, che è anche l'ID del dispositivo, viene utilizzato per configurare Syncthing sugli smartphone.

Copia l'ID dispositivo, quindi apri l'interfaccia Web di sincronizzazione del secondo dispositivo, fai clic su Aggiungi dispositivo remoto nell'angolo in basso a destra. Quindi incolla l'ID dispositivo e assegna un nome al dispositivo. Fare clic sul pulsante Salva.

Ora il secondo dispositivo proverà a connettersi al primo dispositivo. Aggiorna l'interfaccia Web sul primo dispositivo, vedrai il seguente messaggio. Fai clic su Aggiungi dispositivo per aggiungere il secondo dispositivo all'elenco dei dispositivi del primo dispositivo.

Ora i due dispositivi sono collegati.

Nel riquadro sinistro dell'interfaccia Web è presente la cartella di sincronizzazione predefinita (/home/username/Sync ). Fai clic su Add Folder pulsante per aggiungere una nuova cartella. Assegna un'etichetta descrittiva a questa cartella e imposta il percorso della cartella.

Syncthing viene eseguito come il tuo account utente, quindi è necessario disporre dell'autorizzazione di scrittura sulla cartella condivisa. Se visualizzi il seguente messaggio di errore durante la condivisione di una cartella, significa che non hai l'autorizzazione di scrittura su quella cartella.

2020-06-21 20:05:49: Failed to create folder marker: mkdir .stfolder: read-only file system

Puoi concedere il permesso di scrittura con setfacl .

sudo apt install acl
sudo setfacl -R -m u:username:rwx /folder/path/

Nota :se il problema persiste, consulta i suggerimenti per la risoluzione dei problemi alla fine di questo articolo.

Nella Sharing scheda, seleziona l'altro dispositivo Syncthing.

In Ignore Pattens scheda, puoi inserire i modelli di nome per i file che non devono essere sincronizzati.

In Advanced scheda, puoi scegliere il tipo di cartella, l'intervallo di nuova scansione, ecc.

Fare clic sul pulsante Salva per iniziare la sincronizzazione. Verrà visualizzato un messaggio nell'interfaccia Web dell'altro dispositivo. Fai clic su Aggiungi per ricevere file.

Ora i due dispositivi stanno sincronizzando i file. Sul lato destro, puoi vedere la velocità di download, la velocità di caricamento, la dimensione della cartella locale, ecc.

Imposta proxy inverso

Poiché è in ascolto su 127.0.0.1:8384, l'interfaccia Syncthing Web è disponibile solo per le connessioni dallo stesso computer. Per poter accedere all'interfaccia Web di Syncthing da un computer remoto, possiamo configurare un proxy inverso per Syncthing con Nginx o Apache.

Nginx

Nginx è un server Web e proxy inverso molto popolare. Se preferisci usare Nginx, esegui il comando seguente per installarlo.

sudo apt install nginx

Quindi crea un file di configurazione del server.

sudo nano /etc/nginx/conf.d/syncthing.conf

Aggiungi il seguente contenuto a questo file. Sostituisci syncthing.example.com con il tuo nome di dominio preferito. Dovresti anche aggiungere un record DNS A per questo sottodominio. Se non hai un vero nome di dominio, ti consiglio di andare su NameCheap per acquistarne uno. Il prezzo è basso e offrono protezione della privacy a chi è gratuita per tutta la vita.

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;
  }
}

Salva e chiudi il file. Testare la configurazione di Nginx e ricaricare Nginx.

sudo nginx -t

sudo systemctl reload nginx

Dopo aver puntato il tuo nome di dominio all'indirizzo IP di Ubuntu, digita il tuo nome di dominio nella barra degli indirizzi del browser e dovresti vedere l'interfaccia Syncthing Web.

Se il tuo browser non riesce a connettersi all'interfaccia web di Syncthing, forse devi aprire la porta 80 nel firewall. Ad esempio, se utilizzi UFW, esegui il comando seguente.

sudo ufw allow 80/tcp

Apache

Apache è un noto server web che può essere utilizzato anche come proxy inverso. Se preferisci Apache a Nginx, installalo con:

sudo apt install apache2

Avvia Apache e abilita l'avvio automatico.

sudo systemctl start apache2

sudo systemctl enable apache2

Per utilizzare Apache come proxy inverso, dobbiamo abilitare il proxy moduli e il modulo di intestazione.

sudo a2enmod proxy proxy_http headers proxy_wstunnel

Ora crea un file host virtuale per Syncthing.

sudo nano /etc/apache2/sites-available/syncthing.conf

Copia e incolla le seguenti righe nel file. Sostituisci syncthing.example.com con il tuo vero nome di dominio. Dovresti anche aggiungere un record DNS A per questo sottodominio. Se non hai un vero nome di dominio, ti consiglio di andare su NameCheap per acquistarne uno. Il prezzo è basso e offrono protezione della privacy a chi è gratuita per tutta la vita.

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

Salva e chiudi il file. Quindi abilita questo host virtuale.

sudo a2ensite syncthing.conf

Riavvia Apache

sudo systemctl restart apache2

Ora puoi accedere all'interfaccia utente Web tramite syncthing.example.com .

Se il tuo browser non riesce a connettersi all'interfaccia web di Syncthing, forse devi aprire la porta 80 nel firewall. Ad esempio, se utilizzi UFW, esegui il comando seguente.

sudo ufw allow 80/tcp

Proteggi l'interfaccia utente Web di sincronizzazione con HTTPS

Per crittografare il traffico HTTP quando visiti l'interfaccia utente Web di Syncthing tramite un nome di dominio, possiamo abilitare HTTPS installando un certificato TLS gratuito emesso da Let's Encrypt. Innanzitutto, apri la porta 443 nel firewall.

sudo ufw allow 443/tcp

Quindi esegui il comando seguente per installare il client Let's Encrypt (certbot).

sudo apt install certbot

Se usi Nginx, devi anche installare il plugin Certbot Nginx.

sudo apt install python3-certbot-nginx

Quindi, esegui il comando seguente per ottenere e installare il certificato TLS.

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d syncthing.example.com

Se usi Apache, installa il plugin Certbot Apache.

sudo apt install python3-certbot-apache

Ed esegui questo comando per ottenere e installare il certificato TLS.

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d syncthing.example.com

Dove

  • --nginx :usa il plugin nginx.
  • --apache :usa il plugin Apache.
  • --agree-tos :Accetta i termini di servizio.
  • --redirect :Forza HTTPS tramite reindirizzamento 301.
  • --hsts :aggiungi l'intestazione Strict-Transport-Security a ogni risposta HTTP. Forzare il browser a utilizzare sempre TLS per il dominio. Difende dallo stripping SSL/TLS.
  • --staple-ocsp :Abilita la pinzatura OCSP. Una risposta OCSP valida viene pinzata al certificato offerto dal server durante TLS.

Il certificato dovrebbe ora essere ottenuto e installato automaticamente.

Aggiorna la GUI di Syncthing Web, scoprirai che la connessione HTTP viene automaticamente reindirizzata alla connessione protetta HTTPS.

Abilita autenticazione utente

Per impostazione predefinita, chiunque può accedere all'interfaccia Web di Syncthing dopo la configurazione del proxy inverso. Possiamo abilitare l'autenticazione dell'utente per limitare l'accesso. Fai clic su Azioni pulsante nell'angolo in alto a destra, quindi seleziona Impostazioni -> GUI.

Inserisci un nome utente in Utente autenticazione GUI campo, inserisci una password nel campo Password di autenticazione GUI . Quindi salva le tue impostazioni.

Tieni presente che non è necessario selezionare Utilizza HTTPS per la GUI box, che consente a Syncthing di utilizzare un certificato autofirmato. Abbiamo già installato un certificato valido in Apache/Nginx che è considerato affidabile dai browser Web tradizionali.

Una volta salvate le modifiche, riavvia il servizio di sistema Syncthing, altrimenti potresti visualizzare un errore 502 bad gateway durante il ricaricamento della pagina.

sudo systemctl restart [email protected]username.service

Ora accedi all'interfaccia di Syncthing Web con il tuo nuovo nome utente e password.

Come utilizzare un certificato TLS autofirmato

Se non desideri utilizzare un nome di dominio e un certificato TLS valido per accedere all'interfaccia web di Syncthing. È possibile utilizzare un certificato autofirmato. Modifica il file di configurazione di Syncthing.

nano ~/.config/syncthing/config.xml

Trova le seguenti righe.

    <gui enabled="true" tls="false" debugging="false">
        <address>127.0.0.1:8384</address>
        <apikey>P4sYoeq2CNQRdfq33dq823dakE2</apikey>
        <theme>default</theme>

Per utilizzare un certificato autofirmato, cambia semplicemente tls="false" a tls="true" . E se intendi accedere all'interfaccia web di Syncthing da un computer remoto, cambia 127.0.0.1 a 0.0.0.0 .

Salva e chiudi il file. Quindi riavvia Syncthing per rendere effettive le modifiche.

sudo systemctl restart [email protected]username.service

Cartelle solo invio e solo ricezione

Quando condividi una cartella in Syncthing, puoi andare alla scheda Avanzate e scegliere uno dei tre tipi di cartelle:

  • Invia e ricevi (predefinito)
  • Solo invio
  • Solo ricevi

Potresti voler scegliere solo invio o solo ricezione. Ad esempio, se hai 3 computer:A, B e C e desideri aggregare le cartelle sui computer A e B in un'unica cartella sul computer C. Quindi puoi impostare il tipo di cartella su Solo ricezione sul computer C. In questo modo, il computer C avrà tutti i file in un'unica cartella. I computer A e B hanno ancora i file originali. Né più né meno.

Quando utilizzi lo stesso percorso della cartella sul computer C, Syncthing potrebbe avvisarti che "questo percorso è una sottodirectory di una cartella esistente". Puoi ignorare questo avviso perché hai una cartella di sola ricezione. I file esistenti nella cartella non verranno eliminati.

Sincronizzazione tramite server di inoltro

Se due istanze di Syncthing non riescono a connettersi tra loro, Syncthing proverà a utilizzare un server di inoltro per trasferire i file.

Un motivo comune per cui non possono connettersi tra loro è che uno di loro si trova dietro un dispositivo NAT e non ha configurato il port forwarding. Dopo aver configurato il port forwarding, è possibile disabilitare i server di inoltro. Ecco come. Fai clic su Edit e seleziona il pulsante Advanced scheda, cambia l'indirizzo da dynamic a tcp://ip-address:22000 . Ovviamente devi usare il tuo vero indirizzo IP.

Sincronizzazione di grandi quantità di piccoli file

Syncthing non è adatto per sincronizzare grandi quantità di piccoli file come i file osm tile, perché raggiungerà rapidamente i limiti di inotify del file system Linux. Se i due dispositivi eseguono entrambi Linux, puoi usare rsync (sincronizzazione remota) strumento per sincronizzare grandi quantità di piccoli file, come questo:

rsync -aP /path/to/source/folder/  [email protected]:/path/to/destination/folder

Esecuzione di più istanze di sincronizzazione

Se hai più cartelle condivise che appartengono a utenti diversi, è una buona idea eseguire più istanze di Syncthing per ogni utente.

sudo systemctl start [email protected]
sudo systemctl start [email protected]

Se esegui Syncthing come utente1 e condividi le cartelle appartenenti a utente2, avrai problemi di sincronizzazione/autorizzazione negata, perché Syncthing creerà i file con l'utente con cui viene eseguito.

Ogni istanza deve avere una porta GUI e una porta di sincronizzazione univoche, che possono essere configurate nel file di configurazione della sincronizzazione dell'utente nella directory home.

nano ~/.config/syncthing/config.xml

La configurazione della porta della GUI è

<address>127.0.0.1:8384</address>

La configurazione predefinita della porta di sincronizzazione è

<listenAddress>default</listenAddress>

Puoi cambiarlo in

<listenAddress>tcp://0.0.0.0:22001</listenAddress>

Se non desideri creare un sottodominio per ogni istanza di Syncthing, puoi creare una sottodirectory nel tuo nome di dominio. Ad esempio, la configurazione della sottodirectory Nginx per Syncthing è la seguente.

 location /user2/ {
    proxy_pass http://127.0.0.1:8385/;
    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;
  }

Uso user2 come sottodirectory. Puoi scegliere il nome che preferisci. Nota che in proxy_pass http://127.0.0.1:8385/; , la barra finale / è necessario. Se lo elimini, non funzionerà.

Suggerimenti per la risoluzione dei problemi

Impossibile connettersi

Se le tue istanze di Syncthing non riescono a connettersi tra loro, puoi utilizzare il ss (statistiche socket) per verificare se Syncthing è in ascolto sulla porta TCP 22000.

sudo ss -lnpt | grep syncthing

Come puoi vedere dallo screenshot qui sotto, il mio Syncthing è in ascolto sulla porta 8384 (interfaccia web) e 22000 (connessione peer-to-peer).

In caso contrario, puoi modificare il file di configurazione.

nano ~/.config/syncthing/config.xml

Trova la riga seguente.

<listenAddress>default</listenAddress>

Modifica default a tcp://your-IP-address .

<listenAddress>tcp://12.34.56.78</listenAddress>

Salva e chiudi il file. Quindi riavvia Syncthing.

sudo systemctl restart [email protected]username.service

Impossibile creare l'indicatore di cartella

Se desideri sincronizzare una cartella di sistema come /etc/ , probabilmente vedrai il seguente messaggio di errore:

Failed to create folder marker, read-only file system

Questo perché il servizio di sincronizzazione systemd (/lib/systemd/system/[email protected] ) ha il seguente ProtectSystem variabile che vieta l'operazione di scrittura su cartelle di sistema (/usr/, /boot/, /etc/).

ProtectSystem=full

Possiamo aggiungere esclusioni, così Syncthing può scrivere nella cartella. Crea una cartella in cui archiviare le nostre configurazioni di sistema personalizzate.

sudo mkdir /etc/systemd/system/[email protected]username.service.d/

Quindi crea un file in questa directory.

sudo nano /etc/systemd/system/[email protected]username.service.d/permission.conf

Aggiungi le seguenti righe in questo file.

[Service]
ReadWritePaths=/shared/foler/one/  /shared/foler/two/

Le cartelle sono separate da uno spazio vuoto. Puoi aggiungere tutte le cartelle che vuoi. La cartella deve esistere sul tuo sistema, altrimenti Syncthing non si riavvierà.

Salva e chiudi il file. Quindi ricarica systemd.

sudo systemctl daemon-reload

E riavvia Syncthing.

sudo systemctl restart [email protected]username.service

La dimensione della cartella nello stato globale non è precisa

Questo può accadere se condividi cartelle con più dispositivi. Supponiamo che tu condivida una cartella dal dispositivo 1 al dispositivo 2. Se il dispositivo 2 non ha terminato la sincronizzazione dei file e condividi la cartella dal dispositivo 2 al dispositivo 3, la dimensione globale della cartella visualizzata sul dispositivo 3 sarà inferiore alla dimensione effettiva .

La sincronizzazione delle cartelle si interrompe

Controlla i log di Syncthing per scoprire perché ha interrotto la sincronizzazione.

sudo journalctl -eu [email protected]

Richieste di elaborazione del problema

Se vedi il seguente errore, puoi controllare il registro degli errori di Nginx (/var/log/nginx/syncthing.error.log ) o il log degli errori di Apache (/var/log/apache/syncthing_error.log ) per scoprire cosa ha causato questo problema.

Syncthing seems to be experiencing a problem processing your request. Please refresh the page or restart Syncthing if the problem persists.

Nel mio caso, è perché ho abilitato il firewall per applicazioni web ModSecurity.

Replica asincrona

Tieni presente che Syncthing usa il metodo asincrono, quindi le modifiche apportate su un nodo richiederanno del tempo per essere replicate su altri nodi. Se la tua applicazione è sensibile al ritardo di sincronizzazione, ti consigliamo di designare un nodo come nodo principale. Apporta modifiche solo al nodo master e utilizza i nodi slave come backup.


Ubuntu
  1. Come installare un desktop (GUI) su un server Ubuntu

  2. Come installare MySQL su Ubuntu 18.04

  3. Come installare il server Minecraft su Ubuntu 18.04

  4. Come installare il server Xrdp (desktop remoto) su Ubuntu 18.04

  5. Come installare Nginx su Ubuntu 20.04

Come installare Jellyfin Media Server su Ubuntu 20.04 LTS Server/Desktop

Come installare qBittorrent su desktop o server Ubuntu 19.04

Come installare Plex Media Server su Ubuntu 20.04 LTS Server/Desktop

Come installare FluxBox Desktop Ubuntu 20.04 LTS Server o PC

Come installare Ubuntu 20.04 Desktop

Come installare il server Xrdp (desktop remoto) su Ubuntu 22.04