Tuesday, May 27, 2014

Syncthing: Way out of DropBox

With connected devices, running upto three with each of us, services like DropBox did well in tapping the need to synchronise our data between our devices. I was, like everyone who tried out their service, immensely excited to learn and see DropBox synchronise between devices. That it did not need a geeky learning curve made it popular, rightly so.

But, talking from the perspective of a Free Software advocate, it was never the right solution.

  • Proprietary: DropBox uses Python scripts for the synchronisation services. But beyond that it is a black box, that accesses your data on multiple devices. I won't even bother explaining what that is a problem.
  • Cloud: All of the data DropBox synchronises, does not only shuttle between your devices but also rests on their ever-in-demand Cloud offering. 
  • Amazon: Quite recently I discovered that all the infrastructure of DropBox is handled by Amazon S3 cloud. For technical and political reasons, Amazon is one of the corporations you must distance yourself from.
  • DRM: Recently DropBox, updated its policies to enforce DRM check on the data you share on DropBox. If you were to upload a DRM protected file, and make a public link out of it, DropBox would check the hash of your file with a list of DRM protected files it has, and block it if your file is DRM protected. While it might sound sensible, but it is another level of intrusion one must not put up with.
I've known BitTorrentSync, but never had the motivation to try it out. If anyone else has done, do share your views.

Just yesterday I stumbled upon an open, secure and more importantly decentralised alternative for DropBox - syncthing!. The project code is pretty much in public domain (contributors only ask attribution).

I tried it out immediately on my Debian machine first, used the tarball and ran the executable. Worked fine. You might want to fork out the latest source and build it yourself.

The beauty of this tool is that it uses a p2p protocol, over encrypted link between nodes. There is no central arbitrator. To test it out, I was hoping there would be an Android porting of the app and found one.
Syncthing web GUI, with one local and one remote note


RSA fingerprint of one of a node
I got it running on my Nexus. Installation took a while, because the RSA-2048 key generation would take time to harness random data. Don't panic if your device takes a while.

Each device is identified by a node ID, which is the RSA fingerprint. You must add these public keys of the nodes between nodes you want them to synchronise and that's all. Look at the config.xml file if you are interested, or the web-based GUI to fine tune the settings like revisions, upload/download speed and other aspects.


Try it out, and if you are the gifted ones who can contribute, please do. The folks both on the Android and main project are nice and looking for contributors.

Happy SyncThinging!