Syncthing
Continuous, decentralized file synchronization program for private cross-device sync.
Why consider Syncthing?
Syncthing synchronizes files continuously across multiple devices without storing data on central third-party servers. It uses peer-to-peer TLS encryption and block-level transfer.
Learn Syncthing by building
Practical setup notes, real use cases, and copy-ready examples in one focused guide.
In this guide11 sections
What is Syncthing?
Syncthing is an open-source, peer-to-peer file synchronization application written in Go that acts as a decentralized alternative to commercial cloud storage services like Dropbox and Resilio Sync. It synchronizes files in real time between two or more computers over local networks or the internet without transmitting or storing data on central third-party servers.
Communication in Syncthing is secured via TLS with cryptographic device certificates, ensuring that only explicitly paired devices can discover and exchange file blocks.
Who Is It For?
- Home Lab Enthusiasts & Homelabbers: Synchronizing media libraries, documents, and backups between laptops, desktop workstations, and network-attached storage (NAS).
- Developers: Mirroring configuration dotfiles, project assets, and local documentation between personal and work machines without using cloud storage buckets.
- Privacy Advocates: Keeping sensitive financial records, passwords, and private photos strictly on personal hardware without cloud leaks.
Key Features
- Decentralized peer-to-peer architecture with no central database or mandatory cloud account.
- Block-level incremental delta transfers so only modified parts of large files are transmitted.
- Cross-platform support across Linux, macOS, Windows, Android, FreeBSD, and Docker.
- Comprehensive web-based administration interface with live bandwidth monitoring.
- Granular folder controls including Send Only, Receive Only, and file versioning (Staggered, Trash Can, Simple).
Installation and Quick Start
You can install Syncthing via system package managers or deploy it as a persistent Docker service.
Using Docker Compose:
version: '3'services: syncthing: image: syncthing/syncthing:latest container_name: syncthing hostname: my-syncthing environment: - PUID=1000 - PGID=1000 volumes: - ./config:/var/syncthing/config - ./data:/var/syncthing/Sync ports: - 8384:8384 # Web GUI - 22000:22000/tcp # Sync protocol - 22000:22000/udp # Sync protocol - 21027:21027/udp # Local discovery restart: unless-stoppedStart the container:
docker compose up -dAccess the Web GUI by navigating to http://localhost:8384 in your web browser.
Step-by-Step Device Pairing Workflow
- Open the Web GUI on Device A and click Actions -> Show ID to view the alphanumeric Device ID and QR code.
- Open the Web GUI on Device B, click Add Remote Device, paste Device A's ID, and assign it a recognizable name.
- Switch back to Device A to accept the incoming pairing request.
- Click Add Folder on either device, specify the local path, and check the paired device in the Sharing tab to initiate automatic bidirectional synchronization.
Practical Use Cases
1. Multi-Device Photo and Document Backup
A user configures an Android smartphone to automatically sync camera photos to a home Linux server over Wi-Fi whenever the phone connects to the local home network.
2. Obsidian Notes Synchronization
A writer maintains a local folder of Markdown notes and uses Syncthing to synchronize edits across a macOS laptop, a Windows desktop, and a Linux server with zero cloud latency.
3. Server Configuration Deployment
A system administrator distributes application configuration files and static site assets to multiple edge nodes using a "Send Only" folder topology.
Troubleshooting and Limitations
- Inotify Limits on Linux: When syncing large folders with tens of thousands of files, increase the kernel file watch limit via
sysctl fs.inotify.max_user_watches=204800. - Concurrent File Conflicts: If two devices modify the same file simultaneously while offline, Syncthing generates a conflict file with a timestamp suffix (
.sync-conflict-...) rather than overwriting data.
Official Resources
- Official Website: https://syncthing.net
- GitHub Repository: https://github.com/syncthing/syncthing
- Official Documentation: https://docs.syncthing.net
Related tools
More options with a similar category or technology profile.
McFly
Fly through your shell history with an intelligent neural network search engine.
cheat
Interactive command-line cheatsheets for system administrators and software engineers.
Pipenv
Python development workflow for humans uniting Pipfile, pip, and virtualenv.
Rye
Comprehensive Python package and workspace management tool written in Rust.