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
  • sudo on 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

StepWhat to do
Install on Linuxsudo apt install -y syncthing
Enable as servicesystemctl --user enable syncthing
Install on Windowswinget install Syncthing.Syncthing
Open Linux dashboardhttp://localhost:8384
Open Windows dashboardhttp://127.0.0.1:8384
Get device IDDashboard > Actions > Show ID
Add a shared folderDashboard > 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.