O que é o Syncthing?

O Syncthing é um programa de código aberto que mantém as pastas sincronizadas entre seus dispositivos, diretamente e sem um servidor central. O projeto fornece uma imagem oficial, syncthing/syncthing, cuja GUI web escuta na porta 8384 e cujo protocolo de sincronização usa a porta 22000 para TCP e QUIC. Os dispositivos na mesma rede encontram uns aos outros por meio de broadcasts na porta 21027.

Descrição da ferramenta

Esta ferramenta cria um arquivo compose.yaml para o Syncthing que segue o README do projeto para Docker. Por padrão, ela usa a rede do host, conforme recomendado pelo README, pois assim o Syncthing consegue detectar os dispositivos na sua rede local. Nesse modo, a ferramenta remove STGUIADDRESS, fazendo com que a GUI escute no endereço definido nas configurações do Syncthing, que por padrão é 127.0.0.1:8384. Você também pode escolher o modo bridge. Nesse caso, a ferramenta publica a porta da GUI, a porta de sincronização para TCP e UDP e a porta de descoberta, além de alertar sobre os custos do modo bridge. Você define o hostname, o usuário e o grupo com PUID e PGID, um UMASK e um PCAP opcionais, a pasta de dados e outras pastas do host. É adicionada uma verificação de integridade que segue o endereço da GUI. Tudo é criado no seu navegador.

Recursos

  • Rede do host, conforme recomendado, ou modo bridge com as portas 8384, 22000/tcp, 22000/udp e 21027/udp publicadas
  • O endereço de escuta da GUI no modo host, com um aviso quando ela puder ser acessada de outras máquinas
  • Um endereço de vinculação para a porta da GUI no modo bridge, como 127.0.0.1
  • PUID, PGID, UMASK e PCAP, além de um hostname para o nome do dispositivo
  • Uma pasta de dados no host ou um volume Docker nomeado, declarado automaticamente
  • Outras pastas para sincronizar, cada uma opcionalmente somente leitura
  • A verificação de integridade do README, ajustada à porta e ao endereço da GUI
  • Qualquer outra variável de ambiente, comentários que explicam o arquivo e um download como compose.yaml

Exemplos

As configurações padrão fornecem o exemplo do README do Syncthing para Docker:

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

Dicas

  • Salve o resultado como compose.yaml e inicie-o com docker compose up -d. Em seguida, abra http://127.0.0.1:8384
  • O modo bridge padrão do Docker oculta os endereços locais dos seus dispositivos, fazendo com que eles se conectem lentamente ou por meio de relays. Use o modo host quando possível
  • A imagem escuta em 0.0.0.0:8384 por padrão. Por isso, o modo host remove STGUIADDRESS e o modo bridge deve vincular a porta publicada da GUI a 127.0.0.1, a menos que você queira acessá-la de outras máquinas
  • Quando a GUI puder ser acessada de outras máquinas, defina uma senha para a GUI e ative o TLS nas configurações do Syncthing
  • A pasta de dados e as pastas adicionadas devem ter permissão de escrita para PUID e PGID
  • As pastas adicionadas aqui aparecem no Syncthing no caminho dentro do container; portanto, escolha esse caminho ao adicionar a pasta na GUI
  • A porta de sincronização permanece 22000, pois o Syncthing informa aos outros dispositivos que devem se conectar a essa porta