When I first looked into setting this up, I was fairly confident that I would quite easily find a way to create a simple shared calendar and todo list for my company. After all, it’s such a basic requirement.
But it did not take long to find that it’s actually quite a messy business. For a start, we have a very open IT policy. All our staff are pretty IT savvy and they can install and use anything that they feel is best for them as long as it's licensed correctly. Consequently we have a mix of Thunderbird and Outlook clients. This kind of ruled out Exchange as an option, although there are Thunderbird plug-ins to allow connection.
Failed / Rejected:- BackPack from 37 Signals – this web-based calendar has two massive drawbacks.
1) You cannot add, update or delete events from within your client. You have to connect to their website.
2) When you do add an event, it can take literally hours to be propagated to your desktop calendars. Are they kidding?
- SabreDAV – never could get this going at all.
- ownCloud – almost worked. I could add events to the online calendar, but I could NOT get Thunderbird to sync. A lot of people seemed to have the same issue.
- Google Calendar –it’s just me, I don’t like Google’s services. I don’t like clouds either. For several reasons, our data needs to be on a server that we control.
But anyway, eventually I came across Radicale – a very lightweight CalDAV server written in Python. Installation was extraordinarily simple, and it just works! Right away!
And here’s how…
First, gather your software:• Radicale (
http://radicale.org/)
• Python (
http://www.python.org/getit/)
• A web server (we use IIS)
• XYNTService (hard to find – contact me if you need a version)
What to do:The following steps are the ones I had to take to get a Windows server up and running. I would expect a Linux system to be comparable or perhaps even easier, since you will not need XYNTService at all.
1. Install Python (if you’re on Linux, you can skip this step). I used the msi installer and it took just a few moments to get all set up automatically.
2. Install Radicale. This is even easier. Create a folder, and then download and unzip the archive into it. We’re using 0.6.4.
3. At this point, I recommend testing it from the command line. Open a command prompt, cd to the Radicale server and type
C:\Radicale> python radicale.py
All being well, Radicale will start up, and open port 5232. You may of course need to configure your firewall to allow this port to be used.
Using your mail client (I used Thunderbird for my testing and it does seem to be the easiest way) you can create a new calendar on your server:
True shared updatable calendar access for all, and (almost) freeMake sure you say it's on the network:
True shared updatable calendar access for all, and (almost) freeAnd it's connecting to a CalDAV server:
True shared updatable calendar access for all, and (almost) freeThe address to use is as follows:
http://<your server>:5232/<yourname>/calendar
If everything goes according to plan, you will see Thunderbird sync, and on the server side, you should see a new calendar file appear. You can find this in your user folder. In my case it’s
C:\Documents and Settings\Tim\.config\radicale\calendars
since we still use Windows Server 2003 for this stuff.
4. If everything is working well, there’s only one thing left to do, which is to get the Radicale script to run permanently. If you’re on a Linux or Unix server this is easy since you guys have nohup.
For Windows, it’s only one step more work. Unzip your XYNTService files into the same folder as your Radicale script, and edit the XYNTService.ini file.
This is mine:
[Settings]
ServiceName=CalDAV
CheckProcessSeconds=30
[Process0]
CommandLine="c:\python32\python c:\radicale\radicale.py"
WorkingDir="c:\radicale"
UserInterface=Yes
Restart=Yes
PauseStart=1000
PauseEnd=9000
You’ll need to specify your own path names in lines 5 and 6, depending on where you installed Python and Radicale.
Then install the service by using the command
Finally, fire up the services control panel, and start your new service. Open up the Task Manager and make sure you can see ‘python.exe’ running. If so, you’re all done!
Further reading:I recommend you take a look at the Radicale documentation (
http://radicale.org/user_documentation/) especially if you would like to make any changes to the basic configuration. There’s also some good information in there about private and public calendars.
Clients supported (and there are probably more)• Evolution
• Mozilla Calendar (Mozilla Lightning & Mozilla Sunbird)
• Postbox Postbox and its Postbox Lightning add-on, working very well. (It's paid)
• Mulberry
• Chandler
• Cadaver
• Kontact / Akonadi / KOrganizer
• iCal version 3.0.1 onward from OS 10.5
• SOHO Organizer
• Outlook via iCal4OL
• RemoteCalendar for iPhone
• iPhone and iPad fully working.
• CalDAV support for Android
• eTask (Task app for iPhone)
Why I said (almost) Free:I switched to Outlook from Thunderbird quite a while ago, and as usual we Outlook users have to pay for everything. Outlook cannot sync with a CalDAV server without some 3rd party help. Fortunately there is a remarkable piece of software called iCal4OL that takes care of this. This software is remarkable for two particular reasons. First is that it seems to be utterly unique - it's literally the only program I can find that offers this facility.
The second remarkable thing about this software is its user interface. I can honestly say I've never seen or used anything quite like it. Prepare yourself for some serious head-scratching when you first set it up. But to its credit, once configured it works beautifully.
In Closing:I hope you have as much luck with Radicale as I did. We have a bunch of shared calendars set up and so far the only issue seems to be someone who's on an old Sunbird installation. I think an update to Lightning will solve that.
Troubleshooting:- Radicale script does not appear to be running:
- Check that you have set up your XYNTService.ini file correctly
- Cannot get the calendar to be created / updated in my client:
- If Radicale seems to be running, check your firewall - it’s likely that port 5323 is being blocked