Syncthing

Sobre

Syncthing é um programa open source de sincronização contínua de arquivos, peer-to-peer, entre dois ou mais dispositivos. Não existe servidor central: os dados só trafegam entre as máquinas que o próprio usuário autoriza, e a comunicação é criptografada (TLS) e autenticada por certificado. É uma alternativa a serviços de nuvem tipo Dropbox/Google Drive quando se quer manter controle total sobre onde os dados ficam armazenados.

Código-fonte em Go, licença MPL 2.0, mantido em github.com/syncthing/syncthing.

Funcionamento

  • Cada dispositivo é identificado por um Device ID (chave criptográfica), sem depender de IP fixo.
  • Para sincronizar, dois dispositivos trocam Device IDs e aceitam a conexão manualmente (ou via descoberta automática na LAN/Internet).
  • Uma pasta é compartilhada entre os dispositivos aceitos; o Syncthing detecta mudanças (scan periódico), compara índices locais e transmite apenas os blocos alterados (protocolo próprio de Block Exchange).
  • Em redes com NAT/firewall, usa relays ou hole-punching para tentar conexão direta; sem isso, o tráfego passa por um relay público.
  • Tudo é gerenciado por uma GUI web (padrão em http://localhost:8384) ou por edição direta do arquivo de configuração.

Principais Recursos

  • Multiplataforma: Windows, macOS, Linux, BSD, Android.
  • Sincronização bidirecional ou por tipo de pasta (Send Only / Receive Only).
  • Versionamento de arquivos (mantém histórico de alterações/exclusões, com várias estratégias configuráveis).
  • Padrões de exclusão via .stignore.
  • API REST própria, usada pela GUI e por integrações de terceiros.
  • Sem limite de uma única pasta: é possível sincronizar quantas pastas forem necessárias, entre quaisquer combinações de dispositivos.

Casos de Uso

  • Sincronizar fotos, documentos e notas (ex.: vault do Obsidian) entre computador pessoal, notebook e celular.
  • Fazer backup/replicação de dados entre um dispositivo e um servidor doméstico ou Raspberry Pi.
  • Substituir serviços de nuvem pública quando se quer manter os dados apenas nos próprios dispositivos.

Público-alvo

Usuários individuais e times pequenos com conhecimento técnico básico de redes, que quiram sincronizar arquivos entre múltiplos dispositivos próprios sem depender de um provedor de nuvem terceirizado.

FAQ

Preciso de servidor próprio? Não. A sincronização é direta entre os dispositivos; não há um servidor central obrigatório (apenas serviços auxiliares de descoberta/relay, que são opcionais e públicos).

Como resolve conflitos de edição simultânea? Por padrão, mantém as duas versões como arquivos de conflito para revisão manual — não há merge automático de conteúdo.

Funciona sem os dois dispositivos estarem online ao mesmo tempo? Não sincroniza em tempo real nesse caso; a sincronização só ocorre quando os dispositivos envolvidos estão online simultaneamente.

Limitações

  • Setup inicial pode exigir entendimento de rede (NAT, firewall, portas) para funcionar de forma otimizada.
  • Não é uma solução de nuvem centralizada: os dispositivos precisam estar online ao mesmo tempo para sincronizar.
  • Resolução de conflitos é manual (mantém as duas versões, sem merge automático).
  • Em ambientes corporativos com muitos usuários/dispositivos, pode exigir configuração cuidadosa de performance.

Referências

Instalação Ubuntu

Ref: https://apt.syncthing.net/

To allow the system to check the packages authenticity, you need to provide the release key.

Add the release PGP keys:

sudo mkdir -p /etc/apt/keyrings
sudo curl -L -o /etc/apt/keyrings/syncthing-archive-keyring.gpg https://syncthing.net/release-key.gpg

The stable-v2 channel is updated with stable release builds, usually every first Tuesday of the month.

Add the “stable-v2” channel to your APT sources:

echo "deb [signed-by=/etc/apt/keyrings/syncthing-archive-keyring.gpg] https://apt.syncthing.net/ syncthing stable-v2" | sudo tee /etc/apt/sources.list.d/syncthing.list

The candidate channel is updated with release candidate builds, usually every second Tuesday of the month. These predate the corresponding stable builds by about three weeks.

Add the “candidate” channel to your APT sources:

echo "deb [signed-by=/etc/apt/keyrings/syncthing-archive-keyring.gpg] https://apt.syncthing.net/ syncthing candidate" | sudo tee /etc/apt/sources.list.d/syncthing.list

And finally.

Update and install syncthing:

sudo apt-get update
sudo apt-get install syncthing