Note
This is the second part of the series of how to pull your data out of the cloud. You can find the introduction together with a list of currently published articles here.
In this short overview we will detail the storage of contacts.
Contacts
I currently store my contacts with Google Contacts, for one part because it is easy and convenient and for the other because it integrates well with my Android phone. What we are searching for now is a replacement for Google Contacts with almost exactly the same functionality. This includes Android contact management.
My solution for this: ownCloud Contacts App.
It provides easy transition (VCF import, though groups are lost), high functionality (very close to Google), synchronization (CardDAV) & is open source.
So for this, you install ownCloud on a server (which also gets you other services, see later) and for my Android phone I chose CardDAV sync free. This integrates very nicely with the Android contacts thus eliminating the need for Google Contacts.
A Note on ownCloud
ownCloud has recently had a non-trivial issue with a SQLInjection and some XSS problems as well. I personally, have done some (minor) OC developement and looked through the code. The SQLi was a relly dumb fault because they actually use prepared statements. However, in that case this feature was not used: A fault that only occurred at this single point (at least of what I found). So while I have read some people calling them pwnCloud, I think their security is generally high enough to operate it as a single user installation.
If you really distrust them, put an HTTP Authorization in front of the installation - but beware: Some clients might not work with it, so esp. the *DAV stuff might break.