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.
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.
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.
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.
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:
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 :) .
I used a couple of resources to learn more about Android:
- AIDE is an excellent IDE running directly on my Transformer tablet.
- The source code of the Android client of owncloud is available via github
- OwnCloud auf Raspbian mit externer USB-Festplatte
- Raspberry Pi: Mini-??Rechner als als remoteStorage Webserver
- 10 Easy tips to start programming apps for Android
- Lars Vogel provides a couple of outstanding tutorials concerning Android programming. It was a great joy and pleasure to read and work with the HttpClient, ListView, or SQLite and ContentProvider tutorials.
- Ashimita Adusumilli provides some adjustments for JackRabbit so it can be used in client applications on Android.
- Sardine Android is another piece of code to bring webdav to Android.
- mobileorg-android also contains bits of webdav code.
- William J. Francis shared some minimalistic rest client example code.
- Here’s a basic http client with an Android AsyncTask wrapper
- Since the concept of a ContentProvider is an important component of Android, here are 1 2 3 4 5 6 7 8 resources in no particular order