Synchronizing Calendars and
Address Books Between Macs for FREE
or
Making Any Mac into a Calendar
and Contacts Server
One feature
which is sorely missed by owners of multiple Macs is the ability to easily
share their calendars and contacts between their computers. There are
third-party software solutions, such as Mark/Space's The Missing Sync -
but they cost money. There are also web services that offer calendars and
contacts synchronization, but they either cost (such as MobileMe), or they are
not completely dependable and compatible (such as Plaxo and Google). In the
case of Google, the company is the first to admit that its calendar solution is
not completely compatible with iCal, and worse yet - its contacts solution does
not have individual first, middle and last name fields - which renders it
useless for the purposes of an accurate synchronization between Macs.
Apple has
another solution for you, except MobileMe - and that's to get a Mac OS X
Server. Among other things, the server edition of OS X has a built-in calendar
and contacts server. As of the Snow Leopard version, both are based on the
newest standards - CalDAV for calendars, and CardDAV for contacts. All you need
to do from your client computer is to subscribe to the server from within iCal
and Address Book, and you are all set for bi-directional sync.
Fortunately
enough, these portions of OS X Server are also open-source, and are known as
the Darwin Calendar and Contacts
Server. The two servers are still separate projects (written in Python and
based on the Twisted framework), and are very much under development. The
CardDAV server was only released in early 2010. Consequently, a lot of the
installation, configuration and operation is only half-baked, and it takes some
work to get to the point of the famous Apple "It just works" (well, they do
want you to buy OS X Server). Nevertheless, once you have everything up and
running, this is exactly what you get - the most dependable way to sync your
calendars and contacts, within a local network or over the internet, for free.
You can designate any Mac on your network to be the server, and it will serve
itself as well.
1. Setting
Up the Calendar Server
My tutorial
is based on the one found here (a
Google translation from German is available here).
First of
all, the version of Darwin CalDAV under development now is version 3. Since it
is actively developed, many times a check-out snapshot simply does not work. We
will use, therefore, version 2.3
Using terminal, Create
a new folder in your home directory, and cd into it:
mkdir calendar
cd calendar
Now we will download the code
from Apple:
svn checkout
http://svn.calendarserver.org/repository/calendarserver/CalendarServer/tags/release/CalendarServer-2.3
CalendarServer
This will take a few minutes,
and at the end will display the revision number which was downloaded. Once it
is done, cd into the subfolder CalendarServer, and run the command to perform
initial installation:
cd CalendarServer
./run -s
This can take up to 10 minutes.
The computer will download the necessary extensions to Python, as well as the
Twisted framework, and install them alongside CalendarServer in
your calendar folder. When you see "Using python as
Python" - the
installation is done.
Now it is time to configure the
server. The basic configuration files are stored in the folder CalendarServer/conf.
The server first accesses a file named caldavd-dev.plist,
but this file does not
yet exist. Using the Finder, duplicate the file caldavd-test.plist
and then rename
it:
Double-clicking the
file caldavd-dev.plist will open it in the property list editor. We need to modify several
properties:
1. The string ServerHostName. If
you are going to use the server only on your home network, you can give it the
computer's internal IP address, such as 192.168.1.3. This will also work if you
plan to connect to this computer over the internet by using a VPN. If you plan
to connect to the computer using a dynamic DNS service, such as DynDNS or NoIP,
you need to enter your assigned address here (make sure the router forwards the
ports indicated below in the file to the proper computer). Finally, if you plan
to use an SSH tunnel to connect to this computer, then put the local host's
address: 127.0.0.1.
2. The array
BindAddresses. Click on the little arrow to the left of the array, so it points
down. Now click on the button to the right of the line to add items to the
array. We need to create two strings: one for the localhost (127.0.0.1) and one
for the computer's address on the local network (in this example it is
192.168.1.3). You may also need to add your dynamic DNS address as a third
item, if you choose to use one.
The top of the file
should look similar to this:
Before we can start
testing our server, we need to add user accounts. The proper configuration file
is located in the folder CalendarServer/conf/auth,
and it is named accounts-test.xml.
First duplicate it in Finder so that you have a backup of the original, and
then open it in TextEdit.
It took me a while to
figure out which is the best, most stable way of handling users and groups in
this file. This is what I concluded: for each set of calendars (meaning a set
of "Home", "Family" and "Work" etc. that an average person uses) we need to
create a separate user and a separate group. Whoever connects with the
credentials of this user later on will be presented with this group of
calendars. Below you'll see the code you need, starting with the line <accounts realm="Test
Realm">, to create two individual sets and one that can be used as a
shared set (meaning, all users will login with the username "shared" and the
proper password). Please note, that at this time you should NOT add a guid line for any of
the users. We will do that later. You will need to substitute all the
upper-case uid
names and passwords with lower-case names and suitable passwords (the passwords
can be upper- or lower-case, of course).
<accounts realm="Test
Realm">
<user>
<uid>admin</uid>
<guid>admin</guid>
<password>admin</password>
<name>Super User</name>
<first-name>Super</first-name>
<last-name>User</last-name>
</user>
<user>
<uid>USER1</uid>
<password>PASSWORD1</password>
<name>USERNAME1</name>
<first-name>FIRST NAME1</first-name>
<last-name>LAST NAME1</last-name>
</user>
<user>
<uid>USER2</uid>
<password>PASSWORD2</password>
<name>USERNAME2</name>
<first-name>FIRST NAME2</first-name>
<last-name>LAST NAME2</last-name>
</user>
<user>
<uid>shared</uid>
<password>PASSWORD3</password>
<name>Shared Calendars</name>
<first-name>Shared</first-name>
<last-name>Calendars</last-name>
</user>
<group>
<uid>user1group</uid>
<password>PASSWORD4</password>
<name>USER1's GROUP</name>
<members>
<member type="users">USER1</member>
</members>
</group>
<group>
<uid>user2group</uid>
<password>PASSWORD5</password>
<name>USER2's GROUP</name>
<members>
<member type="users">USER2</member>
</members>
</group>
<group>
<uid>shared</uid>
<password>PASSWORD6</password>
<name>Shared Calendars Group</name>
<members>
<member type="users">shared</member>
</members>
</group>
</accounts>
Note that the first
user in the code is the Administrator. Do not delete this user, and make sure
you change the password.
Now it is time for a
first test run. Change the working directory and issue the command:
cd
~/calendar/CalendarServer
./run
You will see many
messages, and finally the screen will stop with a message that looks like
this:
2009-05-07
15:23:25+0200 [-] [caldav-8010] [-] AMP connection established
(HOST:UNIXSocket(None) PEER:UNIXSocket('logs/caldavd.sock'))
At this point, without
closing the terminal, open iCal. Go to the iCal menu, and choose Preferences.
Open the Accounts tab, and click the + sign on the bottom left. A dialogue will
open, asking you to configure the new account:
Choose to add a CalDAV
account type, and fill in the username and password for one of your users. The
address should be the same one you defined earlier as ServerHostName in the
plist file. The port chosen above is for SSL connection, which is always
recommended. NOTE: Do NOT add more than one user at this time - the reason for
this will become clear in a moment.
Next you will be
presented with an SSL certificate warning. By clicking the little arrow for
details, you can choose to add this certificate as a permanent exception, and
thus this message will not bother you again.
After iCal finds the
settings on its own and configures the account, you will be presented with a
screen like this:
The only thing that
you may wish to modify is the description. The description you choose will be
the title of the calendar group on the left bar of iCal. After modifying it,
you may close the Preferences dialogue.
You will now see that
a new group of calendars appears at the left iCal bar. It includes only one
calendar, named "calendar". You may rename it and edit its color if you wish,
but this is the main calendar of this group, and can only be deleted if you
unsubscribe through the Preferences dialogue. You can, however, add additional
calendars to this group, through the File menu:
You can now export
your old, local calendars one at a time, and import them to your newly created
calendars. When you are done, quit iCal.
If everything worked
so far, then we are almost set. Almost, but not quite. The problem is that the
CalDAV server identifies the calendar groups (meaning, the users) by assigning
them unique, long guid values. We have
to locate the newly-created guid value for our
first user, and add it to the file accounts-text.xml, or
the server will not know which calendar belongs to that user the next time we
run it. This is why we must add one user at a time to iCal - so that we can
identify the proper guid for this
user.
You must perform the
following for each user you add through iCal, after each addition. Using
Finder, go to the following folder: HOME/calendar/CalendarServer/twistedcaldav/test/data/calendars/__uids__.
If you did everything correctly so far, there should be only one subfolder (see
note below if there are more), with two random letters as its name. Enter that
subfolder, and you will find another, similar one. Enter that one as well. The
next subfolder's name is the guid we are looking
for. Click on its name once, make sure you don't delete it, and click Command-C
to copy it to the clipboard:
Note: If there were
more than one folder inside __uids__, then go
inside the subfolders until you reach one called "calendar". If you already
imported your calendars, it should be full. If it is empty, then this is the
wrong subfolder and you should go back to __uids__ and try
another one.
So now you have the
proper guid in
your clipboard. Reopen the file HOME/calendar/CalendarServer/conf/auth/accounts-test.xml
in TextEdit, and add the following line just below the uid line of the
proper user:
<guid>PASTE_THE_GUID_HERE</guid>
Save the file, and now
go back to the terminal. To shut down the current instance of the server press
CTRL and C. Issue the ./run command again,
wait for the messages to stop, and open iCal to see if everything remained as
it should. If it did, you can go on and add the next user, repeating the
process for identifying and copying the guid value (yes, some
of the times this will involve adding a user on iCal on a different computer,
and then coming back to the server computer in order to edit the xml file).
Don't forget to restart the server after every such addition. This process
needs to be done only once for each uid in the xml file,
regardless of the computer iCal was run on.
We are almost done!
Everything is functioning, all the users have been added, and all we need to do
is to make sure that the server runs in the background. Check and see if there
is a folder named LaunchAgents in HOME/Library. If
there isn't one, create it. Download this file and place it there.
The file will make sure that when you log on to the computer, the server will
start running in the background (give it a minute before you open
iCal).
If you use iSync to
synchronize your calendar with your mobile device, then launch iSync and click
on the icon of that device. The window will expand, and you'll notice that the
list of calendars to choose from now includes the ones on the server. Choose
the calendars you wish to synchronize, click on "Device" at the top menu bar,
and choose to reset the device, so that you are spared resolving conflicts in
your appoitments. This is important, as iSync will view all of the appointments
you previously copied to the server as new ones, and will not know to relate
them to the existing information on your mobile device.
If you plan to
configure the Contacts Server as well, you may want to wait until the end of
the next section before you perform the reset.
That's it! Now it is
time to set up the very very new CardDAV Server for contacts.
2. Setting Up the Contacts
Server
The CardDAV Server,
which was released in the beginning of 2010, is so new, that it has no stable
version. Additionally, the most recent versions (when these lines are being
written) of Address Book (5.0.1, revision 864) and of iSync (3.1.0, revision
585.0) are not yet fully compatible with the CardDAV Server. Nevertheless, we
can still get it to work without any glitches.
Basically, the setup of the
CardDAV Server is very similar to that of the CalDAV Server. It is obvious that
these two projects are going to be merged, and that actually creates, at
present, collisions between the two servers.
The first thing we need
to make sure of, therefore, is that we install the CardDAV Server in a
different folder than the CalDAV Server. If they are installed in the same
folder, both will try to impose the revisions of the Python extensions and the
Twisted framework that they work with, and consequently - disable each
other.
We'll start by
creating a new folder:
cd
mkdir contacts
cd contacts
Now we will download
the most recent snapshot of the server:
svn checkout
http://svn.macosforge.org/repository/calendarserver/ContactsServer/
This will take a
couple of minutes, and will be finished with the announcement of the revision
that was checked out (in my case, it was 4964). Next we need to run the basic
installation:
cd
ContactsServer
./run -s
All of the supporting
libraries will be downloaded and configured. The final message, after close to
10 minutes, will be "Using python as
Python". If for some reason you get an error message, that means that
the revision you checked out is broken. Delete the ContactsServer folder, wait
a couple of days for the developers to upload a new revision, and try again.
Sorry, I have no better advice.
Once the basic setup
is done, we need to create the configuration file that the server will use.
Similarly to what we did with the Calendar Server, use the Finder to go to
HOME/contacts/ContactsServer/conf, duplicate the file carddavd-test.plist
and rename it to carddavd-dev.plist:
Now we need to edit
this file. Double-clicking on it will open it in the propety list editor. As
before, the string ServerHostName needs to be either your
computer's IP address within the local network, its dynamic DNS address if you
are going to contact the server remotely through the internet, or the localhost
address (127.0.0.1) if you plan to use an SSH tunnel for the
connection.
Although we did not
change the values of the HTTPPort and the
SSLPort when we
configured the Calendar Server, now they are of concern. This is because as
long as the two servers are separate entities, and for the time being they are,
their ports must be different. The default HTTPPort is indeed
already different, but we must change the SSLPort here to a
different value, such as 8444.
Next we need to expand
the array BindAddresses by clicking the small triangle to its left. We need to
add new strings (by clicking on that line and then on the little icon to its
right) with all the addresses that apply to this computer: 127.0.0.1, the
internal network's IP address, and the dynamic DNS address, if it is used.
Press the Enter key when you are done editing a line, and don't forget to save
the file.
The edited file should
look similar to this:
Before we can start
testing our server, we need to add user accounts. The proper configuration file
is located in the folder ContactsServer/conf/auth,
and it is named
accounts-test.xml.
First duplicate it in
Finder so that you have a backup of the original, and then open it in TextEdit.
The following is an example of what you should change the file into, starting
from the line <accounts realm="Test
Realm">:
<accounts
realm="Test Realm">
<user>
<uid>admin</uid>
<guid>admin</guid>
<password>NEW_PASSWORD</password>
<name>Super User</name>
<first-name>Super</first-name>
<last-name>User</last-name>
</user>
<user>
<uid>USERNAME</uid>
<password>PASSWORD</password>
<name>FULL_NAME</name>
<first-name>FIRST_NAME</first-name>
<last-name>LAST_NAME</last-name>
</user>
<group>
<uid>group01</uid>
<password>PASSWORD</password>
<name>Group 01</name>
<members>
<member type="users">USERNAME (FROM BEFORE!)</member>
</members>
</group>
</accounts>
Once again, we keep
the admin user,
and add another for our own purposes; change everything in capital letters to
suit your needs. Do not add guid lines yet
- we will do that soon. For each shared contacts database use its own username
and its own group, and configure later on the address book applications on all
of your computers to use the same username for the same database.
It is time for us to
start the server for the first time:
cd
cd contacts/ContactsServer
./run
There will be a long
list of messages, which will stop with the words 'peopleNode':
'/Search/Contacts', 'queryPeopleRecords': True}. Do not close the
terminal. Now we need to contact the server through its web-page, so that it
will create the folders and the guid for our account.
Open a web browser, and enter the address http://YOUR_LAN_ADDRESS:8800.
The page should look like this:
Click on the
link principals. You will be asked for a
username and password - provide the ones you configured in the accounts file.
Next click on users. Finally, click on your
username. The following page provides us with plenty of necessary data, so keep
it opened.
As was the case with the
Calendar Server, we need to add the guid value to the file
accounts-text.xml.
This is the guid value that appears on the
webpage under Principal
Information:
Mark that guid value, copy it to the clipboard
with CMD-C, and paste it into the file
HOME/contacts/ContactsServer/conf/auth/accounts-test.xml as a new line under
your username's uid:
<guid>PASTE_THE_STRING_HERE</guid>
If you are using more
than one user, then do the same for each of your users. Now restart the server:
click on the terminal window, and press CTRL-C; then type ./run
again.
It is time for us to
configure Address Book. Keep the server running, and open Address Book. Go to
the Address Book menu at the top, and choose Preferences. Click on the Accounts
tab, and then on the plus sign on the bottom left. Add your details to the
following screen according to this example:
Now it is time for us
to make two annoying discoveries:
1. Unlike the CalDav Server, the SSL implementation of the CardDAV Server is
broken (as of the current revision). We have to use an unsecure connection,
which is less than ideal (and thus it's recommended to connect to this server
later through a VPN or an SSH tunnel).
2. Apple did not finish debugging and refining the CardDAV implementation of
Address Book. You received, most likely, the following message:
Indeed, click Create.
In the screen that follows enter a description of the server you added, make
sure the username and password are correct, and set a reasonable interval for
synchronization. 15 minutes is a good idea. The "automatically" option, in my
experience, does not work very well. Additionally, you will notice that whereas
iCal has the option to manually refresh calendars, Address Book has no such
option with contacts servers - for the time being.
Unfortunately,
clicking on the "Server Settings" tab will be less than helpful, since the
current version of Address Book does not let us edit the server path. We will
have to do that manually. Quit address book, and using Finder, find the file
HOME/Library/Application Support/Address
Book/Sources/LONG_GUID_STRING/Configuration.plist. Double-click the file. We
are interested in the string servername, which
should be modified to this value:
http://LAN_ADDRESS_OR_DYNAMIC_DNS:8800/principals/__uids__/YOUR_GUID
Modify the other
values according to the example above.
Launch Address Book.
On the left column you should see an active spinning icon just to the right of
the server's description - this means that Address Book was configured
correctly and that it is synchronizing with the server. Once it's done you can
drag all of your contacts onto the server's description, and after a short
while they will all be copied. Do not delete them from "On My Mac", unless you
are absolutely sure you will not need to use iSync. Using iSync requires a
local copy of the contacts; more on the subject later.
We are almost done.
The only thing we need to do now is to configure the server to run in the
background from the moment you log on to the computer. Use Finder to check
whether the folder LaunchAgents exists in your HOME/Library folder. If it does
not, create it. Download this
file and place it there, and the next time you log on to your computer the
server will run automatically in the background.
That's it! If you
don't use iSync, then you are done. You can delete the local copy of your
contacts (although it is prudent to back it up first through File -> Export
-> Address Book Archive), and set up Address Book in a similar way on all of
your other computers. You will have to copy the file we modified manually,
Configuration.plist,
to each client computer.
If you do use iSync to
synchronize your contacts with your mobile device, then things are not going to
be as simple as they were with the calendars. Once again, Apple's
implementation of the CardDAV server is incomplete. iSync cannot synchronize
contacts from a server as it can synchronize calendars. I tried all kinds of
hacking methods to resolve this issue, and ended up with SmartFolders in
Address Book as the most dependable solution.
Launch Address Book,
and click on "On My Mac" in the left column. Then click on File at the top menu
bar, and choose to create two groups (actual ones, NOT smart ones): call one
"My Contacts" or something similar, and call the other "iSync Contacts". Now
drag all of your contacts (or, rather, the ones you want on your mobile device)
to BOTH groups.
Next click on "All
Contacts" in the left column. Using the File menu once more, choose to create
two smart groups according to these examples:
When you are done
creating all the groups, your Address Book should look similar to
this:
Next, launch iSync and
click on the icon of your mobile device. The window will expand, and you will
see that you can choose which of the groups you created to synchronize. Choose,
naturally "iSync Contacts". Now you can use the "Device" menu to reset your
device and make sure there are no conflicts between the information already on
it and the newly created calendars and contacts on your computer.
In the future, any contact
you create on your mobile device will appear, after synchronization, in Address
Book's "iSync Imports" smart group. It will be simple enough to drag it into
both the Contacts Server and into "My Contacts" group (it will already be in
the "iSync Contacts" group). Once you dragged the new contact into both
locations, it will be on your server and no longer a member of that smart
group.
On the other hand, any
contact you create on your Mac will appear immediately in the "New Contacts"
smart group. You will need to drag it into three locations: the Contacts
Server, the group "My Contacts" and the group "iSync Contacts".
I leave it to the
enthusiastic reader to create an Automator workflow or an Applescript that
automates all of this, and to Apple to fix that oversight in iSync.
Enjoy your synchronized
calendars and contacts!
Comments:
Name: Ariel E-mail: profile@elvis.vipower.pl Date posted: October 12, 2018 - 10:01 am Message:
Name: Will E-mail: wmbrook@hotmail.com Date posted: May 08, 2014 - 02:16 pm Message: Does anyone know of a forum where this install is discussed? I'm having problems with the install on my iMac with Snow leopard and could use some help.
Name: Williah E-mail: wmbrook@hotmail.com Date posted: April 28, 2014 - 02:12 pm Message: I'm in the process of setting up 5.2. Definitely a neub to all this.
KG, at what stage did you enter your two variables?
After I created the accounts & groups, I ran it and received an Atributeerror: "modul' ojbect has no attribute "check_output" Wondering if anyone has seen this.
Name: KG E-mail: Private Date posted: April 02, 2014 - 03:06 pm Message: I've tried this on Mavericks (10.9.2) using XCode 5.1. I checked out the 5.1 release (which seems to be the latest one) instead of the 2.3 version used in this guide. I had to set two environment variables
CFLAGS = -Qunused-arguments CPPFLAGS = -Qunused-arguments
to quiet some clang error when compiling zope.
Apart from that everything went fine. Thanks for the guide!!
Name: jesus E-mail: Private Date posted: February 13, 2014 - 01:03 pm Message: got the same error as garret:
./run -s
Building PyXML... unable to execute gcc-4.2: No such file or directory error: command 'gcc-4.2' failed with exit status 1
running 10.7.5
Name: Joe E-mail: Private Date posted: January 16, 2014 - 10:44 pm Message: Echoing Joochen's October 12, 2010 - 09:43 pm comments. Does this still work with Mavericks and iOS7?
Name: Em E-mail: Private Date posted: October 26, 2013 - 04:18 pm Message: I realize that this is a very old thread, but it may have become more relevant this week (October 2013). With the release of OS X 10.9 Mavericks, Apple no longer supports USB sync for Contacts and Calendar. Customers must sync their contacts and calendars over the Internet and store them on Apple's iCloud servers. Many people object for varied reasons - personal privacy, security concerns (what if the iCloud servers are hacked in the future?), etc. Your thread may give people another tool to sync their contacts and calendars without resorting to iCloud.
Name: Antony Martin E-mail: Private Date posted: October 22, 2013 - 03:27 pm Message: Hi, I typed the .run command and got the following error - help!
Antony
./run -s
Downloading PyXML...
curl: (6) Couldn't resolve host 'internap.dl.sourceforge.net'
Name: geniusengine E-mail: Private Date posted: April 04, 2013 - 11:41 am Message: Thanks newuser. I'm getting closer. My latest attempt fails with:
geniusengines-computer:CalendarServer genius$ ./run -s
Downloading PyXML... % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 4298 100 4298 0 0 634 0 0:00:06 0:00:06 --:--:-- 634 Unpacking PyXML from cache...
gzip: stdin: not in gzip format
Applying patches to PyXML in /Users/genius/calendar/PyXML-0.8.4... ./run: line 309: cd: /Users/genius/calendar/PyXML-0.8.4: No such file or directory
Name: newuser E-mail: Date posted: March 24, 2013 - 12:14 am Message: To geniusengine et al. I have successfully set up the latest ical server (4.2) on Lion, which uses postgresql for data storage (installed via macports), and with LDAP for authentication. Perhaps it also works on 10.5.8
Name: geniusengine E-mail: Private Date posted: March 01, 2013 - 05:31 pm Message: I realize this is from 2010, but shouldn't it still work for a Mac running 10.5.8? After doing ./run -s I get:
Downloading PyXML...
curl: (6) Couldn't resolve host 'internap.dl.sourceforge.net'
Name: edfsadasd E-mail: dasdasd@dasda.com Date posted: January 14, 2013 - 02:01 pm Message: dasfdwqf afasdsadsada
Name: Ricardo E-mail: interface.video@terra.com.br Date posted: May 11, 2012 - 01:18 pm Message: About curl: (6) Couldn't resolve host 'internap.dl.sourceforge.net'
Solution: Change line at run file http://interapdl.sourceforge.... to http://http://sourceforge.net/projects/pyxml/files/pyxml/0.8.4/PyXML-0.8.4.tar.gz
Name: VJ E-mail: Private Date posted: April 02, 2012 - 10:17 am Message: Hey Dan,
I'm currently putting a version of this onto an iMac running snow leopard and have plans to put it onto a linux server as well. Maybe I could give you some updated information when it's complete. Should I just contact you at Low End Mac?
Name: Ron E-mail: Date posted: March 09, 2012 - 01:01 am Message: Dear Dan,
Indeed, my article is old. I have since been using Google's services in conjunction with my Macs. I fear I have no time to revisit the concept at the moment. Feel free to use this article as a starting point to your research, and to re-use any portion of it you see fit. If you are successful, send me the link to your tutorial and I'll post it here.
Name: Dan Knight E-mail: Private Date posted: March 08, 2012 - 11:59 pm Message: Ron, I use older Macs and versions of OS X, and I am frustrated that iCloud will not work with anything prior to Lion. I want to set up a server on my Intel Mac mini (OS X 10.6) so my OS X 10.4 and 10.5 Power Macs can sync iCal and Address Book. Your article is now two years old, and I'm wondering how much has changed since them. Perhaps we could work together to update this and adapt it for Low End Mac, where we support a lot of people using "outdated" Macs and versions of OS X.
Name: lukas E-mail: Private Date posted: February 29, 2012 - 06:02 pm Message: quick question, I accidentally put the first folder one level up before starting the installation. Effect - my home directory has bunch of folders and files.. what should I do? move them, re-install?
Name: Ron E-mail: Date posted: December 17, 2011 - 11:58 am Message: I am afraid I no longer maintain this thread. I am working now with a combination of Google, ios and os x, and it all works nicely for me. With iCloud, I think we don't really need this tutorial. Perhaps just for small business environments. Take what you can from this, and good luck!
Name: Turbovin E-mail: Private Date posted: December 17, 2011 - 12:51 am Message: Not sure if this threadcis still active. My requirement is to have multiple gmail accounts as the sources of contacts - family common, work, wife's work, son's school and so on. Would like to keep family common synced across all the devices - 3 iphones & 2 ipads + 1 mba and each individual account on top of the common one.
Ical and mail in lion along with an App called today has solved has solved the calendar, tasks and notes issue on the mac side, but the adress book still remians - especially on the mac. The iOS devices are fine to handle all this even the multiple contacts. An app called gTasks takes care of the tasks, and a little tweaking makes notes work with gmail notes.
Had to physically import the contacts seperately from gmail in to the Address Book. That piece of book is the only out-of-sync db on my mac.
I am not a mac person. Am a very recent convert and such have lots of legacy Windows stuff still being used including Microsoft Windows Home Server.
I thought, moving to Apple, everything will be seamless and smooth. Maybe, I thought wrong.
Any suggestions?
Thanks
Name: PhilG E-mail: Private Date posted: May 12, 2011 - 04:55 pm Message: XCode 4 and ppc assembler:
before run -s type:
export ARCHFLAGS="-arch i386 -arch x86_64"
Name: Stuart Stokes E-mail: Private Date posted: April 26, 2011 - 05:23 pm Message: Hi All,
further to my post below I now have the server running!
However, I now have another problem. Ideally, I would like to have the option of seeing all people's calendars on the server so that I can easily see what people are up to.
Any help greatly received.
Cheers
Stu
Name: Stuart Stokes E-mail: Private Date posted: April 21, 2011 - 12:24 pm Message: Hi There,
I am almost there but keep getting problems with TCP listening. If I try the SSH route and using only 127.0.0.1 in the caldavd-dev.plist can I perform the next steps from my computer or do I need to be outside of our internal network?
Or, do I have the IP of this computer and 127.0.0.1 listed. Ideally, I would like to access externally and we do have a static IP so am I best to insert all IP's and open ports etc?
Sorry for the long post, but I am very keen to get this working as a number of our workers are juggling more than one diary.
Cheers
Stu
Name: Marcelo Guinea E-mail: Private Date posted: April 12, 2011 - 05:32 pm Message: I had problems with Xcode 4 since it doesn't have the PPC assemblers required. Eventually, I had to copy back the ppc assemblers from a previous version of Xcode, the folders ppc and ppc64 from the location
/usr/libexec/gcc/darwin/
Terrible workaround... but it did work for me!
Name: t E-mail: Private Date posted: February 23, 2011 - 03:33 am Message: Open:: CalendarServer/ config/ accounts.xml
Accounts Settings
It cost me 6 hours to find the actual source on macosforge. All other Releases are 100% outdated and even couldn't find the right python libs.
WHY DO WE HAVE TO COMPILE SUCH A TINY APPLICATION ???
One link to ZIP-FILE would save many many people bloody time. I don't want to get a developer to share my calendar !
Apple - wake up !
Name: tacheles E-mail: Private Date posted: February 23, 2011 - 03:32 am Message: Gentleman OS X Client 10.6.6 running iCal Server
xcode4 including UNIX Package ! (3.2 forget it)
cd Library mkdir calendar cd calendar
svn checkout http://svn. macosforge.org /repository/ calendarserver/ CalendarServer/ trunk CalendarServer
cd CalendarServer ./run -s
./run
Name: tacheles E-mail: Private Date posted: February 22, 2011 - 10:33 pm Message: Oh my goodness - could anybody update this website !!! How many people running in this trap here.
PLEASE UPDATE THE LINE WITH LINK TO::
svn checkout http://svn.macosforge.org/repository/calendarserver/CalendarServer/trunk CalendarServer
Otherwise you run in totally outdated trouble.
THANK Youuuu
Name: stacey lang E-mail: stacey.lang@gmail.com Date posted: January 22, 2011 - 12:06 am Message: id like to totally delete this from my system now as i'm using mobile me (for many reasons having to do with off-site users), and it's continuing to send commands. how do i get stop?
Name: Dave E-mail: Private Date posted: December 28, 2010 - 06:29 am Message: @Joeri - yes, the site appears to be gone. Try downloading Pyflakes from http://pypi.python.org/pypi/pyflakes and comment out the line 'svn_get "Pyflakes" "${top}/Pyflakes"...' in build.sh
Name: Jane E-mail: jy@chalkconsultancy.com Date posted: December 26, 2010 - 04:46 pm Message: Couldn't seem to get past the first steps about:
cd CalendarServer ./run -s
just says
Unpacking PyXML from cache...
gzip: stdin: not in gzip format
Applying patches to PyXML in /Users/chalkserver/calendar/PyXML-0.8.4... ./run: line 309: cd: /Users/chalkserver/calendar/PyXML-0.8.4: No such file or directory
- any help would be greatly appreciated.
Name: Joeri E-mail: jrtemp@gmail.com Date posted: December 22, 2010 - 05:34 pm Message: fyflakes is down..? divmod.org doesn't work at all.
Name: A. Igel E-mail: Private Date posted: December 18, 2010 - 07:12 pm Message: There's a problem on running the server:
Silence:CalendarServer admin$ ./run -s
Downloading PyXML...
curl: (6) Couldn't resolve host 'internap.dl.sourceforge.net' Silence:CalendarServer admin$
Name: Vasya E-mail: kvocha@gmail.com Date posted: November 01, 2010 - 01:38 pm Message: Can't find ContactsServer here : http://svn.macosforge.org/repository/calendarserver/ContactsServer/
Name: Christian E-mail: Private Date posted: October 19, 2010 - 07:17 pm Message: Joochen: they have merged now. But you can inactivate caldav in the settings-files if you want.
I just successfully installed CalenderServer on Ubuntu, with both CalDAV and CardDAV working. Both Calender and Contacts work in OS X 10.6 (ical and addressbook) and on iPhone 3GS (iOS 4)
I have tried to get i to work for a month. And removed and redid allt steps and now it works great! Read the comments on this post before you ask questions :)
Name: Joochen E-mail: Private Date posted: October 12, 2010 - 09:43 pm Message: Hey folks, am I blind or are the svn sources not available anymore on the site: svn checkout http://svn.macosforge.org/repository/calendarserver/ContactsServer/ does not work ... Did the project merge the sources of CalendarServer and ContactServer? I only want to install the CardDav contactserver. Can anyone help me? Thx in advance!
Name: Dani E-mail: contact@buechele.cc Date posted: September 16, 2010 - 04:34 pm Message: Connecting to the server using Address Book (Snow Leopard) worked fine. But I have trouble accessing it via iPhone (iOS 4.1). Can anyone help me?
Thanks a lot.
Name: EkDor E-mail: Private Date posted: September 01, 2010 - 04:30 pm Message: Ron, sorry to hear your not interested any more; I was more than pleased to find this tutorial and think it's a nice alternative to buying and installing Server X. I don't want to do that as I'm using an iMac that is in use already and have no desire to mess with reinstallation, or pay for something that I feel should be included with the software I already paid for.
I am about to try the CardDav tutorial as that bit I haven't got running via other means yet. For anyone who is having trouble with CalDAV follow this link:
http://www.timefold.com/osx/tips/webdavical.html
I followed it and worked well. The author does assume a certain amount of familiarity but I managed and mine is quite low. It is a different approach. It also works without user log-in being required as it's setup under its own user _www which starts when the computer is booted. Only issue is each calendar can only be edited by one user. I assume this is also the case with the method outlined in this tutorial?
I'll try check in the near future if anyone has questions about the tutorial I posted link to here. I might be able to help. Cheers,.
Name: Brett Jones E-mail: calacode2002@hotmail.com Date posted: August 31, 2010 - 10:04 am Message: Great tutorial - I setup my CardDAV server successfully and using the Atmail as a "client" to my CardDAV server - My employees and contractors love it.
Great to see CardDAV/CalDAV becoming more popular vs the closed-solutions such as Activesync
Name: Ron E-mail: Date posted: August 29, 2010 - 06:02 am Message: Guys, I never ran into this problem. As I said in the tutorial, this is all highly developmental, so things must have changed and broke the simplicity of the build. Beyond Ken's suggestion I cannot help. There has to be a build.sh file in the support directory.
Another confession: I am not highly motivated to rework the tutorial since I have purchased an Android phone. The Google method of syncing works well for me.
Name: EkDor E-mail: Private Date posted: August 29, 2010 - 03:27 am Message: I have got the same error as Sean. Have tried a couple of times. I have no "build.sh" file what so ever to edit. But realised I didn't have xcode installed, as far I could tell. Have installed it and started fresh.
Seeing how it goes... waiting...
Hmm nothing has changed. Message quoted bellow. Note I substituted names only:
###
100 1204 100 1204 0 0 1 0 0:20:04 0:18:09 0:01:55 345 Unpacking PyXML from cache...
gzip: stdin: not in gzip format
Applying patches to PyXML in /Users/NAME/calendar/PyXML-0.8.4… ./run: line 309: cd: /Users/NAME/calendar/PyXML-0.8.4: No such file or directory COMPUTER:CalendarServer NAME$
###
Really have no idea what to do. I have previously setup iCal to share using epache2 webDav. Would this have something to do with it. I wouldn't think so at this stage anyway.
Cheers,. EkDor
Name: Ken E-mail: Private Date posted: August 24, 2010 - 02:55 pm Message: Sean,
I ran into the same problem. To work around you need to edit ./support/build.sh to correct the download URL for PyXML. Search for PyXML.
local px="PyXML-0.8.4"; py_dependency "PyXML" "xml.dom.ext" "${px}" "http://cdnetworks-us-1.dl.sourceforge.net /project/pyxml/pyxml/0.8.4/${px}.tar.gz";
In order to get this comment posted I had to add a space in the middle of the URL - The comment tool was complaining that things are too long.
Name: Sean E-mail: Private Date posted: August 17, 2010 - 02:27 am Message: i seem to be having a problem unpacking PyXML. Here is the relevant info from terminal:
PostgreSQL installation complete.
Using system version of Zope Interface.
Downloading PyXML... % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 1204 100 1204 0 0 1 0 0:20:04 0:18:00 0:02:04 298 Unpacking PyXML from cache...
gzip: stdin: not in gzip format
[snip]
line 142: cd: /Volumes/Data/calendar/PyXML-0.8.4: No such file or directory Sean-MacBook:CalendarServer sean$
Name: nebolsin E-mail: Private Date posted: August 11, 2010 - 04:49 pm Message: Thank you!!! I'm trying!
Name: Ron E-mail: Date posted: August 11, 2010 - 04:37 pm Message: Nebolsin - install the Developer Tools (XCode) from the MacOSX DVD before you do anything.
Name: nebolsin E-mail: Private Date posted: August 11, 2010 - 04:33 pm Message: Hello! Thank you very much for your work! I have next problem, I hope you can help me.
svn checkout http://svn.macosforge.org/repository/calendarserver/CalendarServer/trunk CalendarServer ... [bla-bla-bla] ...
Checked out revision 6045. localhost:~ Elena$ cd CalendarServer localhost:CalendarServer Elena$ ./run -s
... [bla-bla-bla] ...
Removing build directory /Users/Elena/postgresql-8.4.4/build... Removing pyc files from /Users/Elena/postgresql-8.4.4... Building PostgreSQL... checking build system type... i386-apple-darwin10.4.0 checking host system type... i386-apple-darwin10.4.0 checking which template to use... darwin checking whether to build with 64-bit integer date/time support... yes checking whether NLS is wanted... no checking for default port number... 5432 checking for block size... 8kB checking for segment size... 1GB checking for WAL block size... 8kB checking for WAL segment size... 16MB checking for gcc... no checking for cc... no configure: error: no acceptable C compiler found in $PATH See `config.log' for more details.
__________
What to do?
Name: tigger E-mail: api2309@googlemail.com Date posted: July 20, 2010 - 07:25 am Message: HI,
thanks for the great guide. CardDAV and CalDAV up and running. Both together after copying carddav-dev.plist to calddav-dev.plist and activating both services within the file.
iphone with ios 4 suports both services. my problem: I need a carddav-client to publish my local address book under 10.5 (leopard) - does anybody has an idea??
thanks in advance.
Name: Ron E-mail: Date posted: June 22, 2010 - 02:46 pm Message: The service is one now. As for open directory - should be possible, but it is not documented anywhere. You can experiment, and if it works - I would love to incorporate your results into the tutorial.
Name: john E-mail: Private Date posted: June 21, 2010 - 10:07 pm Message: Although they are bundled together now, do they still run as separate services? Is there a way still run just one (for instance the CardDAV service?) also -- is there a way to tell carddav to use open directory for authentication instead of building an XML file of users and groups?
Name: Ron E-mail: Date posted: June 17, 2010 - 07:43 am Message: Dear Sebastian,
The tutorial was tested and written on 10.6. I cannot help you, since I do not have a machine running Tiger.
Name: Sebastian Adorján Dyhr E-mail: Private Date posted: June 16, 2010 - 08:52 pm Message: Hi Am I missing something, or does the software only work for 10.5/10.6? I've managed getting the svn from the server after digging around and changing the path.
I had to update my python and link to the right distro 2.6 instead of the by Apple supplied 2.3
But then I get errors from the run-command complaining about problems with PyOpenDirectory
I tried googling and it seems PyOpenDirectory doesn't work on 10.4, is that so?
/Sebastan
Name: Ron E-mail: Date posted: June 04, 2010 - 12:38 pm Message: As I posted below, the calendar server and the contacts servers have merged. The new download command is:
svn checkout http://svn.macosforge.org/repository/calendarserver/CalendarServer/trunk CalendarServer
The port for both iCal and Address Book will now be the same, naturally. I will update the guide soon.
Name: Michael E-mail: Private Date posted: June 04, 2010 - 10:58 am Message: Unfortunately, the SVN repo of the contactsserver doesnt exist anymore, so the call: svn checkout http://svn.macosforge.org/repository/calendarserver/ContactsServer/
doesnt work. Where can i get a snapshot of the contactsserver?!
Name: samiam E-mail: smarks.other@gmail.com Date posted: June 04, 2010 - 01:21 am Message: Hi, I managed to get the ical server up and apparently working, but when I tried to get the contacts server working, I had less good luck. I assume the run command should run both now? If not, I could not find
cd contacts/ContactsServer ./run
Here's the error I get is:
Safari can’t open the page “http://10.0.1.11:8800/” because Safari can’t connect to the server “10.0.1.11”.
is in my plist as per instructions. any debugging hints appreciated. thanks.
Name: Ron E-mail: Date posted: May 23, 2010 - 08:20 am Message: Hi Cal,
I am sorry this did not work for you, but it is also the least secure way of connecting to the calendar remotely.
Two things you should know: 1. If you were trying this configuration from within your home network, many routers don't allow loop-back. That means that your router cannot resolve the no-ip address of itself. You should try it from an outside location.
2. It is safer and quite easy to use an SSH tunnel for the connection. Just activate "Remote Login" from the sharing tab of the System Preferences of the server, and forward port 22 in the router to this computer. Configure the server and the client so that the primary connection is to 127.0.0.1.
I sent you specific instructions via email. I will add them to the tutorial soon.
Name: Cal E-mail: Private Date posted: May 23, 2010 - 01:50 am Message: I'm using no-ip on leopard (10.5.8) and I can't seem to get the calendar server to run through the ports. In caldavd-dev.plist, I've entered the name of the URL (not the ip) in the ServerHostName field and in the BindAddresses array, I've entered the 127.0.0.1 (localhost) and the local ip from the Airport Base Station that's assigned to the computer. The third field has the name of the URL again, not the ip.
In Airport Utility, I've passed UDP and TCP ports 8008 and 8443 through to the IP of the server. No joy. If I skip the no-ip URL and just use the IP and localhost, everything works great, but when I try using it I get an error "twisted.internet.error.CannotListenError: Couldn't listen on :8008: (49, "Can't assign requested address")."
Any ideas? Thanks!
Name: Ron E-mail: Date posted: May 15, 2010 - 11:12 pm Message: Well, here are some tips until I find the time for a general rewrite:
The ContactsServer branch has been merged into the general CalendarServer trunk. To check out the combined version, your svn command should be (from within your home folder):
svn checkout http://svn.macosforge.org/repository/calendarserver/CalendarServer/trunk CalendarServer
The rest of the tutorial will be pretty much similar, only with different locations of the ContactsServer files (they are hiding in the CalendarServer folders), and the same port for both servers.
I hope this helps in the meanwhile.
Name: kn3pp E-mail: me@kn3pp.se Date posted: May 15, 2010 - 10:51 pm Message: Hi.. Ive successfully set up the calendarServer.. great guide!
however.. it seems that the CardDAV server is merged(?) and removed so some kind of update is needed here i think.. or pointers how to fix the broken svn-url for the CardServer..
thanx ;)
Name: garrett E-mail: Private Date posted: May 15, 2010 - 08:02 am Message: OK my bad. New computer. Xcoce not installed. Installed now and its working (so far).
Name: garrett E-mail: Private Date posted: May 15, 2010 - 07:50 am Message: Hi. I got an error when I tried running the ./run -s command:
garrett-A102:CalendarServer gmn$ ./run -s
Building PyXML... unable to execute gcc-4.2: No such file or directory error: command 'gcc-4.2' failed with exit status 1
I am using an Intel iMac running 10.6.3.
Any ideas?
Thanks
Name: Ron E-mail: Date posted: May 13, 2010 - 05:43 pm Message: @Sam:
I need to find some time to see how the integrated server (both CalDAV and CardDAV) is coming along, and update my tutorial. It is possible that they removed the 2.3 version. I am sorry I can't do it right away.
@Ritchie:
The Pro version exists. It is called "Mac OS X Server", and you can feel free to purchase it. Since the core of the server is open source, Apple had to release it - but the GUI goodness is exactly their excuse for charging money.
On the up side, the moment you are done with setting up - it simply works, and you don't have to touch any configurations again.
Name: Ritchie E-mail: Private Date posted: May 13, 2010 - 05:28 pm Message: Ok, this proves that these software work.
Now, how do we make it more pro ?
How do we interface it with the User management in the System Pref. Pane on the Mac so that I don't see everyone's password ?
How do I install these as System software ? (Under /Library ... )
Ritchie
Name: Sam E-mail: Private Date posted: May 06, 2010 - 05:20 pm Message: Hi, When I follow these instructions, I don't get very far. I think something might have changed.
My svn checkout ends with:
A CalendarServer/calendarserver/CalDAVClientLibrary/trunk/README Checked out revision 5570. svn: '/CalendarServer/tags/release/CalendarServer-2.3' does not appear to be a URL
then when I cd in CalendarServer, I only see:
pwd /Users/sam/calendar Stone:calendar sam$ cd CalendarServer/ Stone:CalendarServer sam$ ls calendarserver
any help appreciated.
Thanks in advance and sorry for the bother.
S.
Name: Ron E-mail: Date posted: May 04, 2010 - 04:01 pm Message: No, the guide is not updated. I also found a solution for reliably launching the server at login, which I have not yet included. Can you give me the link to the merged server? I'll test it and rework the guide.
LDAP is a directory server - you can poll information from it, but you cannot synchronize. CardDAV allows sync.
Name: lg E-mail: Private Date posted: May 04, 2010 - 03:12 pm Message: Is the guide updated for the merged versions of the servers?
Best regards and thanks for a very detailed guide!
(btw, what is the relationship between CardDAV and LDAP - can they be integrated?)
Name: Ron E-mail: Date posted: April 07, 2010 - 09:30 am Message: Dear Gads,
Thank you for the input. I am sorry for the delay in my reply. I did not try switching users on the client machine; it seems to me that you have to make sure that the data directories are separate, and that different users and different groups are defined in the xml files.
Please post again and include a private email address, so that I can contact you. I want to hear more of your progress and experiences, and if indeed the two projects have merged - I need to update my guide.
Name: Gads E-mail: Date posted: March 22, 2010 - 10:35 am Message: Thanks for your Response Ron!
The current problem is, the I setup on user on the mac like your tutorial. Now I switched to another user - I set it up the same way. But it doesn't show the contacts. Caldav works as expected. In the accesslog on the server I only see some PROFINDs ... in Adressbook it just spins for a second. If I create a Card - it's not save on the server.
But nevertheless I'm trying to get it further :) If you have any suggestions - please let me know.
btw.: I'm using svn trunk - as carddav was merged. It's running on a linux server. For the one user it now works with https. (Also I tried http - it's just the same)
Another bug in adressbook: If you copy a Card with two phonenumbers - both in one category (f.i. work) - only the first one survives.
Name: Ron E-mail: Private Date posted: March 21, 2010 - 06:44 pm Message: I am afraid you did not provide enough information for me to know what's wrong. Try to go through the tutorial again, and see if you missed anything.
Name: Gads E-mail: Date posted: March 21, 2010 - 05:09 pm Message: Thanks :)
I got on vlient running with CardDav. But the second doesn't see anything...
Name: Ron E-mail: Private Date posted: March 11, 2010 - 12:51 am Message: It seems that the startup scripts don't always work. I am experimenting with adding delays to them, and I'll post the corrected ones as soon as I get them to work.
-Ron
|
Feel free to enter your comments and/or questions below.
|
Powered by The Easy PHP Guestbook