As part of back to root I want to move away from Gmail and with this from its contact management. This is a big step – and maybe a big step back – because Google does a great job. The contact management is very flexible, and easy to use. I never ever had to think about synchronization with my Android devices, not even one single second.
But in the last years Google added some features I don’t like that much. One of this was to merge my well-organized contacts with information from other Google services like Google+. Yeah, it’s a nice and sometimes really helpful feature, but I want to keep full control over my contacts. I want that every single byte in my contact list got there using my own keyboard. I don’t want help :-)
Then, some weeks ago, I found another issue. I couldn’t find any hint on the web, where this comes from, but it annoys me: As you might know, Google ignores dot’s in Gmail-addresses, so email@example.com is the same as firstname.lastname@example.org. Nice hidden feature but now I had to realize that for some reason all my contacts with Gmail-addresses contain these non-dotted-addresses too. I never added these addresses and I can’t explain how this could happen. Now Gmail always suggests both addresses for many of my contacts. I want to use the one I always used before, but who knows which one it was?
I want to move my contact management to my own server with some of the benefits I had before:
- Flexibility: I want to be able to define multiple addresses/phone numbers and name them (for example home, mobile, office).
- Sync with Android: I want a two-way sync with my Android devices, so that my phone is always up to date and I am able to add and edit contacts when not at home.
- Sync with Thunderbird: Same as for Android but on my desktop client.
- Always up to date web interface: Just in case I have to use my webmail client (Roundcube) I want access to all my contacts.
When talking about sync, I want all data to be synced. From first name to last name, from phone number to web address and if I add an image to the contact, I need it everywhere.
Other nice features, but not neccessarily needed:
- Only syncing a subset of my contacts (some special categories).
First I tried to manage contacts inside Roundcube but here I found two drawbacks:
- The user interface did not impress me much and I missed some features.
- Roundcube does not come with it’s own cardDAV-Server (at least I couldn’t find it).
But then I found out that my ownCloud 7 installation arleady comes with a contact management solution. It supports user defined titles for phone numbers and addresses, it has a nice user interface and it comes with built-in cardDAV support.
Well, some things could be better. The interface is very slow and I also stumbled over some bugs, especially when importing contacts. I could help myself with some SQL commands directly in the MySQL database, but yeah, not very comfortable.
For Android I found a nice little app called CardDAV-Sync beta. It syncs your Android contacts (the system contacts) with any cardDAV-Server.
For configuring it to sync with my ownCloud installation I had to use the path /remote.php/carddav/ relative to my ownCloud path, so for example
That’s it! Two way sync including contact images seems to work fine!
If you don’t want to synchronize all contacts, but just a single address book, you can use a more specific URL:
Mail client sync
I never was a big fan of Thunderbird and once again I had to realize, it still isn’t my favourite mail client. When it came to synchronizing contacts, I found out, that thunderbird does not come with support for CardDAV. No problem, there are many plugins for Thunderbird. Wrong. I just found one single plugin for synchronizing contacts via CardDAV and this one didn’t work: This howto in the official ownCloud docs tells to use the SOGo connector for synchronizing contacts, but it didn’t work for me.
This was one issue among many others I had when I used Thunderbird in the last weeks, so I moved to Evolution and the best thing about that is, it supports CardDAV out of the box.
I have to add, that Evolution’s contact management comes with many limitations. One of them is that you can only store four mail addresses per contact. That’s weird. Maybe I’ll search for a better mail client in the future.
For my webmail integration I found this list of plugins for Roundcube containing two plugins for synchronizing contacts with cardDAV:
I tried the second one by Christian Putzke and was very happy with it. I just followed the instructions in the readme and added my ownCloud server in the settings. Works as expected!
Migration from Gmail
The last step of this big move was to migrate all contacts from Gmail to ownCloud. And yeah, because of some bugs with OwnCloud, this step was bigger than expected.
First I exported all contacts from Gmail as VCF file. This can be done in Gmail’s contact management by simply clicking the More button and then selecting Export…. Note, when you choose to export all contacts, Gmail also exports people in Google Plus circles – at least my export contained many people I only know via Google Plus.
And now, the first issue with OwnCloud: I uploaded the exported vcf file to my OwnCloud storage, and then simply clicked on it. This opened a dialog, asking me if I want to import the contacts. Yes! I wanted. But that didn’t work. After some days and asking some people, my brother gave me a nice hint: There is a much better way to upload the contacts. So, here’s what you have to do:
Open the contacts app in OwnCloud. In the left bottom corner, there is a settings icon; click it. Now you’ll see an upload form for importing contacts where you can even choose where your vcf file comes from. So, choose Gmail, upload your file.
In my case here started my second issue. The upload was started twice, so after the import I had 1430 contacts instead of 715. No problem for a MySQL expert like me:
# removing duplicates
SET SESSION old_alter_table=1;
ALTER IGNORE TABLE oc_contacts_cards ADD UNIQUE (fullname, carddata(50));
# now I searched for the name of the constraint; Key_name column of
# the following request (one is twice):
SHOW INDEXES FROM oc_contacts_cards;
# removing the created index
ALTER TABLE oc_contacts_cards DROP INDEX fullname;
SET SESSION old_alter_table=0;
After that OwnCloud still listed all contacts, but that was easy to fix: I had some contacts I wanted to remove, so I selected some of them, clicked the trash button and reloaded the page. Seems that this forced OwnCloud to update an index or something like this, but afterwards, all duplicates disappeared.
So, it wasn’t easy, but now I know, I should have done this long time ago. Gmail gave me the feeling that my contacts are well organized, but with this migration I found many people who are important to me but they were not in my contacts. They were just in the list of people I contacted in the past. On the other side I had many people in my contacts I don’t really know. Now I got back full control over all my contacts and all data is stored on my own machines, so life should be better from now ;-)