Newsroom Update

Beginning in May, a special Today at Apple series titled “Made for Business” will offer small business owners and entrepreneurs free opportunities to learn how Apple products and services can support their growth and success. Learn more >

Looks like no one’s replied in a while. To start the conversation again, simply ask a new question.

How to make iCal server available to Thunderbird Lightning with caldav?

I have an iCal server on my 10.6 server and it works perfectly with iCal on Apple computers. but I have also some windows users, who are interested in using the same calendar services on the apple server. Obviously outlook does not support any caldav protocol natively. but there are some others like Mozila Thunderbird Lighting, which smoothly support caldav server.

But as I try, I'm getting the error:


The calendar xx is momentarily not availble


The address I have entered is:


http://192.168.1.1/principals/__uids__/92800EE92-C51D-689D-816E-504B79F893AEE/


where the IP is the one from Apple server.


I got this address form my Apple computers in their iCal settings...


any solutions or experiences?


Thanks,


Farshid

Mac Pro, Mac OS X (10.6.8)

Posted on Nov 25, 2011 5:20 AM

Reply
Question marked as Best reply

Posted on Nov 28, 2011 11:10 AM

This is my config working with Lightning in local network. I use a wiki calendar and I copy the this url throught web calendar.


http://(servername):8008/calendars/__uids__/wiki-trigenia/c493ed34-4052-0521-a1a b-421a5f3bec25


Sorry I write very bad but it's too late for me today.


Danie

7 replies

Nov 29, 2011 12:50 AM in response to Kooanna

Thank you guys! it worked!


I followed your directions and got down to this config, which worked for me:


http://(servername or IP):(port)/calendars/__uids__/(user ID)/calendar


I do not know why, but as I deleted the port number from the address in Lightning, it started to work.


While using the port, I was getting this error in the server log:


127.0.0.1 - USERNAME [29/Nov/2011:09:35:45 +0200] "PROPFIND

/calendars/__uids__/728EFE92-C51D-400D-816E-504B79FDA9DF/calendar/

HTTP/1.1" 207 1943 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0)

Gecko/20111105 Thunderbird/8.0 Lightning/1.0" i=8009 t=12.7 or=1

responses=1


I tried this with various forms like:

http://server-IP-address:8008/calendars/__uids__/(user ID)/calendar

http://server-IP-address:8008/calendars/__uids__/(user ID)/calendar/

http://server-IP-address:8008/calendars/__uids__/(user ID)/inbox

http://server-IP-address:8008/calendars/__uids__/(user ID)/inbox/


but no success until I deleted the port.


Thank you guy again,


cheers!


Farshid

Jan 11, 2014 1:20 AM in response to Kooanna

It took me 5 straight hours of research and trial and error before I figured this problem out. I hope this info helps even just one more person.

I went ahead and typed up this document for myself - I'm sure it's going to come in big handy months down the road when I've forgotten all this experience has taught me.

Sorry for mistakes and misinformation - I must admit I'm not a CalDAV (or even an OS X Server) expert by any means.

I apologize for weird formatting - I copied and pasted from Word and not everything looks right. The numbering is all screwed up, but that shouldn't matter.




Problem:

I cannot add my OS X Calendar server calendars to any calendar clients other than Calendar.app

(formerly iCal). I don’t know OS X Server’s CalDAV calendar address syntax.


Software in use:

OS X Server 3.0.2

OS X 10.9.1

Thunderbird 24.2.0


This tutorial assumes you have:

  1. ) A working OS X system running at least the software version(s) noted above;
  2. ) A working OS X Server installation of at least the software version noted above;
  3. ) A working CalDAV server on your OS X system;
  4. ) At least one calendar created on this server (a CalDAV calendar, NOT a calendar stored locally in Calendar.app (formerly iCal); and
  5. ) At least one of these (CalDAV!) calendars added to Calendar.app (formerly iCal), either on the Server itself or another Mac



OS X Server’s documentation leaves a LOT to be desired. Seriously, Apple, what were you thinking? You don’t really need to worry about freaking people out. OS X Server isn’t a consumer product anyway.




First, as best as I can surmise given my severely limited CalDAV knowledge, OS X Server’s CalDAV implementation utilizes a calendar address syntax specific to OS X Server. For example, it differs from the syntax you’ll find used by different software products, as illustrated on the following pages:


http://oxpedia.org/wiki/index.php?title=File:CalDAV_URL_Step2.png


http://wiki.zimbra.com/wiki/Accessing_Zimbra_Collaboration_Suite_with_Thunderbir d#Accessing_your_Zimbra_Calendar_using_Lightning_with_CalDAV_.28Only_works_with_ ZCS_5.0.2B_and_Lightning_0.8.2B.29


http://davmail.sourceforge.net/thunderbirdcalendarsetup.html




Second, the syntax that worked for me differs from the examples found in posts regarding the same issue in what I assume to be different versions of OS X Server. This is a worrying trend, because if that continues this means the syntax is a moving target. Who knows how it might differ in OS X Server 4.x? 5.x? etc.?


https://discussions.apple.com/thread/3522171?answerId=16863418022#16863418022


https://www.geeklan.co.uk/?p=648

http://www.geeklan.co.uk/?p=663





The command


sudo calendarserver_manage_principals --search shared

referenced in the above link failed to find any calendars on my machine when run in terminal.




Solution:

I surmised that most CalDAV clients would require both a) a user ID and b) a calendar (or reminders list) ID in any calendar addresses I might specify. Otherwise, how would the calendar client know which calendar or reminders list I mean to add from a server that hosts several? And how would I specify to which user (under which account) the calendar(s) belong?



) In Calendar.app (formerly iCal), click File > Export > Calendar Archive…

Choose a directory, like the desktop, where the file will be easy to manipulate.


) Find the file you just exported in Finder.

The file should use the following naming convention:


Calendars[ and Reminders] [Month##].[Day##].[Year##], [Hour##].[Minute##] [AM/PM].icbu


NOTE: I’m not sure if the “and Reminders” will still appear in the filename if you haven’t configured any reminders in the Reminders app (on the server); I haven’t had an opportunity to test this.


) Right-click on the file > Show Package Contents


) Open the folder “Calendars”


) Ignore all folders inside “Calendars” other than the one ending in “.caldav”. I haven’t yet

had time to determine what exactly the others contain, but as far as I can tell, all we’re

concerned with here is CalDAV. Open the folder ending in “.caldav”.


) Open each seemingly randomly-named folder ending in “.calendar”.

NOTE: These folders appear to truly be randomly named. Even though each of these

folders contain a specific calendar or reminders list, the same calendar or reminders list

is contained in a folder with a different name depending upon which client was used to

perform the Calendar.app (formerly iCal) archive export. In other words, the copy of Calendar.app (formerly iCal) on my MacBook Pro stores the same calendar or reminders list in a folder with a name that differs from the folder that same calendar or reminders list is stored in on my Mac Mini (running OS X Server).


) In each of these folders, open the file “Info.plist” in TextEdit.

Right-click > Open With > TextEdit.

NOTE: If you don’t see TextEdit here, click “Other…”. This should take you straight to

your Applications folder. Browse for TextEdit in this list, highlight it, and click

“Open.”


) You’ll be greeted with something like this:



<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">

<plist version="1.0">

<dict>

<key>AlarmsDisabled</key>

<false/>

<key>Availability</key>

<true/>

<key>CalendarPath</key>

<string>/calendars/__uids__/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX[N1] /XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX[N2] /</string>

<key>CanBePublished</key>

<false/>

<key>Checked</key>

<integer>1</integer>

<key>Color</key>

<string>#0E61B9FF</string>

<key>Delegate</key>

<false/>

<key>Editable</key>

<true/>

<key>Enabled</key>

<true/>

<key>EventContainer</key>

<true/>

<key>Key</key>

<string>XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX</string>

<key>Order</key>

<integer>3</integer>

<key>OwnerPrincipalPath</key>

<string>/principals/__uids__/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/</string>

<key>Permission</key>

<integer>4</integer>

<key>PushKey</key>

<string></string>

<key>Renameable</key>

<true/>

<key>ShareDefaultAlarmSettings</key>

<true/>

<key>TaskContainer</key>

<false/>

<key>TimeZone</key>

<string>America/Timezone</string>

<key>Title</key>

<string>CalendarName[N3] </string>

<key>Type</key>

<string>CalDAV</string>

</dict>

</plist>




) Pay special attention to this line:


<string>/calendars/__uids__/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/</string>


You’ll need this bit to help you construct the addresses for each of your calendars

and reminders lists you want to add to client programs later.


) Keep a list of the names of each of your calendars and reminders lists, along with their

corresponding string (highlighted in the green just above).


) Go back to your copy of Calendar.app (formerly iCal). Click Calendar > Preferences… > Accounts > [the CalDAV account stored on your server that contains the calendars and reminders lists you want to add to other clients] > Server Settings

NOTE: If you don’t see your CalDAV account in the list box on the left of Calendar’s

preferences window, you’ll have to add it by clicking on the “+” below.


) Note this information. You’ll need it to construct an address for a specific calendar or reminders list. Remember, you’ll need to construct an address for each calendar and reminders list you want to add.


) The syntax is as follows:


[http or https]://[hostname or IP address of OS X server]:[Port#]/calendars/__uids__/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/


Mine looked similar to the following:


https://bestserverever.local:8443/calendars/__uids__/1A7D5E3C-7AC3-09F2-21CC-7F1 2DCA4F812/B3A68D6F-2F50-00AD-3AA4-1D6BACD035BC/


Some of you will already know about all of this:

I used https because I use a self-signed SSL certificate on my server.

I specified the hostname I assigned my server in Server.app.

I specified the port# Calendar.app (formerly iCal) showed.

Next, note the presence of

/calendars/

like we saw in the long string in the plist file, NOT

/principals/

like we saw in Calendar.app’s (formerly iCal’s) Preferences.

I can only assume this is because we’re looking to construct an address that

points to the location of a specific calendar or reminders list, not to the

location of the user account (or principal? I’m not sure exactly what

“principal” means here) to which all of your calendars and reminders lists

belong.

After

__uids__/

The first UID

XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/

Is the user account ID – the ID you see in both the first half of the long string

in the .plist file, and in Calendar.app’s (formerly iCal’s) Preferences window.

NOTE: You can verify this yourself:

While in Server.app, click on Tools > Directory Utility.

In Directory Utility, click Directory Editor.

I believe that, unless you’ve had to change this, “Viewing” should say

“Users” and “in node” should say “/Local/Default”.

In the list on the left, look for the user name you’ve created your

calendars and reminders lists under.

Its “GeneratedUID” should be the same.

Then,

the second UID

XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/

Is the calendar or reminders list ID of the specific calendar or reminders list

you want to add.

Make sure you add a forward slash at the end of the address!


) In Thunderbird, make sure Lightning is installed.


) Open the Calendar tab, right-click in the lower left in the blank box that says “Calendar” (where

your added CalDAV calendars will appear) and click “New Calendar”.


) Choose “On the Network”


) Choose CalDAV, enter the address of the specific calendar or reminders list you want to add,

and choose whether or not you want Offline Support (I assume offline support has

nothing to do with your calendar server – it dictates whether the client you’re using is able

to accept changes you make to your calendars and reminders lists while you’re not connected to your server and upload said changes the next time you are).


) Configure the rest of the calendar’s options. If you’re using a self-signed certificate (or an authority-issued certificate that otherwise can’t be verified) Thunderbird will ask you to

specify a security exception for your server’s certificate. Do your due diligence and view the

certificate in Thunderbird first.


That’s it! Addresses for reminders lists shouldn’t look any different. Thunderbird should

be able to tell the difference between addresses you’ve added that provide access to to-do

list items and addresses that don’t.





[N1]These X’s aren’t variables – they just represent hex characters I replaced with X’s because I’m not sure if these UIDs represent truly sensitive information.


This first set of X’s represents the UID of the User Account the calendar or reminders list belongs to.


[N2]This second set of X’s represents the UID of the specific CalDAV calendar or reminders list stored in the same folder the Info.plist file you just looked at is stored in.


[N3]This string here tells you what calendar or reminders list you’re looking at. This is the only explicitly identifying information I’m aware of in these plist files.

Jun 25, 2015 12:49 PM in response to Kooanna

Hi, I was a breaking my mind for months trying to resolve this issue and at last I found this tread, none of the configs worked out for me but those gave me a basic idea to make my config work.


Here is my config just in case.


OS X 10.10.3

Server 4.1


https : / / (server name / IP address):(port:8443)/calendars/__uids__/user account ID (explained by @nate9495)/calendar/


It looks like: https://127.0.0.1:8443/calendars/__uids__/AC5EC22D-8865-4996-B350-7E32E317DA68/c alendar/

If your calendar is from a wiki:https://127.0.0.1:8443/calendars/__uids__/wiki-(name of the wiki)/calendar/


I hope that my post help too and thank you guys for this tread.

Sep 17, 2015 9:40 AM in response to Kooanna

In our organization, the Windows & Linux users need a way to integrate the wiki calendars in Thunderbird using the Lightning Plugin. This has been a pain for a while since the "Add to my calendar" link in the calendar settings stopped revealing the CalDAV URL needed by Lightning. This is what I've found.


OS X 10.10.4

Server 4.1.3


CalDAV URL for the Default Calendar for a Wiki (as others have already mentioned):

https://servername/calendars/__uids__/wiki-<groupname>/calendar


Where <groupname> is probably the (Unix)group that owns the wiki.


CalDAV URL for Additional Calendars on the Same Wiki:

https://servername/calendars/__uids__/wiki-<groupname>/calendar/<UUID>


The painful part is trying to find the UUID for the calendar. For that, I used a Javascript debugger.


Details:

------------

To find the correct CalDAV URL, I browsed the Javascript code and used the debugger in Chrome. You can also find it by browsing the "Network" tab.


In the developer tools, find the source file _collabd/coreclient/wiki/javascripts/sprockets.js?version=...


Find the section beginning with Object.extend(Object.extend(Ajax.CalendarRequest.prototype, Ajax.Request.prototype)...

(around line 4444).


In that section, find the definition of the function "request". The line contains "request: function(url)".


Set a breakpoint inside the function.


Reload the page.


Chrome will show the value of the "url" parameter. This method gets executed a couple of times with different values. Keep pressing "continue" button in the debugger until the "url" parameter has a value of the form "/calendars/__uids__/wiki-<groupname>/calendar/". Where <groupname> is the name of the (Unix)group that owns the wiki.


This is the relative URL to the default calendar of the wiki. For non-default calendars, the URL will have a UUID on the end: "/calendars/__uids__/wiki-<groupname>/calendar/<UUID>". Append this to your base URL to get the full URL needed by the Lightning plugin in Thunderbird:


Default Calendar:


https://servername/calendars/__uids__/wiki-<groupname>/calendar


Additional Calendars:


https://servername/calendars/__uids__/wiki-<groupname>/calendar/<UUID>


It would be very kind of Apple if it would provide a more reasonable, documented way of finding these URLs. (If this documentation exists, it's well-hidden.)

How to make iCal server available to Thunderbird Lightning with caldav?

Welcome to Apple Support Community
A forum where Apple customers help each other with their products. Get started with your Apple ID.