January 23rd 2018


How to create a Calendar Server, and install Clients on Linux and Android

There are different protocols and many applications available to sync a calendar (and hopefully also contacts and notes) across devices (ArchLinux desktop, Android Kitkat phone).
My requirements are: Open Source, No Google, and remote access.

After a while of searching various articles, I settled on the supposedly very lightweight Radicale for my server (an old laptop running debian oldstable and nginx).

A tutorial for setting up a caldav/carddav server (skip the webdav chapter) helped me to get started.
It assumes that Radicale is already installed. At first I tried to install with these instructions, but soon realised that I'm better off using the package provided by jessie-backports (the age of the tutorial corresponds to my oldstable setup), so a simple

sudo apt-get install -t jessie-backports radicale

was the way to go.

I edited the two configuration files according to the nginx SSL proxy setup outlined in the previously mentioned tutorial.

Then I created, started and enabled a systemd service according to these instructions.
Since debian's radicale package comes with a sysvinit startup script, this doesn't work. A full configuration required also editing /etc/default/radicale to actually enable the daemon (?)

Then I restarted the nginx server to apply the new settings.

(unfinished, broken)

Radicale method

had to install python3-pip.

for secure bcrypt passwords: python3 -m pip install --upgrade passlib bcrypt - had to install libffi-dev first!

Linux with systemd system-wide: Create the radicale user and group etc.