Contacts and Calendar synchronisation

Access my Baïkal instance

Nowadays, we are used to having the same calendar synced between our phone, computer and other devices, the same goes with contacts, especially when changing phones. This is usually done using Google or Apple services, sometimes Microsoft. I want to have that same comfort, but by using my server rather than any third party.

What exactly am I looking for?

The software I am looking for should be open source and actively maintained, while fitting the following criteria:

  • Provides synchronization of calendars and contact to and from the server
  • Support for multiple accounts and devices
  • Easy integration with various calendars and contacts Apps, both on Mobile in PC
  • Ability to share a calendar between multiple accounts
  • Low resource usage on the server
  • Easy on mobile devices' battery
  • (optional) Single Sign On (SSO) support, preferably OAuth

These requirements only leave one reasonable solution: the WebDAV (Web Distributed Authoring and Versioning) protocol, and more specifically, its CardDAV and CalDAV extensions for contacts and calendar respectively.
WebDAV is well established and supported standard from the IETF. It, as a result, has multiple implementations.

Solutions I tried

Baïkal

Baïkal is not only the (very cool) name of the deepest lake in the world, it is also the name of a PHP based CalDAV+CardDAV server. It is based on the sabre/dav framework and is developed by the same team. It does not provide any nice visual features, just a simple and efficient administration interface, and a very detailed but not very usable user interface The usability features are left to the various apps that can connect to it.
I've been running Baïkal for a while, and it is very much a set and forget kind of software, which I really appreciate. It is reasonably easy to install and use, barely uses any resources on the server, and has showed perfect reliability this far.
Baïkal fits all my main criteria, but does not support OAuth

Davis

Davis is also a pretty cool name, and the name of the tennis world cup (Davis Cup). What is it with WebDAV servers and having cool names? Just like Baïkal, which it is inspired from, it is based on the sabre/dav framework, but aims to provide a couple additional functionalities. Such functionalities include proper calendar sharing support, public calendars and creating birthdays event automatically, based on the contacts. Davis can also use its WebDAV capabilities to provide remote storage
I haven't tried Davis for nearly as long as Baïkal, but it seems to be very reliable as well. I do not need its remote storage capability, as I already have other services doing a better job of that, but it can be disabled, so it does not use resources for nothing. I otherwise appreciate the other functionalities, and would say that it is an upgrade from Baïkal. I am not a fan of the interface's look though.
Just like Baïkal, Davis fits all my main criteria, but does not support OAuth.

Radicale

Following in this lineage of cool names, comes Radicale, which is slightly less cool but still pretty cool. Unlike the previous options, Radicale is not based on sabre/dav, it is its own standalone project, written mostly in python. Radicale has the basic features you would expect from a CalDAV+CardDAV server, without extras. That means no shared or public calendars.
Radicale's main difference with sabre/dav based alternatives, is the lack of database. It stores contacts, calendars, events and other items directly as .ics files. This approach works just fine for small and medium deployments, and offers the admin a lot of flexibility in how to manage the server. This also allows a very hacky workaround for the lack of shared calendars by using symbolic links. It can also be made (coerced seems more appropriate) to work with some Single Sign On providers, I managed to do it with Authelia, but it does not support OAuth.
Unfortunately Radicale does not fit my criteria as it lacks proper calendar sharing, but otherwise, it is a perfectly fine CalDAV+CardDAV server.

Nextcloud

You need a functionality? Of course Nextcloud has it! I don't have much to say really, Nextcloud fits all my criteria, provides a nice user interface, has all of Davis extra features and much more. It also supports OAuth 2.0.
If you are running Nextcloud, then there is no point whatsoever in having a separate CardDAV/CalDAV server. If you want more details about Nextcloud, check my drive page.

Other options I haven't tried

I believe Baïkal, Davis and Radicale are the 3 most established open source CalDAV+CardDAV server. Other options I found did not seem properly maintained.
There are plenty of other pieces of software that include CalDAV+CardDAV, but have a much larger scope themselves, Nextcloud is an example. I intend to try a few of them, mostly for the drive functionality, I'll update this page whenever I do.

How to use

First you need to have an account, if you don't and want one, then message me at corentin@serveur-bouquet.fr (This server is meant for family and friends exclusively)
To connect, option depends on the platform/OS you are using. On Android, you can use DAVx5, On iOS, just go to your `Mail, Contacts, Calendars` settings and add an account for CaLDAV and/or CardDAV, On PC, there are many apps that support CalDAV and CardDAV, choose whichever.
Irrespective of the app you are using, you will need to enter this URL: https://dav.serveur-bouquet.fr/dav.php/, your username and password. Your contacts and calendar events will NOT synchronize immediately, you will need to manually set up your contacts to be saved on the CardDAV profile, and set the online Calendar as default.