The Problem
In a previous post I described a setup for sharing a Linux project folder with Windows using Samba, then hooking it into Dropbox via a directory symlink. The idea was that Dropbox would treat the symlink as a regular folder and sync everything to the cloud.
It did not work.
Dropbox on Windows refuses to follow symlinks that point to network drives. The folder showed up in Explorer with sync arrows on it, looked like it was working, but nothing ever actually synced. After trying every variation I could think of, including running Dropbox as Administrator, I gave up on that approach entirely.
What I replaced it with is called Syncthing. It is simpler, does not involve Dropbox at all, and actually works.
What is Syncthing
Syncthing is a file synchronisation tool that works directly between your devices over the local network. There is no cloud involved. No third-party server ever touches your files. You install it on each machine, pair the devices together, choose which folders to share, and it keeps them in sync automatically.
It is open source, free, and runs as a background service. Once it is set up you do not need to think about it.
The tradeoff compared to Dropbox is that you lose cloud backup and remote access from outside your network. If that matters to you, Syncthing may not be the right choice. For keeping files in sync between two machines on the same network, it is exactly what it sounds like.
Requirements
- Ubuntu 22.04 or later (Linux side)
- Windows 10 or later (Windows side)
- Both machines on the same local network
sudoon Linux
Part 1: Set Up Syncthing on Linux
Install Syncthing
sudo apt update && sudo apt install -y syncthing
Start it as a user service
Running it as a user service means it starts automatically when you log in and runs without root access.
systemctl --user enable syncthing
systemctl --user start syncthing
Verify it is running:
systemctl --user status syncthing
You should see active (running).
Open the web interface
Syncthing includes a browser-based dashboard for managing everything. Open it at:
http://localhost:8384
This is where you will configure folders and devices.
Part 2: Set Up Syncthing on Windows
Install Syncthing
Open PowerShell and run:
winget install Syncthing.Syncthing
Once it finishes, find the executable in:
%LOCALAPPDATA%\Microsoft\WinGet\Packages\Syncthing.Syncthing_Microsoft.Winget.Source_8wekyb3d8bbwe\
The exact folder name will include the version number. Navigate into it and find syncthing.exe.
Run it
Double-click syncthing.exe to start it. A terminal window will open and it will begin running in the background. After a few seconds, it will open the dashboard in your browser at http://127.0.0.1:8384.
Create a firewall rule
Windows Firewall will block Syncthing from communicating with other devices unless you allow it. Run this in PowerShell as Administrator:
New-NetFirewallRule -DisplayName "Syncthing" -Direction Inbound -Program "C:\path\to\syncthing.exe" -Action Allow
Replace C:\path\to\syncthing.exe with the actual path to the executable you found above.
Set it to start automatically
To have Syncthing start when Windows boots, create a shortcut to the executable and place it in your startup folder. Open Run (Win + R) and type:
shell:startup
This opens the startup folder. Copy a shortcut to syncthing.exe into it. From that point on it will start automatically every time you log in.
Part 3: Pair the Two Devices
Each Syncthing installation has a unique device ID. To let the two machines talk to each other, you need to add each device to the other’s list.
Get the Linux device ID
In the Linux Syncthing dashboard at http://localhost:8384, click Actions in the top right, then Show ID. Copy the long string of letters and numbers.
Add Linux to Windows
In the Windows Syncthing dashboard at http://127.0.0.1:8384, click Add Remote Device. Paste the Linux device ID and give it a name (something like Linux or your machine name). Save it.
Accept the pairing request on Linux
Within a few seconds, the Linux dashboard will show a notification asking if you want to add the Windows device. Click Add Device and confirm. The two machines are now paired.
Part 4: Share a Folder
With the devices paired, you can share folders between them.
Add a folder on Linux
In the Linux dashboard, click Add Folder. Give it a label, set the folder path (for example /home/yourusername/Projects), and click the Sharing tab. Tick the Windows device you just paired. Save.
Accept the folder on Windows
The Windows dashboard will show a notification asking if you want to accept the shared folder. Click Add and choose where you want the folder to land on your Windows machine (for example C:\Users\YourUsername\Projects). Save.
Syncthing will start syncing immediately. You can watch the progress in either dashboard.
Quick Reference
| Step | What to do |
|---|---|
| Install on Linux | sudo apt install -y syncthing |
| Enable as service | systemctl --user enable syncthing |
| Install on Windows | winget install Syncthing.Syncthing |
| Open Linux dashboard | http://localhost:8384 |
| Open Windows dashboard | http://127.0.0.1:8384 |
| Get device ID | Dashboard > Actions > Show ID |
| Add a shared folder | Dashboard > Add Folder > Sharing tab |
Worth Knowing
Syncthing syncs in both directions by default. Changes made on either machine will propagate to the other. If you want one machine to be read-only, you can change the folder type to Receive Only in the folder settings on that device.
If one machine is off, Syncthing queues the changes and catches up as soon as it comes back online. Nothing is lost.
Syncthing does not back up your files to the cloud. If you need off-site backup, you will need a separate solution for that. What Syncthing gives you is real-time sync between local machines, which is all I needed here.
The web dashboards are only accessible from the machine running Syncthing. They do not expose anything to the open internet.