SyncThing does what OneDrive & Google Drive can do but under your control, across your machines, with more options, and without having to touch a 3rd party data snooping provider and without having to pay 3rd party Terabyte rates. I use it on my home network both to synchronise configuration across multiple machines and as an at-home backup solution. It's fast, simple, well-maintained and it works.
NSSM
is “the Non-Sucking Service Manager” which has a simple GUI to set up commandline programs like SyncThing
as a Windows Service.
Install SyncThing
To use SyncThing as a Service, avoid the GUI options such as SyncTrayzor and go for the GitHub download. Choose a directory to install to, such as your Program Files
directory.
SyncTrayzor is great for your working machine, where you only need SyncThing to run when you are logged in. For a server which is hosting backups and redundant copies of your files, you want a Windows service running whenever the machine is up.
Install NSSM
NSSM also has no installer as of early 2020. Download & extract to a Program Files
directory.
I then added New-Alias nssm "C:\Program Files\nssm-2\win64\nssm.exe"
to my PowerShell profile
Launch NSSM
nssm
without parameters will show you the commands you can use. The simplest is to use install & edit to get the GUI:
To show service installation GUI: nssm install [<servicename>]
To show service editing GUI: nssm edit <servicename>
So use:
nssm install SyncThing
And then fill in the boxes by finding the path where you installed SyncThing. I only edited the first three tabs: Application, Details, and Log On. The rest can stay as default.
What about the Parameters? See the SyncThing Docs. This is mine:
-no-console -no-browser -no-restart -gui-address=localhost:8384
-no-console -no-browser
are because services run headless.
-no-restart
because the Windows Service infrastructure has options for handling restarts.
-gui-address=localhost:8384
to make the gui console only available on localhost, not across the network. You may not want this.
You can now use nssm
to start/stop/monitor services, not just the ones you have installed with it.
nssm start SyncThing
nssm status SyncThing
Or, you can use the standard Windows Services gui.
Where is the config?
Nssm
just edits the Windows service config, which is visible in the Local Services app, which you can launch from Task Manager -> Services
SyncThing
keeps config in the place noted in SyncThing Docs unless you add e.g. -home=D:\MyPath
to the startup parameters
Where is the SyncThing Gui?
If you followed my example and used -gui-address=localhost:8384
then open that address in your browser and read all about at https://docs.syncthing.net/intro/gui.html
More Options?
See https://docs.syncthing.net/users/syncthing.html
Yes but I want to manage it across my home network?
- Change the startup options to use
-gui-address=0.0.0.0:8384
. - Add the full path to SyncThing.exe as a firewall exception in your Windows firewall.
- Restart the service
This will make the browser interface accessible across the network. Then:
- Open the the GUI at localhost:8384.
- Open the Settings (under the
Actions
menu, top right). - Open the GUI panel.
- Choose HTTPS
- Add a username and password. NB I think these are both case sensitive.
Unfortunately does not work for me.
Do not understand why SyncThing project does not make this easier with an installer. Has been years since I first saw and used SyncThing and yet there is still no installer for Windows but myriad packages for other platforms. Do any of those have installers?
Hmmm. Syncthing for Mac has an application installer. On windows, you may not need a service running? In that case, the SyncThing downloads page at https://syncthing.net/downloads/ refers you to SyncTrayzor which is much more of a ‘it just works’ solution.
If you need a service:
Do you get any kind of error message, or do you just get nothing? The easiest way to debug to is to start just with a command line prompt, no NSSM, and try to get SyncThing working like that first. Then copy your command line into NSSM.