As far as self hosting calendars and contacts are concerned, I'd recommend using a caldav/carddav server, I personally like Baikal [1], and Radicale [2] seems to be another good lightweight option. Contrary to Owncloud these two servers do not provide a web interface to check your calendar/contacts, but there are clients available for most platforms, including web clients if you need one.