Creating your own calendar server.

“I love my little calendar girl”

Ever since I first put together my own e-mail server, I’ve been looking for something to “round-out” the offering with centralised calendar functionality using the CalDAV protocol – my own “Groupware” solution so to speak! The criteria was fairly simple: I wanted it to serve of the Linux platform (Ubuntu – no surprises there I guess), it should support CalDAV, show busy time when sending invites to internal users and work with a variety of clients.

I started down the path of using a Debian port of Apple’s iCal server, often referred to on the net as “caldavd“, but the install became to bloated and complex. Trying to resolve dependencies was becoming a nightmare, and the hand editing of the config files was time consuming.

I stumbled across DAViCal while looking for alternatives to caldavd – as luck would have it it was written by a fellow kiwi named Andrew McMillan, so with patriotic fervor I set about installing it. It works great, and what’s better it meets all of my criteria!

So without further ado, here’s what I started with as my base spec for this build:

  • An HP Proliant Microserver (with built in RAID0/1 controller)
  • 2 x Seagate Barracuda 160GB SATA drives
  • 2GB RAM
  • Ubuntu 10.04 LTS 64-bit

My intention from the start was to use this server with clients using Mozilla Thunderbird 5.0 with the Lightning 1.0b5 add-in. ( NOTE 20-4-2012: This is now Thunderbird 11.01 and Lightning 1.3 )

Base install

Installation was basically a “follow the prompts” procedure. I interrupted the network detection to define a fixed IP address, the install detected the RAID card and configured accordingly, and when prompted the only additional software I installed was the “open-ssh” server (so I can access and configure from my own PC using PuTTY).

After the first boot I made sure everything was up-to-date by installing the latest patches/security updates.

sudo aptitude update
sudo aptitude safe-upgrade

Once completed I was ready to start the install of the other core server. As a point of note here, because this install uses PostgreSQL, and all my other servers use MySQL, I opted to have it on a separate machine. From what I’ve read (provided the load isn’t to heavy for the spec of the machine) it’s OK to have both on the same server if you wish.