January 10, 2008

Calendar Server for iCal

I’ve been struggling with Markspaces Sync Together for Mac OS ever since leopard came out. They had a notice on their website for months concerning incompatibility with leopard but no notice as to when or if they would be working on making it compatible. Finally the time came I was ready to figure something else out. I found all kinds of tutorials on setting up a .mac clone which seemed interesting but all I really wanted was to keep my contacts and various calendar events in sync. I also wanted to share this information with my wife’s machine without it being a big hassle. I had read about calendar server before so I decided to set out to get it installed.

I have been working with open sourced software like this for years so I expected some bumps but figured in a few hours of free time I should have it up and running. I was so utterly wrong I could not have imagined the pain this software would cause. First what little documentation there is pre supposes configuration options and package installations that are almost sure to be incorrect for anyone who attempts the install. Second the server makes use of some new technologies like extended attributes for files that while mentioned are not described in enough detail for anyone not already intimately familiar with to make use of as for most installations this is disabled by default. So the setup isn’t the easiest to grind through. The good news is if you know what hurdles await there really is nothing to it.

So here are some of the steps required to get it up and running under Ubuntu 7.10.

My assumptions are that you are at least running a base installation of ubuntu and that you have not removed any of the packages installed by default and are using the default ext3 file system. I will also assume you understand how to deal with any issues regarding apt-get and mirrors.

First you want to get any extras that might not be installed by default with the following command.

apt-get install curl zope3 python-xml python-pyopenssl python-dateutil python-xattr python-pysqlite2 python-twisted python-vobject python-kerberos

Next you want to setup the file system for the metadata storage. This part took me quite a while to figure out that it was indeed a showstopper not to have a file system that supports this interaction. Fortunately I was running ext3 so it was a simple as running the following command mount -o remount,user_xattr /. This remounts the root partition with the ability to read and write the required metadata. This is required for whatever partition you store the data on only and once you have done this you may want to add user_xattr to your /etc/fstab in the options section.

Once this has completed you are ready to get the server from svn. You can place this any number of places popular ones include /opt /var and /usr/local so change your directory accordingly and run the following command.

svn checkout http://svn.calendarserver.org/repository/calendarserver/CalendarServer/trunk CalendarServer

Keep in mind not everyone is a trunk kind of person you can also use the release versions found by pointing your browser to http://svn.calendarserver.org/repository/calendarserver/CalendarServer/tags/release/ and grabbing one of the directories you see in there and use that url in place of the one pointing to trunk.

After the files have finished downloading it is time to configure your server defaults you can do this by changing directory into the Calendar Server directory and running the command run -s once this has completed you need to create your config file so cd into conf and the run cp caldavd-test.plist caldavd-dev.plist. I don’t know why that was their naming convention but it is.

Now you have a working server ready to accept local connections to enable remote connections edit the caldavd-dev.plist and search for and replace it with the external interface you wish the service to listen on. You can now configure your client to access the server to test out prior to getting into the config file and securing it for your personal needs.

The client connection from iCal was pretty simple you go to the iCal menu select preferences. Then you select the accounts tab click the plus sign to add a new account. Type in your own description and then the username and password to connect to the server. Next enter the url to the server begining with http or https depending on your setup. Then the hostname or ip of the server you are connecting to. Leave off the trailing / it will auto setup your path if you elave it off. Click add and you should be reading your online calendar.

Some things I hope to see in the future are event notifications when something has changed on the server it should notify the client to check for modifications. It should also maintain the connection to the server when iCal is closed and update notifications accordingly. Overall thought I’m happy with how it does work and glad I took the time to get it setup.

Leave a comment

You must be logged in to post a comment.