This article is work in progress and will be updated along the way. Last update: Sep 6th 2015 – problems, problems.
For some time (before dropdropbox) I thought about replacing dropbox as my primary cloud storage. Instead of choosing another provider like Google Drive or Wuala I decided to try owncloud.
Owncloud is a (free and open source) server based software, which offers encrypted file storage, a calendar, an address book, task management and some other stuff. Owncloud can be installed on a usual web hosting service, as long as PHP is available. Some advantages:
- All the data is on your own webserver
- Data can be encrypted
- As much storage space as your webspace offers
- Calendar/Contacts/Tasks can be synced via standard protocols CalDav, CardDav
So this post is about my experience while migrating from Dropbox/Google Calendar/Contacts to Owncloud and some best practices I found. (I won’t repeat the owncloud manual here, so the basic stuff won’t be explained.)
- I use two different Macs (OSX 10.9) and an Android (4.2) mobile.
- Dropbox is used as shared cloud storage on all 3 devices to sync files, images, documents and backup data.
- Dropbox is also used to synchronize password data for 1Password and favorites in Transmit.
- Appointments are being managed with Google Calendar and synced with OSX Calendar on both Macs and on Android via the default Google account.
- Contacts also live at Google, synced with OSX Address Book/Contacts and the standard address book on Android.
This is generally quite straightforward, upload the files to the webserver, set the correct permissions, open browser and configure your user etc.
Important: Use MySQL as storage engine if possible. Do not use SQLite. Just don’t. In order to do this, you have to setup the MySQL database before installing owncloud. (The manual says “Because SQLite handles multiple users very badly SQLite is only recommended for single user ownCloud installations”. When I used SQLite Owncloud was extremely slow, even I was the only user. I suppose syncing data from multiple clients has the same impact as having multiple users..)
Important: If your provider offers an SSL-proxy (in case you don’t have an SSL certificate) set this up before installing. There are some articles online about this topic, I found that I had to add the following entries in /<your-owncloud-directory>/config/config.php:
'overwriteprotocol' => "https", 'overwritehost' => "ssl-account.com", // this is for all-inkl.com, change this according to your provider 'overwritewebroot' => "/cloud.subdomain.de", // your subdomain, which links directly to your owncloud-folder 'overwritecondaddr' => "^10.20.30.40$", // remote ip of your webserver, you can leave this line out
Hint: File encryption isn’t enabled by default. It is provided as App, which you need to enable as in the backend (whatever the reason might be for this..). I didn’t have a deeper look at security and so nothing confidential is online, currently.
Generally the web interface
is well done has some issues: It’s not responsible and simply unusable on a mobile (at least when using Chrome/Android). The interface works in a way but in looks broken in many places (for example the contact management is a real mess, editing appointments sometimes has problems with tabs..).
The settings work as expected, with some minor design flaws: I.E. the preferences are mostly saved via Ajax. Some with a visual feedback, some without, some preferences reload the page, some open another page… Update is also strange: The link “Update center” looks totally not like the other buttons, it opens a new page, click on the “Update”-Tab to see this screen (no update available? an error? whatever..):
Using external storage (you can include dropbox or google drive or some other remote cloud space) is also a bit strange: You can set up storage providers in the administration interface, then you enable it for users and do the same in your user prefs? A bit counter-intuitive. Apart from these minor annoyances: The interface is usable and fast.
To synchronize your files between different computers, there’s the free owncloud-software ( owncloud.org/sync-clients/ ) for Mac, Windows and Linux. I only use the Mac-version – it works similar to the Dropbox-client, sitting at the top right menubar. You can set the folders to be synced as well as the rate for down-/upload and view the last modifications. The software on the Mac is not as responsive and stable as its Dropbox counterpart: Sometimes it crashed and sometimes it took several minutes until the thing decided to notify my modifications, but that’s no big deal.
Hint: Files with special characters in their name won’t be synced. Due to the platforms on which owncloud works, the filenames must be valid on all these platforms. So that means: No files with / ? & " ' in their name. Symbolic links are also not synced, neither as link nor are the contents synced. For some setups this leads to problems, but since you can sync multiple folders you can still work around this issue.
WebDAV file access
Instead of syncing the files you can also access the files in your owncloud via WebDAV. This works quite okay when using a client like Panic’s Transmit on the Mac. If you use OS X Finder it’s simply a pain, but that seems to be the case with all WebDAV implementations I’ve encountered. Therefore: Either use a tool like Transmit or sync the files via the dedicated client software.
A calendar is integrated which has the usual features like day/week/month view, multiple calendars, repeating appointments, sharing appointments etc. The webinterface, well, works in a way.
It’s not very pretty It does work somehow and is quite ugly, but you at least can drag&drop appointments, change the duration by dragging the lower bar. Very nice is the integration of contact birthdays – this works flawlessly (it shows you even the year of birth, the upcoming age would be somewhat more helpful but okay..)
Much more important is (at least for me) the possibility to use the calendar with other software – in this case Mac calendar and Android. You can download the calendars as ics-file, get a read-only link and a CalDav-Link (read/write).
Using the Calendar with OSX
This works great: Just open OSX Calendar, add a new account, type “CalDav”, copy the link for OSX from the owncloud calendar settings, enter your credentials and you’re done. Same goes for reminders which syncs to the OSX Reminders app. The synchronization works stable with reminders, repeating appointments, whole-day appointments and appointment details.
Using the Calendar with Android
Here things get a bit more complicated – but once you’ve set up everything the synchronization works also great. The thing is, Android can’t use CalDav-accounts natively. An easy workaround would be to import the owncloud-calendar into the Google calendar and let Android sync with Google, which is of course not a problem. But that’s usually not what you want. So you have to install an app which works as a “synchronization provider” for Android, just like i.e. Facebook and Dropbox do. I tried some and my verdict is:
Use “CalDav Sync” from Marten Gajda, period – play store link.
The app costs € 2.59 – and the developer also maintains an app for syncing contact data (see below). For the latter one you can download a trial version, for this one IMHO not. As soon as version 1.0 is reached, the app is going open source, which is not only a good idea but also makes sure the app can be maintained even if the developer doesn’t.
After installing you can setup new calendar accounts, enter the URL, credentials, choose which calendars to sync (1-way or 2-way), select sync intervals and after some minutes you can see and use the owncloud-calendars in the mobile calendar app of your choice – like Google calendar, Samsungs own calendar thing or any of the 48598 other calendar solutions for Android (as long as they adhere to the Android standard). I’d recommend using one-way (from owncloud to mobile) at first to try out if everything works.
Contact managment inside owncloud is also nothing for web design awards, but it works – if you have no problem with a broken layout. See the following screenshots:
The features on the other hand are quite sophisticated: gravatar support, contact groups, multiple address books, all necessary contact fields. And: Importing contact data from OSX Address book (aka OSX Contacts) works great, including contact photos, multiple email addresses, birthdays etc.
Using Contacts with OSX
This is easy: Open OSX Contacts, add a new account (type “other…”) and choose CardDAV on the next screen, enter the credentials and – done. If only everything worked that way…
Using Contacts with Android
Similar to CalDAV Android does not include CardDAV natively ;( But no problem with this app from Marten Gajda: CardDAV Sync, free version available – play store link.
The app works also according to Android standards, so you find your synced contacts in the contact management app of your choice. Setup also quite easy: Add a new account, enter the synchronization URL from owncloud (click the gear icon in the bottom left on the contact page), credentials and setup the synchronization interval + mechanism (one-way/two-way). I’d recommend using one-way (from owncloud to mobile) at first to try out if everything works.
Photos/File synchronization with Android
In order to synchronize files I use FolderSync (Play Store Link). FolderSync can synronize with lots of providers, including Dropbox, Google Drive, FTP, SFTP and also Owncloud. Syncing with owncloud works flawlessly. You can setup a 1- or 2-way-sync.
Using 1Password with Android
For 1Password I use the Android app and set it to use a local password file. This file is being synchronized once a day with FolderSync from owncloud to the mobile phone. So I can use 1Password on the Mac (with the password-file being inside the owncloud-folder) and on Android (using the synchronized copy). Currently I use a one-way synchronization so the passwords are “read-only” on the phone. Since I seldom create new accounts on the mobile that isn’t a big deal for me. The paid version of the 1password Android app also features creating new passwords, so if you want to create new passwords on mobile this would be the way to go.
Update after nearly one year of usage
Unrealiable OS X file synchronization
The latest versions of the Mac sync client consistently refused to do their job correctly ;( After each bigger update of local files (like adding 50 MB of data or moving a folder around) the synchronization process did not complete, often with synchronization errors (where there were none) but most of the time the client failed with a
connection refused for larger files. Usually some MB were up- or downloaded but the file never was finished.
I of course tried the usual stuff: Reinstalling the Mac client, deleting all local caches, preferences etc. and reinstalling and finally I even completely wiped and reinstalled owncloud on the server – the problems stayed (the server setup did not change). In between owncloud 8.1 was released, I setup everything from scratch, updated to the latest Mac client… – same issue over and over (Lots of posts in forum.owncloud.org also have exactly the same issues: forum.owncloud.org/search). In most cases I could manually resolve the problem by either deleting a folder on the server and upload it again or vice versa. Now this might be a way to spend my spare time, but in this case a FTP client would be more efficient…
I now use owncloud only for private data (better: what I consider private data) and everything else went to Google Drive (which works flawlessly, by the way). The good thing is: FolderSync (mentioned above) supports Google Drive without problems, so on Android I just had to change 2 settings and was done. The bad thing number one is: Two sync clients on my ancient Mac Mini don’t really improve the performance – the bad thing number two is: My goal to replace Dropbox and some Google Services currently doesn’t work as intended.
So – syncing on OSX is currently not stable, especially with
larger files (about 50 MB or more). If you sync just some folder with images, PDFs that should work. I’ll update this post if the issues get fixed.