Syncthing logo

Moving from SpiderOak to Syncthing for local Sync

Firstly, I know there are simpler ways to deal with the following problem, but just bear with me!

At home I regularly work between 3 machines - my desktop workhorse Windows 10 box, my Linux laptop (an 8 yr old ThinkPad E440), and sometimes the family Dell XPS Windows 11 laptop. I need to have my ‘current projects’ folder sync’d between these machines, which comes to about 300MB of mainly text and small image files.

I really only do the photo and video stuff on the desktop, but the text work (personal projects, writing, notes and so on) I like to work on from one of the two laptops.

I used to keep these in sync using SpiderOakOne, which was also (and still is) my online backup service. The sync functionality is a kind of side benefit of the SpiderOak system, and has the upside that my other machines don’t need to be on at the same time, they just update from SpiderOak online the next time they’re switched on - yes, I keep my systems powered off for the most part when not in use.

The main problem was that sometimes it would take a long time to sync, and now and then files would be missed, meaning a lengthy refresh on a machine. To be fair again, it’s not the application’s main usage - it’s fine at doing secure backups and is designed to to back up files before getting to syncing files sometimes.

So what were my options? Since I use Linux, ‘shared drive’ solutions like OneDrive or GoogleDrive are awkward from the desktop, which is a shame as I quite like them as an idea.

I went looking for an open source sync solution with solid security, was fast, ran on Linux and was somewhat configurable. It was that or a horrible roll-my-own combo of rsync and robocopy.

Eventually I found Syncthing, and got it up and running on those three machines, but then I found an issue - I needed to have two on and syncing to propogate changes and updates, so not a whole solution since I couldn’t use say my laptop, updatge files, switch it off, then go to my desktop and work on the updated files.

Therefore I went where you always go with a minor technical issue around the house - I built up a Raspberry Pi 2 instance to act as an ‘always on’ device!

This means if any of my machines are powered on, they can sync to the Pi and any other machine configured for it, and then I can shut them off, safe in the knowledge that their updates are now present on the Pi. For simplicity, I also setup the remote UI for the Pi, so I can check it in a browser from another machine.

When I gwork at a different machine then, it too syncs with the Pi at boot and gets those updates. So far this sync has functioned much quicker than SpiderOak ever did, and I can control how each machine connects and quite a bit more.

I can also setup snapshots, deletion and versions in case I accidentally delete something, and limit it to a specific VLAN if needed, which I wanted to - as I just want it running on one of my local networks - I don’t want internet traversal.

It’s been a bit over a month and so far no issues at all; the app is stable on all platforms, and doesn’t use much in the way of resources - certainly less than SpiderOak did, especially with disk space - as SpiderOak can take up quite a lot of space for its local databases, which again is likely tied to its backup activities.

As with any service, there was a few firewall ports to give access to, some startup configs, and that really was it for a basic install.

Having the Pi ‘in the middle’ is working nicely too, and whilst I worry about integrity on that SD card, the app and services on the Pi are monitoring and should catch anything. Hopefully.