Create an easy to use Linux calendar sharing server

Jack Wallen discovered one of the easiest CalDAV servers for the Linux operating system. In this tutorial Jack shows how to set up a calendar server quickly and easily.

In my ever-continuing quest to bring Linux to business, I found one of the biggest missing pieces was the ability for Linux mail clients to easily share out calenders with other Linux users. Most of the Linux mail clients (Evolution, Thunderbird, etc) offer the ability to publish calendars or use remote calendars. Although it's a fairly simple task to share those calendars out, the task of correctly setting up a connecting calendar server is not. That is, unless you happen upon Radicale CalDAV Server. This particular calendar server is about the easiest CalDAV server I have ever installed and used.

Radicale can share calendars with most open source calendar tools and features:

  • Shares calendars using CalDAV or HTTP.
  • Supports events and todos.
  • Works out-of-the-box with little to no configuration required.
  • Warns users on concurrent edition.
  • Limits access by authentication.
  • Secures connections.

Let's take a look at how Radicale can be set up on a Ubuntu 10.10 machine

Step 1: Installation

To install Radicale on Ubuntu simply open up the Ubuntu Software Center, search for radicale, and click Install. You will need to enter your sudo password for the installation to complete. When the software is installed you can close out the Software Center and start working with Radicale.

If you are installing in a non-Ubuntu distribution you might have to install from source. You will want to make sure you have Python installed.

Step 2: Configuration

Believe it or not, this step is optional, as Radicale should work out of the box for you. On my Ubuntu machine hosting the Radicale Server, no configuration was necessary. But more than likely you are going to want to set up some configuration options (such as authentication). To do this, the file ~/.config/radicale/config must be edited (or created, if it's not there).

The default configuration file looks like:


# CalDAV server hostname, empty for all hostnames

host =

# CalDAV server port

port = 5232

# Daemon flag

daemon = False

# SSL flag, enable HTTPS protocol

ssl = False

# SSL certificate path (if needed)

certificate = /etc/apache2/ssl/server.crt

# SSL private key (if needed)

key = /etc/apache2/ssl/server.key


# Encoding for responding requests

request = utf-8

# Encoding for storing local calendars

stock = utf-8


# Access method

# Value: fake | htpasswd

type = fake

# Personal calendars only available for logged in users (if needed)

personal = False

# Htpasswd filename (if needed)

filename = /etc/radicale/users

# Htpasswd encryption method (if needed)

# Value: plain | sha1 | crypt

encryption = crypt


# Folder for storing local calendars,

# created if not present

folder = ~/.config/radicale/calendars

The above configuration should be fairly obvious. Just make the changes that suit your needs and save the file.

Once you have the configuration saved (or you need no configuration), all you have to do is start the Radicale daemon with the command radicale. You might want to set this to start up automatically. From within GNOME you can do this by clicking System | Preferences | Startup Applications and adding the radicale command.

Creating (or connecting to) calendars

It is very simple to create or connect to Radicale from both Evolution and Thunderbird (with the Lightning addon). When connecting to (or creating) a new calendar you will be using a Network calendar with the following addresses:

For Thunderbird:


For Evolution:


Where ADDRESS_TO_CALSERV, USER, and CALENDAR are all unique to your system. If the calendar you want to connect to already exists just check inside the user's (the user that starts the daemon on the target machine) ~/.config/radicale/ directory for this information. NOTE: Both calendar types will be CalDAV.

That's all there is to it. You will now be able to add/view entries on the calendar(s) on the server. The only pitfall is that you have to manually refresh the calendars in order to see changes. That's a small price to pay for such simplicity.