Use Btsync and Owncloud to create your own free personal storage cloud
High Scalability had an interesting link today about a project that combines Raspberry PI, btsync and owncloud to create essentially a personal Dropbox replacement with none of the costs or the storage limitation. Also very importantly, keeping up with the hot topic nowadays, the peace of mind from knowing that you are not making it easy for intelligence agencies to go through your most important and personal data.
The players in this solution here are:
-
btsync: A still alpha lab product from the original bittorrent creators, which allows you to securely sync a folder between multiple devices owned by you. Ready to use binaries are provided for all the major platforms (desktop and mobile) as well as several ARM architectures (which is where Raspberry Pi comes in). The UI interface is not great, which is probably why the next piece of the puzzle comes in - Owncloud. But if you really want the basics, this is all the software that you need for a synchronized folder among multiple devices.
Unfortunately, btsync is **not** [Opensource software][oss]. So it is entirely upto you who you trust more - Dropbox or Bittorrent Inc. Btsync is [reported][btphone] to [phone home][phonehome] for version check and uploading anonymized stats. I have looked around. btsync doesn't have any open source competition yet. -
Owncloud: This is actually a standalone application for sharing your files via a dropbox like web interface. It has an extensive list of features - sync between devices, multiple user support, file versioning, undelete, Lucence based search, shared calendar, tasks, data migration/backup and many more. Most importantly, this is Open source software, with all the code available on github.
One question that came to my mind after reading the feature set is that Owncloud already had a [multiple device file sync][owncloudsync] feature. So why would you need btsync? From reading over the net, it seems to me that btsync is considered to be more reliable as a file sync client. So the idea is to use btsync everywhere, and on one of the devices, use owncloud to provide the interface to serve/edit files over the web. -
So how does Raspberry Pi - the overnight micro computing sensation fit into all this? This is because of the way Bittorrent works. For uploads to happen for a torrent, you need one seed up with the complete data. Since btsync is essentially multiple torrents bunched together, it needs a seed as well. And if all your devices are mobile and not always on, there is a good chance that when you need a file, none of the other devices are up and you are cut off from your data.
The solution is simple, have one of the btsync devices to always be running, essentially acting like the seeds for your data. If this always-on computer is a mind-numbingly low 6 watts burning tiny box hanging off a wall socket, well .. you can see the appeal of R-pi.
But I already have an always-on device - my Synology NAS, which also happens to be an ARM device. So to try it out, I downloaded the PPC version of btsync and tried to run it - no luck. The btsync binary is a glibc2.4 binary while the NAS firmware is glibc2.3. btsync uses inotify on glibc2.4 and therefore will never support glibc2.3, so I am out of luck here.
# ./btsync
./btsync: /lib/libc.so.6: version `GLIBC_2.4' not found (required by ./btsync)
The one thing I am yet not comfortable with Raspberry Pi, is its lack of a shutdown switch. Raspberry Pi is perfect for headless usage and with a USB wifi dongle, the only wire it needs is the charger. However to shut it down properly, you cannot just turn it off. Just like any other Linux machine, you need to execute the shutdown command which will unmount the filesystems cleanly before turning off the machine. Mess this up, and you will end up with a filesystem which needs an fsck on bootup and the machine will not boot without you using a keyboard and console to fsck the filesystem.
Till I get myself a hack to shut R-Pi headlessly in a clean and convenient way, I just am not to comfortable using it for serious applications, let alone touch my precious data. There is a nice discussion on raspberry pi forums that I need to readup to do this, and a few blogs (like this) already provide various ways to do that. I just need to find some time to go through all that.