Your ownCloud

After using Google Drive for a while, I realized that while it is nice to have your data available to the various machines that I use on a daily basis, I didn’t like the idea of someone else controlling access to my data. And especially since Google have a habit of axing perfectly decent applications. Enter ownCloud.

What is it?

ownCloud-Status

OwnCloud is free open source software consisting of both client and server packages, and allows one to set up a rather nifty private “cloud” service (one can also rent accounts or even get a free account although I have not looked at either of these options too closely. There is more info on the owncloud.org website). Please note that there is ALSO a owncloud.com site that provides professional/enterprise services based on the OSS owncloud project.

Your Data on the Go!

To take it for a drive, I cooked up a new VM on my home setup and started playing around with the owncloud server software (written in PHP, so easy to install, questionably secure). The first thing I noticed was that this is not just a file-sync service; there is a web front-end which allows access to upload/download your files, and an application framework that allows developers to write applications that can take advantage of the cloud and sync functionality. But we will get into that a bit later. First, I present what the cloud should look like:

owncloud-weblogin

I created a quick SSL certificate to ensure that at least my data was accessed with at least a bit of protection. After logging in, one is presented with the file view:

owncloud-filesync1

Before this, I had already downloaded the owncloud client for the Mac, installed and placed a few files in the sync directory (by default this is: /Users/[username]/ownCloud):

owncloud-filesync3

I had already created an account on the my owncloud server so as soon as the client logged in, it began to synchronize the files on my Mac with the server:

owncloud-filesync2

Pretty neat!  I could also download these files directly from the web interface (nice), all files are versioned on the server (awesome) and owncloud allows you to either share files with another owncloud user on the same server, or provide direct URL links to particular files that you can send via email to someone (bonus!). These shared links also can be password protected and can have an optional expiration date for the share.

The second immediately useful app in owncloud is the calendar:owncloud-cal1

This calendar supports both standard CalDAV and Apple’s Calendar iCal formats as well as various configuration information:owncloud-cal2

Creating an event in the calendar is very similar to many modern calendaring software packages (including Google Calendar):owncloud-cal3owncloud-cal4

Moving an event from one day to another works as one would expect, just drag and drop the event onto a different day.

Weird Behavior and Quirks

I did notice a couple of quirks, with the big one being that file size matters. I tried originally the same technique that I was using with Google Drive, which was: create an encrypted 2 GB partition file using Truecrypt, and then place my files in this encrypted container and synchronize that since file. This was a little bit of a pain with Google Drive, as even a small change to a single file in my encrypted partition would result in transferring the entire 2 GB file to Google Drive. OwnCloud had the same issue but worse: it would throw errors even trying to sync a 2+ GB file (there is a known bug open on this for owncloud). My recommendation would be to avoid using the file sync setup like I was above with large archive files; if anything keep your files small and separate.

As for the calendar, the single most annoying quirk was when event details were displayed, the scroll wheel acted on the main calendar screen instead of the currently open event. This was throughout the entire calendar app. It was very jarring to close an event and be looking at a different month.

Another annoyance is with the user interface in general: there is a general lack of feedback to the user if an operation succeeded or failed. Very annoying.

Conclusions

The overall feeling I get from owncloud is that it is decently written and works fairly well. Since it uses DAV for file transferring and versioning, I would recommend when choosing a server, give it some decent disk performance and CPU(s). The fact that there is an extensible application framework under the hood makes the design of owncloud very attractive as a central cloud data storage system. The interface is slick, works well enough although more feedback about the status of commands would be appreciated. Would I recommend it as an alternative to Google Drive or DropBox?  Absolutely!

On the topic of hosting your own Web Server

I recently had a friend ask me the kind of question that makes me stop and think: How do I go about setting up a web server on my home Internet connection?

At first glance, doing this sort of thing now-a-days is actually pretty easy: find an old PC (or server), set up Linux (Ubuntu or CentOS are decent places to start) and install XAMMP, install WordPress / Gallery, configure the PC to be on your home router’s DMZ and then set up a domain name along with a dynamic DNS service such as DNS Dynamic. Easy, right?

Well it is, if you don’t care about things like security, being billed for extra Internet usage (from people visiting your home web server) and slower home Internet speeds due to people accessing your home web server. The first part of this blog will address some of the above concerns and we will get into the details of how to actually set this all up in a following post.

Security

I will start with the requisite fine print: do not try this at home if you have any data on any of your home computers that you do not want to possibly be seen by a malicious individual. I don’t think I can say that enough. If you need to ask what the security concerns are, then I would recommend a lengthy discuss on the topic (perhaps another blog post!) with someone who is knowledgeable on the subject. Suffice to say I will assume for the purposes of this blog entry that you feel the risk is manageable.

Increased Internet Usage

While this may seem obvious, it is sometimes a good exercise to think about the ramifications on your Internet usage on hosting your own web server. While it may be easy to understand that your Internet usage increases with the amount of time you spend online, when other people start accessing your web server, your Internet usage will increase without you even being home! Internet usage is measured typically in two parts: the amount of data that you download from the Internet (examples of this are many, but typically are: accessing a web site, downloading a video, or listening to music) and the amount of data that you send to the Internet. The data that we send to the Internet is not typically very large; the average user (arrived at with a sample size of one, i.e. myself) downloads about 10 times the data that is sent to the Internet.

To help monitor this, we can use a number of tools to keep an eye on how much data is being sent from your web server to the Internet:

  • BitMeter OS
  • Webalizer (this comes with XAMMP for Linux so it might be a good place to start!)
  • A simple command-line based solution: ifconfig

For any web site hosting that will generate a lot of traffic (and I will quantify this in a second), I would recommend that you do not go this route of hosting your own site but instead get a pre-packaged hosting solution (they are inexpensive, fairly reliable, and you will know when you need to jump to the next step of a virtual-private server or co-located server).

One thing to keep in mind is that as your web site generates more interest, you may see a sharp increase in your monthly Internet usage and this can translate into large bills from your Internet provider, so beware!

My Internets are Clogged!

The last thing to think about is the impact that all of this traffic will have on your home Internet usage. For example, if enough data is being sent out to the Internet from your web server, it can make browsing the web, sending/receiving email and playing games much much slower. There are solutions to this problem with the most popular one being throttling of web server traffic. This requires a router/firewall that supports Quality of Service (QoS). All QoS does is treat your home Internet usage as having a higher priority than the traffic from say, your web server. Of course, no matter what you do, the home Internet connection that you have will be the slowest link in the chain and so someone will notice a slowdown, either you or people that access your web server.

Enough with the warnings!

That’s enough about the warnings, let’s jump into getting this thing set up!