Menschen, die von Berufs wegen viel unterwegs sind, benutzen üblicherweise Terminkalender. Haben diese Menschen dann auch noch Familie, möchte die möglicherweise ebenfalls gerne auf dem Laufenden gehalten werden, wann man mal zu Hause anzutreffen ist und wann nicht. Altmodischerweise könnte man einen Kalender in die Küche hängen oder gelbe Zettel an den Kühlschrank kleben - oder man denkt kompliziert und versucht, über einen CalDav-Server den privaten und geschäftlichen Kalender zu synchronisieren. Dieses Experiment wagte ich dieser Tage. Ein kleiner Erfahrungsbericht.
Einleitung
Die Ausgangssituation ist folgende: Geschäftlich nutze ich Microsoft Exchange und Outlook, um meine Termine zu planen. Privat hatte ich bislang einen Kalender im Web, der auf Horde basierte und in den jeder schauen konnte, der das Recht dazu hatte zu sehen, wo ich mich jeweils befunden habe.
Mit dem Umstieg auf meinen neuen Blackberry 9600 Bold, der mit einem recht brauchbaren Kalender und einer ebenso brauchbaren Synchronisationssoftware daherkommt, bot es sich an, mal etwas Neues auszuprobieren. Zu Hause stehen auf allen Schreibtischen MacMinis, die serienmäßig mit iCal ausgestattet sind, der hauseigenen Kalendersoftware von Apple. Das alleine würde erst einmal nicht wirklich helfen - aber iCal wiederum kann sich mit CalDav-Servern synchronisieren - womit eine einfache Möglichkeit besteht, auf mehreren Computern den gleichen Kalender zur Verfügung zu stellen. In dieses Kalendersystem müssen nun irgendwie meine geschäftlichen Termine aus Outlook eingespeist werden - und gleichzeitig sollen alle Termine zusammen auf meinem Blackberry zu sehen sein.
Die Lösung für diese Konstellation sieht folgendermaßen aus: Zunächst einmal nutze ich die Blackberry-Synchronisationssoftware, um alle relevanten geschäftlichen Termine aus Outlook in den Blackberry-Kalender zu transferieren. Anschließend synchronisiere ich den Blackberry-Kalender - ebenfalls unter Zuhilfenahme der Blackberry-Synchronisationssoftware - an einem der Macs zu Hause mit dem "Familienkalender" auf dem CalDav-Server. Leider kann sich der Blackberry noch nicht direkt mit einem CalDav-Server synchronisieren - dann könnte man auf diese Prozedur sogar verzichten und die Termine würden mit der Outlook-Blackberry-Synchronisation automatisch auch auf dem CalDav-Server landen. Vielleicht ergänzt RIM ja die Funktionalität irgendwann entsprechend.
Um zu meiner geplanten Lösung zu kommen, musste ich folgende Schritte durchführen:
- Einrichten des CalDav-Servers
- Konfiguration von Apple iCal zur Kommunikation mit dem CalDav-Server
- Konfiguration der Synchronisation zwischen Outlook und Blackberry
- Konfiguration der Synchronisation zwischen iCal und Blackberry
Das Ergebnis ist nun ein weitgehend automatisierter Datenaustausch zwischen geschäftlichem und privatem Kalender, bei dem sogar eine individuell konfigurierbare Filterung der zu übertragenen Termine möglich ist.
Einrichten des CalDav-Servers
Erster Schritt sollte die Installation eines CalDav-Servers sein. Ich entschied mich für DaviCal, welches auf Linux läuft und neben Apache, PHP noch einen PostgreSQL-Server verlangt. Ein passender Linux-Server mit installiertem Fedora 12 stand bereit, der Download von DaviCal von der Homepage des Projektes war schnell erledigt. Das ReadMe-File führte auf einigermaßen auf die richtige Spur, wenn einige Installationsvoraussetzungen auch verschwiegen oder versteckt werden.
Tatsächlich sollten auf dem Linux-System mindestens folgende Pakete installiert sein, um DaviCal zu betreiben:
- Apache: 1.3.x oder 2.x.x
- PHP: 5.0 oder höher
- PostgreSQL: 8.1 oder höher
- AWL PHP-Skripte
Bei letzterem handelt es sich um eine PHP-Skriptsammlung des Autors von DaviCal, die von seiner Homepage heruntergeladen werden kann und einfach auf dem Server an passender Stelle abgelegt und per Eintrag in die php.ini in das existierende PHP-System eingebunden wird. Es ist auch die einzige Komponente, die nicht im Fedora 12-Repository enthalten ist und wirklich separat heruntergeladen und installiert werden muss.
Ein Hinweis noch zur Installation des PostgreSQL-Server: Unter Fedora gibt es ein Paket mit der Bezeichnung "postgresql", welches nur die Client-Komponenten beinhaltet. Der Server selbst ist im Paket "postgresql-server" enthalten - kann man leicht verwechseln, wenn man es nicht jeden Tag macht.
Die Installation von DaviCal beschränkt sich letztlich auf das Kopieren der im Tar-Archiv enthaltenen Dateien an einen geeigneten Ort im Filesystem. Ich habe mich für /usr/local/davical entschieden.
Anschließend muss die Postgres-Datenbank angelegt werden - entsprechende Skripte sind im Paket von DaviCal enthalten und können ohne irgendwelche Anpassungen ausgeführt werden. Hier noch einmal die auch in der Installationsbeschreibung von DaviCal enthaltenen Schritte (ich unterstelle eine offene Shell und aktuelle Position im Wurzelverzeichnis von DaviCal):
su postgres
createuser --no-createdb --no-createrole davical_app
dba/create-database.sh
Der letzte Befehl startet die eigentliche Erzeugung der Datenbank und liefert als Resultat auch das Initialkennwort für den DaviCal-Administrator. Das sollte man sich notieren - es wird für die spätere Konfiguration von DaviCal benötigt.
Die weitere Konfiguration von DaviCal ist recht unkompliziert. Das ReadMe-File schlägt für die Einbindung in Apache-Konfiguration entweder einen logischen Link aus einem existierenden Apache-Webroot auf das Document-Root des DaviCal-Servers oder die Einrichtung eines Virtual Host in der Apache-Konfiguration vor. Ich habe mich für keine der beiden Lösungen entschieden und stattdessen einen Alias auf das DaviCal-Dokumentenverzeichnis in der Apache-Konfiguration eingerichtet. Das lässt mir fast alle Konfigurationsoptionen eines virtuellen Hosts offen, ich benötige jedoch im Unterschied zu dieser Möglichkeit keine zusätzliche IP-Adresse / keinen eigenen Port für den DaviCal-Server. Die entsprechende Sektion der httpd.conf sieht folgendermaßen aus.
Alias /calendar "/usr/share/davical/htdocs"
allow from localhost
allow from 192.168.0.0/24
deny from all
Durch die Einschränkung des Zugriffs stelle ich sicher, dass aus dem Internet keine Verbindung mit dem CalDav-Server aufgebaut werden kann - was momentan gewünscht ist. Sollen Clients auch aus dem Netz mit dem Server kommunizieren, müssen die Allow-Statements entsprechend angepasst werden. Vor dem ersten Start von DaviCal muss diesem per Konfigurationsdatei noch der Connection-String für die Verbindung zur Datenbank migeteilt werden. Die entsprechende Konfigurationsdatei wird im Verzeichnis /etc/davical erwartet und muss die Bezeichnung [systemname]-conf.php haben, wobei [systemname] für den vollständigen DNS-Namen des Servers steht, auf dem DaviCal installiert ist. In meinem Fall heißt die Datei kronos-conf.php und hat folgenden Inhalt:
domain_name = "www.solvatec.com";
$c->admin_email = '
Diese E-Mail-Adresse ist gegen Spambots geschützt! Sie müssen JavaScript aktivieren, damit Sie sie sehen können.
';
$c->system_name = "SOLVATEC Calendar Server";
$c->pg_connect[] = 'dbname=davical port=5432 user=davical_app';
Die meisten Angaben sind Standardangaben und müssen nicht verändert werden, lediglich die Domäne, die Admin-Mailadresse und der Systemname sollten zwingend angepasst werden.
Die restliche Konfiguration passiert dann über die Weboberfläche von DaviCal, die ich in meinem Fall über die URL http://kronos/calendar (entsprechend den Einstellungen in der httpd.conf) erreiche.
Nach dem Anmelden - dazu benötigt man das Administrator-Kennwort, welches vom Datenbankinstallationsskript generiert worden ist - gelangt man in eine Art Informationsbildschirm, von dem aus man Benutzer, Beziehungen und andere Ressourcen administrieren kann.
Für meinen Zweck muss ich hier lediglich einen Benutzer anlegen und diesem einen Kalender zuweisen. Diesen Benutzer verwende ich dann später auf allen Computern, auf denen dieser Kalender eingesehen und bearbeitet werden können soll.
Einrichten von iCal für den Zugriff auf den CalDav-Server
Apples iCal 3.0 untersützt von Hause aus CalDav-Server, insofern gestaltet sich die Einrichtung an dieser Stelle recht unkompliziert. In den Einstellungen von iCal erstellt man einen neuen Account vom Typ "CalDav" mit folgenden Einstellungen:
Nach der Bestätigung dieser Einstellungen meldet iCal, dass der CalDav-Server, jedoch keine Kalender gefunden werden konnten. Diese Meldung kann man an dieser Stelle getrost ignorieren - man klickt einfach auf "Weiter" und gelangt so in die Details der Einstellungen, wo DaviCal-spezifische Einstellungen vorgenommen werden müssen, die ein wenig von dem abweichen, was iCal hier vorschlägt:
Anschließend wird der neue Kalender angezeigt, wobei iCal Termine aus mehreren existierenden Kalendern elegant in einer Kalenderansicht kombiniert und über eine Farbcodierung unterscheidet. Termine lassen sich so schnell von einem Kalender in einen Anderen Verschieben - das ist wirklich gut gelöst.
Damit wäre alles vorbereitet für den ersten Auftritt des Blackberry - denn nun müssen alle privaten Termine aus iCal - also dem CalDav-Kalender - in den Blackberry-Kalender übertragen werden.
Einrichten der Synchronisation zwischen iCal und Blackberry
Dazu verwende ich die im Lieferumfang des Blackberry enthaltene Synchronisationssoftware, die auch unter Mac OS X läuft und mit iCal kommunizieren kann. Nach der Installation zunächst die erste Ernüchterung: Eine direkte Synchronisation mit dem in iCal eingebundenen CalDav-Kalender scheint nicht möglich. Dieser wird hier als schreibgeschützt dargestellt, obwohl man in iCal durchaus Termine direkt in einem CalDav-Kalender anlegen kann. Es gelingt mir zunächst nicht. Dieses Manko zu beheben.
Also landen alle Termine aus dem Blackberry erst einmal in einem lokalen iCal-Kalender. Die Synchronisation selbst ist schnell konfiguriert und ebenso schnell abgeschlossen.
Zwischen iCal und dem Blackberry habe ich eine Zwei-Wege-Synchronisation eingestellt - es werden also alle Termine aus dem Blackberry in den iCal-Kalender transferiert und umgekehrt. Neue Termine aus dem Blackberry-Kalender liegen dabei erst einmal im lokalen iCal-Kalender, lassen sich aber sehr einfach in den CalDav-Kalender übertragen.
Glücklicherweise erkennt die Synchronisationssoftware beim nächsten Synchronisationslauf, dass die entsprechenden Termine bereits übertragen worden sind und legt sie nicht erneut in den lokalen iCal-Kalender. Änderungen an Termine stellen allerdings schon ein Problem dar, da die Synchronisationssoftware ja nicht direkt im CalDav-Kalender schreiben kann. Ich hoffe, dafür noch eine Lösung zu finden.
Einrichten der Synchronisation zwischen Outlook und Blackberry
Während zwischen dem privaten Kalender und dem Blackberry stets alle Termine synchronisiert werden sollen, will ich private Termine nicht im geschäftlichen Kalender und umgekehrt auch nur bestimmte Termine aus dem geschäftlichen Kalender auf Blackberry und im privaten Kalender sehen. Dieses Problem löse ich dadurch, dass ich zwischen Outlook und Blackberry eine Ein-Weg-Synchronisation einrichte. Es werden also nur Termine aus Outlook auf den Blackberry übertragen, nicht jedoch umgekehrt. So verhindere ich den Transfer der privaten Termine. Und damit nicht alle Termine aus dem geschäftlichen Kalender transferiert werden, nutze ich die Filtermöglichkeit, die das Synchronisationsprogramm zur Verfügung stellt. Es lässt sich hier einstellen, dass zum Beispiel nur Termine einer bestimmten Kategorie synchronisiert werden sollen.
Fazit
Mit wenig Aufwand lässt sich ein Kalendersystem aufbauen, in dem private und geschäftliche Termine aus zwei unterschiedlichen Systemen zusammenlaufen, mobil sichtbar und bearbeitbar sind und bei dem sich der manuell zu leistende Aufwand sehr in Grenzen hält. Leider lässt die Blackberry-Synchronisationssoftware keine direkte Synchronisation mit CalDav-Kalendern zu, ansonsten würde der Prozess noch reibungsloser ablaufen können. Aber bereits so ist die Lösung - zumindest für meine Zwecke - sehr nah am Ideal.
