Kalender und Kontakte für die ganze Familie auf einem Server? Mit Darwin CACS kein Problem.
Beim Versuch, die Kontakt- und Kalenderdaten einer kleinen Gruppe synchron halten, kommt schnell Verzweiflung auf. Abhilfe schaffen in einigen Fällen die Dienste von Google, Yahoo oder vergleichbaren Anbietern. Die beiden zuerst genannten kosten in der Basisversion nichts, überzeugen jedoch in Bezug auf die Synchronisation nicht voll immer. In der Praxis treten zu viele Probleme und Inkonsistenten auf.
Doch abseits von Preis und Leistung stellt sich vor allem ein Aspekt als größtes Hindernis heraus: Bin ich noch Herr meiner eigenen Daten? Was machen die Anbieter mit den gesammelten Adressen? Wer wertet wie meine Termine aus, und wer bekommt im Zweifel Zugriff auf die Kontakte? Wer auf diese Fragen keine klaren und zufriedenstellenden Antworten findet, oder wer in seinem Adressbuch schützenswerte Einträge beherbergt, der kommt an einer selbst gepflegten Software nicht vorbei – einer Software, wie dem Darwin Calendar and Contacts Server [1], kurz CACS.
Das Programm liegt als quelloffene Software auf Mac OS Forge zum Download bereit. Sie steht erfreulicherweise unter der Apache-Lizenz 2.0, die es jedermann erlaubt, die Software zu modifizieren, zu verteilen und vor allem frei zu nutzen, der sich an einige wenige Spielregeln hält. Der CACS bringt noch weitere Vorteile mit sich: Als einer der wenigen seiner Art arbeitet er mehr oder weniger vollständig kompatibel zu den Standards CalDAV und CardDAV. Somit ist sichergestellt, dass die Felder des Kalenders auf dem Desktop als entsprechende Felder ins Mobiltelefon gelangen.
Applikationen auf dem Linux-Desktop unterstützen die beiden Formate allerdings derzeit eher mangelhaft. So verstehen sich die klassischen PIM-Suiten teils schlecht mit dem Server, und die Hersteller von Software für mobile Endgeräte ignorieren sowohl Card- als auch CalDAV noch weitgehend. Von Haus aus unterstützen derzeit nur iOS-Geräte beide Formate, Android-Telefone verstehen sie dank zusätzlicher Apps zumindest halbwegs. Aus der Welt von Windows Phone 7 verlautete bislang nichts über Möglichkeiten zum Nachrüsten.
Hard- und Software
Um den Kontakt- und Kalender-Server aufzusetzen braucht es nicht viel. Auf Seiten der Hardware darf gern ein etwas betagterer Rechner zum Einsatz kommen. Wie bei jedem Server empfiehlt sich ein ordentlich dimensionierter Arbeitsspeicher. Unter 1 GByte sollten es nicht sein; das Doppelte erscheint durchaus ratsam – vor allem bei regem Einsatz des Servers durch viele Anwender.
Damit ist die Liste der technischen Voraussetzung schon abgearbeitet. Darüber hinaus gilt es die Energiekosten im Auge behalten. Planen Sie einen Dauerbetrieb für den eigenen Server, bietet sich ein älteres Note- oder Netbook beziehungsweise ein kleiner Rechner mit Atom-Prozessor an.
Unabhängig von der Wahl der Hardware gibt es natürlich einige Voraussetzungen hinsichtlich der Software. Unsere Wahl in Sachen Betriebssystem fiel auf Ubuntu 11.04 in der Desktop-Version. Nach der Installation der letzten Updates folgte die Installation der Pakete attr, svn, curl, libreadline-dev, zlib1g-dev, python-dev und libsasl2-dev über das Paketmanagement.
Nun fehlt nur noch der Server an sich. Für den Test gelangte die Kopie der aktuellen Quellen direkt aus dem Versionskontrollsystem auf den PC. Alternativ gibt es ein fertiges Paket in den Repositories von Ubuntu und Debian. Allerdings basieren diese auf der veralteten Version 2.4 des Servers, in der einige Funktionen fehlen.
Installation
Um den Quellcode herunterzuladen, legen Sie ein Verzeichnis namens CACS an einem Ort Ihrer Wahl an, etwa im Home-Verzeichnis. Der nächste Schritt führt auf die Kommandozeile. Per cd CACS wechseln Sie ins soeben angelegte Verzeichnis. Der Befehl:
$ svn co http://svn.macosforge.org/repository/calendarserver/CalendarServer/trunk/ CalendarServer
lädt einen aktuellen Schnappschuss der in der Entwicklung befindlichen Version herunter. Je nach Art des Netzzugangs dauert dies einen Moment. Im Test belegte der Snapshot der Revision 8047 überschaubare 33 MByte Speicherplatz. Allerdings kommen dazu im Laufe der Installation weitere Abhängigkeiten automatisch hinzu, wodurch der belegte Festplattenspeicher am Ende auf über 250 MByte anwächst.
Doch noch starten Sie die Installation nicht. Diese läuft zwar in der Regel durch, im Test trat aber ein Fehler beim Übersetzen der Quellen von memcached auf: Dadurch blieb der Compiler hängen. Abhilfe schafft ein passender Patch [5]. Dazu wechseln Sie mit dem Befehl cd memcashed-1.4.x das entsprechende Verzeichnis und spielen von dort den Software-Flicken ein:
$ patch < /Pfad/zum/Patch/fix-strict-aliasing.patch
Mit dem Befehl cd ../CalendarServer wechseln Sie erneut das Verzeichnis und starten mit dem Kommando ./run -s nun die Installation. Sie dauert je nach Rechenpower und Internetanbindung wenige Minuten bis zu über einer Stunde. Das Kommando ./run verfügt über weitere Parameter: Fügen Sie statt dem -s ein -g hinzu, lädt der Installer lediglich die Abhängigkeiten aus dem Netz.
TIPP
Rufen Sie den Installer später erneut mit der Option -s auf, aktualisiert das den Quellcode auf die jüngste Revision.
Bevor es gleich ans Einrichten geht, müssen Sie das Dateisystem noch auf den Server vorbereiten. Dazu öffnen Sie mit Root-Rechten via sudo gedit /etc/fstab die Konfigurationsdatei, die steuert, wie das System die einzelnen Partitionen einhängt. Dem Eintrag, der die für den Server vorgesehene Partition beschreibt, fügen Sie ein user_xattr hinzu, wie das Beispiel in Listing 2 zeigt.
Listing 2
UUID=f8119609-d18d-4bb8-8fbb-3b63b95c00e2 / ext4 user_xattr,errors=remount-ro 0 1
Konfiguration
Danach gilt es, noch einige Dateien zu editieren. Als erstes brauchen Sie eine Konfiguration. Es bietet sich an, die mitgelieferte Beispieldatei zu kopieren und zu bearbeiten. Duplizieren Sie diese also auf der Konsole mit folgendem Befehl:
$ cp conf/caldavd-test.plist conf/caldavd-dev.plist
Jetzt öffnen Sie die recht komplexe Datei mit einem Texteditor Ihrer Wahl. Den Eintrag nach der Zeile ServerHostName erweitern Sie um die lokale IP-Adresse des Rechners, sodass die IP zwischen <string> und </string> steht. Etwas weiter folgt das Array BindAddresses. Hier sollten Sie zwei Zeilen einfügen, ebenfalls in <string></string> eingefasst. Wie zuvor fügen Sie dort die lokale IP und die Localhost-Adresse 127.0.0.1 ein. Weitere Felder brauchen Sie für den ersten Testlauf nicht zu bearbeiten.
Jetzt benötigen Sie noch ein paar Benutzer-Accounts. Dazu duplizieren Sie die Beispiel-Datei accounts.xml mit Hilfe des Befehls
$ cp conf/auth/accounts.xml conf/auth/accounts-dev.xml
Öffnen Sie die Datei dann im Texteditor und löschen Sie alle Einträge zwischen den Zeilen <accounts realm="Test Realm"> und </accounts>. Fügen Sie die Beispieleinträge aus Listing 3 ein und speichern Sie die Datei. Ein Eintrag enthält ein optionales Element uid für den User-Namen, ein Feld guid für einen global eindeutigen Identifier sowie ein weiteres für das Passwort. Optional sind wiederum die Einträge name, first-name, last-name und email-address. Entscheidend ist in jedem Fall der Eintrag guid.
Listing 3
<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>urmel</uid> <guid>urmel</guid> <password>123456</password> <name>Urmel aus dem Eis</name> <first-name>Urmel</first-name> <last-name>aus dem Eis</last-name> </user>
Der erste Start
Den Server starten Sie mit dem Befehl ./run aus dem Verzeichnis ~/CACS/CalendarServer/ heraus. Dabei prüft das Setup nochmals die Abhängigkeiten, aktualisiert diese bei Bedarf und startet anschließend die Applikation. Es laufen nun einige Meldungen auf der Kommandozeile durch. Erblicken Sie einen Eintrag, der die Zeichenkette AMP connection established enthält, war der Start erfolgreich.
Möchten Sie den Server ohne die Abfrage der Aktualisierungen und Abhängigkeiten starten, fügen Sie dem Aufruf den Parameter -n hinzu. Ein zusätzliches -d startet das Programm als Daemon und schickt den Prozess in den Hintergrund. Der Befehl ./run -k beendet eine als Daemon laufende Instanz.
Im Webbrowser unterziehen Sie den Server einem ersten Funktionstest. Geben Sie in die Adresszeile die IP des Servers ein, gefolgt von einem Doppelpunkt und der Portnummer 8443. Vergessen Sie dabei nicht, ein https:// vor die Adresse zu setzen. Klicken Sie nun in der Weboberfläche auf den Link calendars | Users, so finden Sie dort die Einträge admin und urmel wieder. Ein Klick auf die Benutzer an sich bringt noch keine weiteren Erkenntnisse.
Für den dauerhaften Betrieb empfiehlt es sich, den Server noch ein wenig weiter zu konfigurieren. Dazu beenden Sie mit der Kombination [Strg]+[C] die laufende Instanz. Anschließend öffnen Sie erneut die Datei caldavd-dev.plist. Hier ändern Sie den Eintrag HTTPPort Port von 8008 in 0.
Damit schalten Sie den Zugriff über den ungesicherten Port ab und verhindern so das Mitschneiden von Benutzername und Passwort. Ab sofort erfolgt der Zugriff ausschließlich SSL-gesichert. Dabei nutzt der Server das mitgelieferte Zertifikat, das Sie bei Bedarf jedoch leicht gegen ein eigenes tauschen. Den Ablageort entnehmen Sie dem Eintrag SSLCertificate.
Entgegen einiger Beschreibungen im Netz benötigen Sie nur noch den Port 8443, sowohl für die Kalender- als auch für die Kontaktdaten. In früheren Zeiten, als die beiden Komponenten noch getrennt liefen, ermöglichte der Port 8843 den Zugriff auf den Adressbuch-Server. Entsprechend können Sie auch die Einträge List of port numbers ... abspecken.
Äpfel, Adressen und Kalender
In der Welt des angebissenen Obstes verstehen sich sowohl das Adressbuch von Mac OS X als auch das mitgelieferte Kalenderprogramm iCal hervorragend mit dem Server. Bei beiden spielt es keine Rolle, auf welchem Betriebssystem der Server läuft. Den Programmen genügt im aktuellen Mac OS X 10.7 die Eingabe von Serveradresse, Benutzernamen und Kennwort, um sich mit dem Dienst zu verbinden.
Kalender einrichten
Um Evolution für die Zusammenarbeit einzurichten, erstellen Sie dort zunächst über Neu | Kalender einen neuen Kalender. Im folgenden Dialog (Abbildung 1) wählen Sie bei Art: den Eintrag CalDAV aus, geben dem Kind einen Namen und ergänzen die Adresse um die IP des Servers – oder um die gewünschte dynamische URL, wenn Sie externen Zugang via Port-Weiterleitung über den Router ermöglichen. Hinter der IP beziehungsweise URL müssen Sie zwingend den Port nach einem Doppelpunkt angeben. Nun folgen noch ein Haken bei SSL verwenden sowie Ihr Benutzername.
Anschließend klicken Sie auf Server nach einem Kalender durchsuchen (Abbildung 2) und geben Ihr Passwort ein. Wählen Sie den Kalender und bestätigen Sie mit einem Klick auf OK. Der Dialog übernimmt die korrekte Adresse. Schließen und speichern Sie wiederum mit einem Klick auf OK. Der Kalender steht nun bereit, und Sie haben die Möglichkeit, nach Belieben neue Einträge hinzuzufügen.
Für den Mailclient Thunderbird existiert das Addon Lightning, das ebenfalls Zugriff auf den Kalender-Server ermöglicht. Die Standalone-Variante des Kalender läuft unter dem Namen Sunbird. In beiden konfigurieren Sie den Zugriff analog zu Evolution. Falls Sie später mehrere Kalender unter diesem Account benutzen, gilt es noch eine Kalender-ID anzufügen. Allerdings müssen Sie die URL wie folgt angeben (Abbildung 3):
https://IP_oder_URL:8443/calendars/__uids__/Ihre_GUID/calendar"

Abbildung 3: Die Adresse des Kalenders für das Thunderbird-Plugin ergibt sich nicht einfach via Knopfdruck.
KOrganizer tut sich schon schwerer: Dort fand sich im Test keine Möglichkeit, den puren CardDAV-Server ohne zusätzliche WebDAV-Installation einzubinden. Als halbwegs praktikabler Workaround für den Transfer vom Server zum Client erwies sich der Austausch via Datei: Diese rufen Sie mit dem Befehl aus Listing 4 ab und importieren sie via Neuer Kalender ins Programm.
Listing 4
$ curl -k -u Benutzer:Passwort -o calendar.ics https://IP_oder_URL:8443/calendars/__uids__/Ihre_GUID/calendar/
Der Abruf ließe sich gegebenenfalls via Shellskript und Cron-Job auch automatisieren. Einen Weg zurück, also das Kopieren der Daten auf den Server, bietet dieses Verfahren allerdings so oder so nicht.
Adressbuch
Bei der Analyse der Adressbuch-Komponenten unter Linux kam keine rechte Freude auf: Keine der drei getesteten Anwendungen sah sich in der Lage, auf den Server zuzugreifen. Lediglich CardDAV mit WebDAV-Komponente, eine LDAP-Verbindung oder auch ein Google-Account sind je nach Programm möglich. Auch von mobilen Linux-Geräten, sprich: Android-Smartphones, klappt der Zugriff auf den Server nur eingeschränkt. Von Haus aus bringt kein uns bekanntes Telefon auf Android-Basis Unterstützung für Card- oder CalDAV mit.
Die Anwendungen CardDAV Sync *[6] und Andal [7] versuchen diese Lücke zu schließen. Allerdings funktionieren beide auf nicht jedem Android-Smartphone wie gewünscht. Je nach Hersteller, Android-Version, Benutzeroberfläche und weiterer Hersteller-Anpassungen klappt in einigen Fällen zwar die Installation und Konfiguration, das Synchronisieren mit dem Server schlägt aber dennoch fehl. Manchmal bleibt auch trotz eines scheinbaren Erfolgs das Adressbuch oder der Kalender leer – so geschehen bei einem Testgerät des Herstellers HTC.
Auf einem weiteren Testgerät von Motorola ließen sich die Accounts ohne Probleme einrichten (Abbildung 4). Allerdings war anschließend nur ein Sync in eine Richtung möglich (Abbildung 5). Beide Apps riefen Daten vom Server ab, scheiterten aber beim Schreiben. Zudem gab es in diesem Fall keine Auswahl, welchem Account – also dem lokalen oder dem entfernten Adressbuch – eine neue Kontaktkarte zuzuordnen sei.
Noch schlechter als bei Android steht es um Windows Phone 7: Für dieses System war bis Redaktionsschluss keine Möglichkeit bekannt, einen CardDAV- oder CalDAV-Server einzubinden.
Ab ins System?
Haben Sie alle wichtigen Funktionen eingerichtet und läuft die Software, steht noch eine Entscheidung aus: Bleibt der Server weiter im User-Verzeichnis oder findet er seinen Weg ins System? Letzteres erledigen Sie mit Hilfe des Kommandos ./run und den Schaltern -i beziehungsweise -I. Das installiert sowohl der Server als auch die Abhängigkeiten in die entsprechenden Verzeichnisse.
Es stellt sich aber die Frage, ob sich der Aufwand lohnt. Für kleine Arbeitsgruppen oder Heimanwender ist das sicher nicht der Fall. Zudem hat es ganz praktische Vorteile, wenn das Programm aus dem Verzeichnis eines Benutzers heraus läuft: Erstens besteht so die Möglichkeit, jederzeit über das Kommando ./run -s die Bestandteile zu aktualisieren. Zweitens läuft CACS so nur mit den eingeschränkten Rechten des jeweiligen Anwenders. Die Konfigurationsdateien sollten Sie freilich dennoch per chmod 0600 vor unbefugtem Zugriff sichern.
Der dritte Vorteil liegt in der Möglichkeit, den Server schnell, einfach und restlos zu löschen, ohne die verteilten Bestandteile im System suchen zu müssen. Wer die feste Installation dennoch wagen möchte, findet im Netz [8] weitere Informationen.
Fazit
Natürlich existieren zur vorgestellten Software Alternativen. Da wäre beispielsweise Davical [9] – das allerdings den Ruf hat, beim Einrichten größere Umstände zu machen. Daneben bieten sich Sogo [10] oder eGroupWare [11] an. Beide Lösungen sind allerdings für einen kleinen Haushalt oder eine Arbeitsgruppe völlig überdimensioniert – sowohl in Sachen Ausstattung und Möglichkeiten, als auch, was die Ressourcen und die Installation angeht. Sabredav [12], eine Erweiterung für PHP-Anwendungen, tritt ebenfalls an, um Kalender und Kontakte zentral zu horten. Auch in diesem Fall gestaltet sich das Einrichten nicht ganz einfach.
Insgesamt kam im Test der Eindruck auf: Im Vergleich bietet der Darwin-CACS-Server das beste Verhältnis von Aufwand und Nutzen. Zudem versteht sich das Programm auf viele weitere Funktionen, die zum Teil weit über die beschriebenen Möglichkeiten hinausgehen – dann ist allerdings Schluss mit einfach. So unterstützt der Server beispielsweise die Integration in LDAP und den Einsatz auf einem Cluster. Festzuhalten bleibt: Die Dokumentation des Servers lässt sich allenfalls als mäßig beurteilen. Der Quellcode hingegen ist sehr gut dokumentiert.
Glossar
-
CalDAV
-
CalDAV (RFC4791) erlaubt, Termine sowie Frei- und Belegt-Zeiten zu verwalten und über HTTP zu veröffentlichen sowie mit anderen Nutzern zu tauschen beziehungsweise gemeinsam zu nutzen ([2],[3]).
-
CardDAV
-
Mit Hilfe des Standards CardDAV (RFC6352) lassen sich analog zu CalDAV Kontakt-Informationen verwalten und austauschen [4].
-
WebDAV
-
Web-based Distributed Authoring and Versioning (RFC2518). Der Standard ermöglicht es, Daten im Internet über den üblichen Port 80 bereitzustellen. Programme haben dann die Möglichkeit, auf einen Share wie auf eine Netzwerkfestplatte zuzugreifen.
Infos
[1] Darwin CACS: http://trac.calendarserver.org
[2] CalDAV: http://www.ietf.org/rfc/rfc4791.txt
[3] Groupware-Standard: http://www.linux-magazin.de/Online-Artikel/Auf-der-Suche-nach-dem-Groupware-Standard
[4] CardDAV: http://www.rfc-editor.org/rfc/rfc6352.txt
[5] Memcached-Patch: http://code.google.com/p/memcached/issues/attachmentText?id=60&aid=8380074892624334134&name=fix-strict-aliasing.patch&token=021caaac84d242389caaa64f24c53ea9
[6] CardDAV Sync: http://dmfs.org/carddav/
[7] Andal: http://www.hypermatix.com/products/andal_caldav_calendar_for_android
[8] CACS 2.3 unter Ubuntu 9.10 einrichten: http://www.deanspot.org/content/installing-darwin-calendar-server-23-ubuntu-910
[9] Davical: http://www.davical.org
[10] Sogo: http://www.sogo.nu
[11] eGroupWare: http://www.egroupware.org
[12] Sabredav: http://code.google.com/p/sabredav







