Owning your own cloud with ownCloud:
Apart from sounding like something from the department of redundancy department, the title is pretty accurate.
I’ve dabbled a bit with ownCloud in my lab environment for the past year or more. It’s been on a “back burner” nagging at me that I should really be hosting my own data, not relying on someone else to keep it safe. I really have had no excuse apart from the convenience of using other services and just being “too busy”.
Well I finally took the plunge and made time to work on this project in a more focused, deliberate way. I’m glad I did, since this has been one of my more personally gratifying projects.
So what is ownCloud?
For the uninitiated, ownCloud is exactly that: your own cloud service. The primary feature set is file storage and synchronization, but it also includes plugins (all of which are AGPL licensed).
You provide the server (physical, virtual, or cloud), the elbow grease of getting it setup, and in return you get a cloud service that you control from soup to nuts.
This weekend I was researching open source alternatives to Dropbox, Drive, BTSync, etc. and came back upon two possible solutions for my use: SyncThing and ownCloud.
I’ve been dabbling a bit with SyncThing over the last few days and it’s a really great concept, however I needed a solution that would be self-explanatory for several less tech-savvy folks. ownCloud has the edge in that regard.
SyncThing’s strongest feature is the decentralized nature of the system. There’s no server, just peers. I really do like that approach, but it’s not a good fit for my use case currently. I will probably continue to use it for my personal machines, since it has made transferring screenshots and installer files between computers 100% trivial.
My ownCloud use case
I have several users that will be using this system and it’s not primarily for sharing files between individuals (hence the snub to SyncThing this time around). The main use is for file accessibility regardless of location with a side order of data redundancy, CalDAV calendaring and some file sharing.
For my purposes I’ve built an Ubuntu 14.04 LTS box to serve as the base for the installation. I’ve selected the latest release of ownCloud, version 8.
I installed and configured it for SSL, performed the necessary port forwarding and firewall rules on my firewall, made some DNS changes and had a working installation in short order.
I then installed the ownCloud desktop app for my Windows, OS X and Linux boxes. I was extremely pleased with how user-friendly the interface for the applications and the web app are. My users will have no issues, which means I will have very few issues support-wise; a very good thing!
The other major item on my list was file encryption so that I can possibly extend this to an Amazon S3 bucket or the like in the future without fear of data being stored in a readily accessible format. Thankfully ownCloud has an AES256 encryption plugin that was simple to install. I had to log out, log back in and it auto-generated a private key for my user. Call me paranoid if you want, I call it due diligence!
One of my favorite features is the inclusion of direct link shared files. Dropbox and other file hosting services have this functionality, which I use rather often, so it was nice to see that it has been included here as well. Through the web GUI you can share via link with or without a password. Additionally you can set an expiration date on the link so that it will time out after a set date.
Sounds great, what issues were there?
The only “gotcha” I encountered was due to my mobile devices and were no fault of ownCloud. Android mind bogglingly doesn’t support CalDAV calendars, so I had to do some research. I read a few reviews and ended up spending around $3.00 on a highly rated application, CalDAV-Sync which enables the ownCloud calendar to sync with my Android’s calendar. It worked just as advertised and within minutes I was making calendar entries on my phone and tablet which subsequently appeared in the web interface and vice versa.
It’s all about the apps!
The other item I needed for my Android devices was the ownCloud app which is $0.99 on both the Apple and Google app stores. The mobile apps are worth all 99 of those pennies, too. They enable instant picture and video uploads over your mobile plan or only over WiFi and allow real-time file manipulation that syncs across all your connected devices.
I also grabbed the Windows and OS X desktop apps and set them up to sync as well. The desktop app lets you chose folders to sync, gives a space consumed / space available meter, and shows a detailed log of all file sync activity.
Where should my data live?
I initially did my test setup on one of my lab vm hosts, but ultimately ended up getting a storage-heavy, low-memory VPS – since ownCloud doesn’t use much memory at all. The server costs me $8/mo which is far cheaper than running my lab server 24/7/365 and the VPS solution has great bandwidth, so it’s a no-brainer, really.
So for a one time purchase of $4 worth of software and $8/mo I now have complete ownership of my data. Honestly I’m a little embarrassed that I didn’t do this sooner.
My next and probably final task is to back up this encrypted data. I’m currently looking into Amazon Glacier as my solution, since the price to back up data to it is so ridiculously cheap at $0.01 / GB. You really only pay a penalty if you delete data younger than 90 days or need to restore data. I did some quick calculations and it looks like in the event that I had a complete data failure which incapacitated my desktop and somehow my ownCloud server simultaneously, I could get a full restore within 72 hours for about $50. That’s a small price to pay for family photos / videos, consulting documents, and the like.
At the end of the day it’s my data so why would I trust it to someone else and just hope that they’re true to “Don’t be evil”?