Syncthing
syncthing · Documents
GitHub stars
89,873Awaiting first sync
No measured star history yet
What is Syncthing?
Syncthing keeps the same files on several computers without storing them with a cloud provider. Your devices talk to each other directly and encrypt everything they send, so your data stays on machines you control. Once set up it runs in the background, which suits anyone who wants private file sync between their own devices or with people they choose.
Syncthing is a continuous file synchronisation program that keeps folders up to date between two or more computers in real time. Devices connect directly over the local network or the internet, encrypt their traffic with TLS and only talk to devices you have approved, so files are stored only on your own machines. A web interface on each device handles sharing and settings.
Core capabilities
- Syncs folders directly between devices, with no central server holding your files.
- All device traffic uses TLS, and only devices you approve can connect.
- Runs on Windows, macOS, Linux, the BSDs and illumos, with a web interface.
Direct sync between your devices
Syncthing synchronises folders between devices as files change. Devices connect over the local network or the internet, and global discovery servers help them find each other's addresses. When no direct connection is possible, traffic can pass through a public relay while staying end-to-end encrypted, and Syncthing keeps retrying a direct link. Folders can be set to Send & Receive, Send Only or Receive Only, depending on where changes should come from.
- Peer-to-peer
- Relays
- Folder types
- Discovery
Private and encrypted by design
Your files are stored only on your own devices, with no central server that holds them. All traffic between devices is protected by TLS with perfect forward secrecy. Each device is identified by a device ID derived from its certificate, and two devices only connect when each has added the other. The sync protocol is a documented open specification.
- TLS
- Device ID
- Privacy
- Open protocol
Install and run it under MPL-2.0
Download the base Syncthing build for Linux, Windows, macOS, FreeBSD, OpenBSD, NetBSD or illumos, or install it from many Linux distributions and the project's own Debian and Ubuntu repository. The project also publishes a syncthing/syncthing Docker image. Community integrations add installers and tray apps, such as Syncthing Windows Setup and syncthing-macos. Syncthing is released under the MPL-2.0 licence, and Kastelo offers commercial support.
- Self-hosted
- Cross-platform
- Docker
- MPL-2.0
Where it fits
Use cases
- 01
Keep a work folder the same on two computers
Install Syncthing on both computers and open the admin GUI at http://localhost:8384. On each one, click Add Remote Device, enter the other device's ID from Actions > Show ID, and select the folder to share. Files added on either side then sync to the other.
- 02
Keep copies on a home server
Share a folder with the server and set it to Receive Only there, so local changes on the server are not sent back. Turn on file versioning, such as Simple or Staggered, to keep older copies in the .stversions folder when files are changed or deleted on other devices.
- 03
Leave some files out of a shared folder
Create a .stignore file in the root of the synced folder and list the file patterns to skip, such as build output or temporary files. The .stignore file itself is not synced, but it can #include a pattern file that is, so every device follows the same rules.