Che cos'è Syncthing?

Syncthing è un programma open source che mantiene sincronizzate le cartelle tra i tuoi dispositivi, direttamente e senza un server centrale. Il progetto fornisce un'immagine ufficiale, syncthing/syncthing, la cui GUI web è in ascolto sulla porta 8384 e il cui protocollo di sincronizzazione utilizza la porta 22000 per TCP e QUIC. I dispositivi sulla stessa rete si individuano tramite broadcast sulla porta 21027.

Descrizione dello strumento

Questo strumento crea un file compose.yaml per Syncthing seguendo il README Docker del progetto. Per impostazione predefinita utilizza la rete host, come raccomandato dal README, perché in questo modo Syncthing può vedere i dispositivi sulla rete locale. In questa modalità lo strumento rimuove STGUIADDRESS, quindi la GUI è in ascolto sull'indirizzo configurato nelle impostazioni di Syncthing, che per impostazione predefinita è 127.0.0.1:8384. È anche possibile scegliere la modalità bridge. In tal caso lo strumento pubblica la porta della GUI, la porta di sincronizzazione per TCP e UDP e la porta di individuazione, mostrando un avviso sui compromessi della modalità bridge. È possibile impostare il nome host, l'utente e il gruppo con PUID e PGID, un UMASK e un PCAP facoltativi, la cartella dei dati e altre cartelle dell'host. Viene aggiunto un controllo dello stato che segue l'indirizzo della GUI. Tutto viene creato nel browser.

Funzionalità

  • Rete host come raccomandato, oppure modalità bridge con le porte 8384, 22000/tcp, 22000/udp e 21027/udp pubblicate
  • L'indirizzo di ascolto della GUI in modalità host, con un avviso quando è raggiungibile da altre macchine
  • Un indirizzo di binding per la porta della GUI in modalità bridge, ad esempio 127.0.0.1
  • PUID, PGID, UMASK e PCAP, oltre a un nome host per il nome del dispositivo
  • Una cartella dei dati sull'host o un volume Docker denominato, dichiarato automaticamente
  • Altre cartelle da sincronizzare, ciascuna facoltativamente in sola lettura
  • Il controllo dello stato indicato nel README, adattato alla porta e all'indirizzo della GUI
  • Qualsiasi altra variabile d'ambiente, commenti che spiegano il file e un download come compose.yaml

Esempi

Le impostazioni predefinite forniscono l'esempio del README Docker di Syncthing:

services:
  syncthing:
    image: syncthing/syncthing
    container_name: syncthing
    hostname: syncthing
    network_mode: host
    environment:
      PUID: "1000"
      PGID: "1000"
      STGUIADDRESS: ""
    volumes:
      - ./st-sync:/var/syncthing
    healthcheck:
      test: curl -fkLsS -m 2 127.0.0.1:8384/rest/noauth/health | grep -o --color=never OK || exit 1
      interval: 1m
      timeout: 10s
      retries: 3
    restart: unless-stopped

Suggerimenti

  • Salva il risultato come compose.yaml e avvialo con docker compose up -d. Quindi apri http://127.0.0.1:8384
  • La modalità bridge predefinita di Docker nasconde gli indirizzi locali dei tuoi dispositivi, quindi questi si connettono lentamente o tramite relay. Quando possibile, usa la modalità host
  • Per impostazione predefinita, l'immagine è in ascolto su 0.0.0.0:8384. Per questo la modalità host rimuove STGUIADDRESS e la modalità bridge dovrebbe associare la porta della GUI pubblicata a 127.0.0.1, a meno che tu non voglia raggiungerla da altre macchine
  • Quando la GUI è raggiungibile da altre macchine, imposta una password per la GUI e abilita TLS nelle impostazioni di Syncthing
  • La cartella dei dati e le cartelle aggiunte devono essere scrivibili da PUID e PGID
  • Le cartelle aggiunte qui vengono visualizzate in Syncthing con il percorso del container; quindi scegli quel percorso quando aggiungi la cartella nella GUI
  • La porta di sincronizzazione rimane 22000, perché Syncthing comunica agli altri dispositivi di connettersi a quella porta