Go to your ~/Library/Calendars folder. You will find a bunch of ID.caldav directories: each of these folders correspond to a calendar (or a set of of calendars) and contains either another directory or an Info.plist file. The Info.plist file stores the URL of the calendar.
Open the Info.plist file of the calendar you are interested in and look for:
https://pXX-caldav.icloud.com/USER_ID/principal/. (The principal URL is going to be the same for all your iCloud calendars.)
If you are interested in the iCal link (for read-only subscriptions):
open the iCal application, go to the calendars list on the left, click
on the share icon and you will get a public address to share the
calendar. You need to replace the
webcal protocol with
The URL of the calendar is then formed as follows:
(See: https://discussions.apple.com/thread/3414939?start=0&tstart=0 for a similar discussion.)
Google makes it a bit easier to find the calendars' URLs.
The calendar URL is then formed as follows:
Baikal is a Caldav/CardDAV server which is simple to install and compatible with OSX apps. It is a good choice if you want to run your own server. The latest stable version is 0.27; a 2.0 version has been in the workings for a while.
The URLs of the calendars can be found on the web-interface: look for the Calendar token ID, which is either default or a long alphanumeric string.
There is no downloadable ics that I am aware of.
OwnCloud is another good choice if you want to host your own private cloud, contacts, and calendars. Ready-made appliances are available from BitNami which significantly simplify the deployment process.
The calendars URLs are readily available with OwnCloud from the web interface.
You will find the calendar address by clicking on the gear at the bottom of the page when you visit a calendar. The ID of the calendar is the calendar name.
See Calendar Manual if you need more details.