Syncthing - Cloud-synchronisation without cloud
I recently stumbled upon this tool again — something I had heard about a while
back but never really tried. In the past I used bsync, unison, and a few
others, but none of them truly clicked. More often than not I ended up going back
to good old rsync. With Syncthing I’ve finally found something I want to roll
out across my entire infrastructure.
Syncthing synchronizes files directly between devices — no cloud service, no third-party server, no account required. Everything stays within your own network. It runs on Linux, Windows, macOS, and Android.
Installation
On Debian/Ubuntu, install from the official Syncthing repository to get current versions:
curl -s https://syncthing.net/release-key.txt | sudo gpg --dearmor -o /usr/share/keyrings/syncthing-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/syncthing-archive-keyring.gpg] https://apt.syncthing.net/ syncthing stable" | sudo tee /etc/apt/sources.list.d/syncthing.list
sudo apt update && sudo apt install syncthing
Running as a systemd service
Enable and start Syncthing for your user (replace username with your actual username):
sudo systemctl enable syncthing@username
sudo systemctl start syncthing@username
Once running, the web interface is available at http://localhost:8384.
To access the web interface from another machine (e.g. on a headless server), forward the port via SSH:
ssh -L 8384:localhost:8384 user@server
Adding devices
Each Syncthing installation has a unique Device ID — a long alphanumeric string visible in the web UI under Actions → Show ID. To connect two devices:
- Copy the Device ID from device A
- On device B, go to Add Remote Device and paste the ID
- Device A will receive a connection request — confirm it
- Repeat in the other direction if needed
Syncthing will then negotiate a direct connection between the two devices.
Sharing folders
Once devices are paired, you can share folders between them:
- Click Add Folder in the web UI
- Set a local path and a shared Folder ID (must match on both sides)
- Under Sharing, select which devices should have access
- Choose a sync type: Send & Receive, Send Only, or Receive Only
The remote device will receive a share request and must confirm it before syncing begins.
Disabling relay servers
By default, Syncthing can route traffic through public relay servers if a direct connection is not possible. To keep synchronization strictly within your own network, disable relays:
Go to Actions → Settings → Connections and uncheck:
- Enable Relaying
- Global Discovery (optional — only needed if devices are on different networks)
With relaying disabled, devices only sync when they can reach each other directly. This is also a small security improvement since no traffic ever leaves your network.
Excluding files
Syncthing reads a .stignore file in the root of each shared folder. Patterns
work similarly to .gitignore:
# compiler output
*.o
*.a
*.so
# build directories
/build/
/dist/
# editor temporaries
*.swp
.DS_Store
The .stignore file itself is not synchronized — each device maintains its own.
Versioning
Syncthing can keep previous versions of changed or deleted files. Under Edit Folder → File Versioning, several strategies are available:
- Trash Can — deleted files are moved to a
.stversionsfolder - Simple — keeps a fixed number of old versions
- Staggered — keeps versions with increasing gaps (hourly → daily → weekly)
For most use cases, Trash Can or Staggered is a good choice.