Running ownCloud

Users of desktop and handset computers often experience cloud computing as a synchronisation service. For example, data from one machine (e.g. music, contacts, calendar entries, notes, bookmarks and the like) gets synced transparently to other machines via some server software.

From a simplified point of view such cloud services just appear as “yet another server software”, providing an API. Whether the service is running on one dedicated machine (“server”) or on a virtual machine running on top of a hardware cluster (“cloud”) doesn’t matter much.

Chances are given that users gain the most seamless user experience in case that both the client as well as the server software are controlled by the same organisation.

Privacy and security

Users usually “nolens volens” accept that they have no control what happens with their data while being processed. They pay for the convenience by disclosing parts of their privacy, allowing the service provider to earn money based on the data. Some applications do not only transfer and analyse the data the user entered using them. They additionally require access to further data, such as a user’s contacts information.

For the user the situation gets more precarious with the amount of such applications installed, because the data gets spread over various service providers, making it difficult to keep track of the distribution channels.

Hosting

Even running a sync service of one’s own on a rent server is not really save, since the server is controlled by the service provider. Encryption can help, but the most secure solution probably is to run the service on a machine located at one’s home, e.g. using a Raspberry PI behind a DSL router.

Since I do not own a Raspberry yet I’ve temporarily chosen uberspace.de due to the unorthodox business model. The user gets a virtual CentOS machine and pays the price she thinks is appropriate, the miminum monthly fee being just one €. New users can test the service for one month free of charge. After that period, the user either pays or the account gets deleted.

After registering an account and uploading a ssh key (optionally setting a ssh passphrase), the access to the machine immediately is available. A default htdocs directory is already preconfigured in the user’s home directory, and PHP is available as well.

ownCloud

ownCloud is an open source server software written in PHP. It can be used to run a “private cloud“. ownCloud optionally supports SSL connections as well as the encryption of the data saved.

Installing ownCloud is as simple as downloading and extracting a tar ball. Just place the resulting folder “owncloud” in the htdocs directory and point your web browser to it.

For further information, read the project’s documentation or postings like the one of Martin Brinkmann.

By accessing ownCloud’s web interface for the very first time, the user creates an admin account. I’m still used to log in to this account for administration purposes only, which means I set up additional user accounts for data sync. Call me a chicken, I’m comfortable with it :) .

Web interface features

Users can access ownCloud via its web interface. Its features include uploading and managing of files. A couple of viewers and even editors exist to conveniently deal with the files available. Media files, such as pictures and music, are scanned immediately and available via a gallery view or a media player respectively. ownCloud also allows to cope with contacts and calendar data.

Direct file access

File data is accessible via webdav. Operating systems (such as Linux and Mac OS X) allow the user to mount the webdav server as a share. Though the files exist on the remote server only, the user can cope with them as if it were local files. The disadvantage is that this requires constant connectivity.

File sync for offline use

ownCloud provides clients for desktop and handset machines. It uses csync to synchronize file data similarly to some commercial file sync producs.

From the client’s interface, the user selects one (or many) folders of the local machine that should be synced. ownCloud periodically propagates edits and changes (including the deletion of files) to the server (and subsequently to further connected clients). For example, on Mac OS X the client provides a tray icon so that the user can easily control it.

Calendar and Contacts Desktop synchronisation

Calendar and contacts data is available via caldav and carddav respectively. Applications like iCal or Thunderbird’s Sunbird can cope with it natively.

Android

The client, available for a small fee in case you intend to support the project or for free in case you don’t want to, provides basic access to the files on the server. It allows the user to delete, rename, download, and subsequently to open the file locally. Additionally the user can tell the client to keep the downloaded file in sync with the server.

Surprisingly Android does not provide webdav capabilities natively, though it provides a mechanism for application developers to sync data via restful APIs. Third party applications thus are required to sync data with an ownCloud installation via webdav, carddav and caldav.

Edit 2014-07-11: Meanwhile an open source implementation called DAVdroid exists to sync carddav and caldav data.

Hint: Android contacts, e.g. on a Samsung Galaxy S II, possibly contain a field account_type. In case it reads something like vnd.sec.contact.phone it is likely that those are treated as local contacts, not intended for being synced. Unfortunately contacs can only be linked to a sync account during creation, not editable afterwards. Try to first install and configure a sync adapter before entering contacts, and ensure to assign the contacts to the right account during creation:

N900

Though I didn’t try it, tanghus posted some information how to sync an N900. Don’t miss posting 1 and posting 2 in case you’re interested.

Conclusion

ownCloud can serve as a private cloud and is relatively easy to install for experienced users. It is easy to access files on the server, either via its web interface, a webdav share, or the clients provided.

The Mac client for synchronizing files integrates very well via a tray icon. The Android client behaves like an Android application and allows to sync files.

I got contacts synced to my Android 4 device using CardDAV-Sync free beta (no, I’m not in bed with the author). I haven’t tried CalDAV-Sync beta yet for calendars, though cal sync was the initial motivation to play with ownCloud. I put it on my ToDo list for the next weekend.

Since it is Xmas time, I hope the Android sync client will be enhanced. I’d especially like to see some sync adaptors for file, calendar and contacts sync which integrate with the system as unobtrusive as possible. Syncing bookmarks between an Android machine, Safari on the Mac, Firefox and so on would be great (there was a proposal during this year’s Google summer of code).

Of course wishes most often come true in case you “do it yourself”. Seems I need to start AIDE, see below :) .

Credits

I used a couple of resources to learn more about Android: