iCal mit Google über das OpenSource-Tool GCalDaemon synchronisieren

GCalDaemon ist eine Anwendung um iCal-kompatible Kalenderprogramme (z.B. iCal auf MacOS) mit dem Google Calendar zu synchronisieren.

Die Software gibt es für Linux, MacOS und Windows. Im folgenden möchte ich nur auf die Installation unter MacOS eingehen.

Wichtig ist, dass bei der unten beschrieben Installation ein MacOS-Kalender einen Google-Kalender zunächst überschreibt. In Goolge Calendar kann man mehrere Kalender einrichten. Darum sollte man in Goolge Calender zunächst ein SyncCalendar eingerichtet werden, der dann mit einem SyncCalendar auf MacOS-Seite synchronisiert werden kann. Sonst verliert man all seine Termin (ich fand dies beim Rumexperimentieren mehr als ärgerlich).

Nach der Installation kann man beide Kalender verwenden. Diese synchronisieren sich dann gegenseitig.

Den GCalDemon lädt man unter http://gcaldaemon.sourceforge.net/ herunter und entpackt ihn lokal auf den Desktop. Dauerhaft legt man ihn auf dem eigenen Rechner am besten im Anwendungsordner ‚/Applications‘ ab. Der eigene Nutzername wird hier mit „SpamMe“ angegeben. Statt „SpamMe“ ist natürlich der eigene Benutzerkurzname einzutragen:

cp -r /Users/SpamMe/Desktop/gcaldaemon-linux-1.0-beta13 Folder/GCALDaemon /Applications

Nun sollte unter /Applications der Demon liegen. Dies lässt sich einfach überprüfen:


ls /Applications/GCALDaemon/

Nun wechselt man in dieses Verzeichnis und überprüft zuerst den Passwort-Encoder:

cd /Applications/GCALDaemon/bin
./password-encoder.sh

Ein Input-Prompt fragt nun nach dem Google-Passwort, dass man eingeben sollte:

Original password: XXXXXXX
Encoded password: XXXXXXXXXXXXXXX

Sample configuration options for GCALDaemon:

file.google.password=XXXXXXXXXXXXXXX
ldap.google.password=XXXXXXXXXXXXXXX

notifier.google.password=XXXXXXXXXXXXXXX
sendmail.google.password=XXXXXXXXXXXXXXX
mailterm.google.password=XXXXXXXXXXXXXXX

Das generierte Passwort sollte man sich – z.B. über die Zwischenablage – merken!

Unter MacOS verwende ich iCal als Kalender-Anwendung. Also wechsele ich nun in den iCal-Ordner,
starte iCal und erstelle dort einen neuen Kalender „GCalDaemon“ oder „SyncCalendar“:

open Library/Application Support/iCal/Sources/
open -a iCal

Der Backslash ist auf einer Apple-Tastatur übrigens auf Shift+Alt+7 😉

Den neu erstellen Kalender kann ich am Datum erkennen.

ls -Sc

In meinem Fall ist dies der Kalender mit dem kryptischen Dateinamen 770D9C33-FD94-41A1-8257-CF84AB7313F7.calendar.

Also wechsele ich ich das Verzeichnis des neuen Kalenders, um mich zu versichern, dass dies auch wirklich der neue Kalender ist:

cd 770D9C33-FD94-41A1-8257-CF84AB7313F7.calendar
less Info.plist

In dieser XML-Datei kann ich sehen, dass dies wirklich der neu erstellte Kalender ist:


<plist version="1.0">
<dict>
<key>Key</key>
<string>770D9C33-FD94-41A1-8257-CF84AB7313F7</string>
<key>Title</key>
<string>GCalDaemon</string>
<key>Type</key>
<string>com.apple.ical.sources.naivereadwrite</string>
</dict>
</plist>

GCalDaemon erwartet, dass unter dem conf-Verzeichnis Einstellungen vorgenommen werden. Eine dieser Einstellungen ist, dass man ein – wenn auch verschlüsseltes – Passwort einträgt. Dies ist fast schon ein Bug der Anwendung. Eine solche Information gehört nicht in das für jeden lesbare Application-Verzeichnis. Als Workaround schlage ich folgendes vor: ich verschiebe den conf-Ordner in mein Home-Verzeichnis und erstelle anschließend einen symbolischen Link auf mein Home-Verzeichnis im GCalDaemon-Verzeichnis:

cd /Applications/GCALDaemon
mv conf ~/.GCalDaemon
ln -s ~/.GCalDaemon conf

Auch das Log-Verzeichnis gehört eigentlich nicht in den Applikations-Ordner. Also verschiebe ich dieses Verzeichnis mit dem gleichen Workaround:

cd /Applications/GCALDaemon
sudo mv log /var/log/GCalDaemon
ln -s /var/log/GCalDaemon log

Ob die beiden symbolischen Links erstellt wurden, kann man einfach überprüfen:

cd /Applications/GCALDaemon
ls -l

Den oben ermittelten Kalender trage ich nun in die Konfigurations-Datei des GCalDaemons ein:

cd /Applications/GCALDaemon/conf
vi gcal-daemon.cfg

Unter file.ical.path trage ich die neu erstellte Kalender-Datei corestorage.ics im neu erstellten Kalender 770D9C33-7-CF84AB7313F7.calendar ein. Wichtig ist hier die komplette Pfadangame. Kalender-Name und Nutzerkurzname sind natürlich anzupassen:

file.ical.path=/Users/SpamMe/Library/Application Support/iCal/Sources/770D9C33-7-CF84AB7313F7.calendar/corestorage.ics

Das vorhin erzeugte Passwort (XXXXXXXXXXXXX) trage ich unter file.google.password ein:

file.google.password=XXXXXXXXXXXXXXXXXX

Meine GMail-Adresse trage ich file.google.username unter ein

file.google.username=spamme@gmail.com

Im Goolge-Kalender sollte man spätestens jetzt wie oben bereits beschrieben einen NEUEN Kalender anlegen („z.B. SyncCalender“), da der GCalDaemon sonst die bereits vorhandenen Termine überschreibt!

Unter https://www.google.com/calendar/render kann man eine unter Einstellungen -> Kalender -> Privatadresse über das Kontextmenü auf das iCal-Icon eine iCal-URL in die Zwischenablage kopieren. Diese URL
http://www.google.com/calendar/ical/spamme%40gmail.com/private-XXXXXXXXXXXXXXXXXXX/basic.ics trage ich unter file.private.ical.url ein:

file.private.ical.url=/calendar/ical/spamme%40gmail.com/private-XXXXXXXXXXXXXXXXXXX/basic.ics

Die Zeile file.enabled setze ich auf true:

file.enabled=true

Nun kann ich den GCalDaemon starten:

cd ../bin
./standalone-start.sh

Der GCalDaemon sollte erfolgreich starten:


INFO | GCALDaemon V1.0 beta 13e starting...
INFO | RSS/ATOM feed converter enabled.
INFO | Local time zone is Zentraleurop?ische Zeit.
INFO | HTTP server starting on port 9090...
INFO | HTTP server started successfully.
INFO | Start listening file /Users/SpamMe/Library/Application Support/iCal/Sources/770D9C33-FD94-41A1-8257-CF84AB7313F7.calendar/corestorage.ics...
INFO | File listener started successfully.
INFO | Offline file synchronization enabled.
INFO | LDAP server disabled.
INFO | Gmail notifier disabled.
INFO | Sendmail service disabled.
INFO | Mail terminal disabled.

In iCal erstelle ich nun einen Testeintrag (z.B. morgen) und warte ab, ob dieser nach einiger Zeit im Google-Kalender erscheint und umgekehrt.

Wer nicht warten möchte kann eine Synchronisation auch sofort testen:

cd /Applications/GCALDaemon/bin
./sync-now.sh

Wenn der in GCal erstellte Termin nun im Google-Kalender erscheint, kann man mit der Anwendung „Lingon“ (http://lingon.sourceforge.net/) den GCalDaemon als Startup-Item eintragen.

Ich starte Lingon, wähle „Assistant“ in der Button-Leiste, wähle „Run a job at startup“, vergebe als Label „GCalDaemon“, aktiviere, dass der Job nur startet, wenn ich einlogt bin und trage als Job „/Applications/GCALDaemon/bin/standalone-start.sh“ ein.

Tipp: Da es sich bei GCalDaemon um eine Java-Anwendung handelt, findet man GCalDaemon in der Aktivitäts-Anzeige NICHT unter GCalDaemon oder standalone-start.sh sondern unter „java“.

Nun wird mein Google Calendar regelmäßig mit meinem iCal-Kalender synchronisiert.

10 Gedanken zu „iCal mit Google über das OpenSource-Tool GCalDaemon synchronisieren“

  1. Hi, ist dieses Vorgehen auch für das Synchon von mehreren Kalendern geeignet? Werden also auch Daten, die man im Google-Kalender einträgt von iCal heruntergeladen? Wäre super und demnach die erste kostenlose online-Synchmöglichkeit bezüglich iCal. Grup, Micha

  2. Hallo Michael, ja, klar kann man mehrere Kalender synchronisieren. Daten, die man bei Google einträgt, werden in den iCal heruntergeladen. Umgekehrt werden Daten, die man in iCal einträgt, zu Google hochgeladen.

  3. Danke für die Anleitung. Ich denke ich habe sie genau befolgt, leider findet kein Sync statt. Könnte es eventuell am Leopard liegen? Wie ist da die Kompatibilität?

  4. Hallo, ich denke auch, dass es an Leopard liegt. Leopard hat nicht mehr ein einzelnes ICS-File, sondern es legt mir für jeden Termin ein eigenes ICS-File im Unterordner Events an.

    ECHT BLÖD!

  5. Ja, ich hab auch nen Abend rumgefummelt mit dem GCalDeamon. Läuft eigentlich ganz schön… Unter Tiger.. Da wir aber in der Generation Leo leben, scheint es nicht mehr zu gehen.
    Ich bin also auch sehr daran interessiert, eine Lösung zu finden.
    Die one-Way Lösung, dass man den gCalender (über ics) abonniert ist einfach nicht bidirektional, schade.

    Warten und Tee trinken?

  6. Da ich noch zu den Tiger-Nutzern gehöre, kommt mir dieses Tut sehr gelegen. Danke! Funktioniert einwandfrei. Aber wie mache ich das, wenn ich mehrere iCals in den gCal syncen will?

    Gruß
    Markus

  7. Hallo. Hast du inzwischen ausprobiert, wie es in Leopard funktioniert?
    Bei mir ist es schon hängen geblieben bei dem Punkt:

    rmert:bin renemmertens$ open /Library/Application Support/iCal/Sources/
    The file /Library/Application Support/iCal/Sources does not exist.

    wär super, wenn du was anpassen könntest.
    danke, rene

  8. Bei mir funktioniert es unter Leo mit der Einstellung:

    file.ical.path=/Users/Marcel/Library/Calendars/AE3A64B7-E7CA-40C1-AA7A-2D806E532E80.calendar/Events/*.ics

    Gruß Marcel

  9. super Marcel, funktioniert wirklich.

    ich habe nur folgendes problem: wenn ich termine in iCal lösche, dann löscht der nicht die jeweilige .ics datei (jeder termin bekommt ja jetzt ne eigene datei) in /Library/Calendar/xxx/Events/ sondern die datei bleibt bestehen. ich muss sie von hand löschen, weil sonst der termin weiter bestehen bleibt.

    is das sonst noch wem aufgefallen? is sehr unhandlich so.

Schreibe einen Kommentar zu smike Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert