Auf der Suche nach einem guten LinuxKalender habe ich mich entschlossen, den Calendarserver
von Apple auszuprobieren. Dieser ist ein reiner Server für CalDAV und CardDAV-Daten. Er hat keine Oberfläche oder so etwas. Der Zugriff auf die Daten kann dann also z.B. mit einem Android Kalender, dem Thunderbird Kalendermodul oder ähnlichen Oberflächen geschehen.
Hier möchte ich dokumentieren, wie ich den Servber installiert habe und welche ersten Erfahrungen ich damit gemacht habe.
Ich habe mich entschlossen, einen ganz neuen Server hierfür aufzusetzen, um alle fremden Einflüsse auszuschliessen. Als System habe ein aktuelles Testing (Debian Buster vom 15.7.17) gewählt. Das dürfte zur Zeit nicht viel Unterschied vom offiziellen Stretch-Release haben, weil dieses noch nicht sehr lange her ist.
Ich habe folgende Pakete zusätzlich zu einem Mini-Buster installiert. (Kann sein, das manche nicht wirklich nötig gewesen wären, aber das hier ist, was ich gemacht habe):
joe, sshd, aptitude, xattr, postgresql-client binutils gcc
Da ich einen eigenen, grossen Postgres-Server im Netz betreibe und die Daten dort gerne weiterverarbeiten möchte, habe ich diesen als externen Server benutzt. Das variiert die Installation natürlich und macht sie etwas einfacher. Informationen, wie der Server in beiden Stellen einzurichten ist, stehen aber gut erklärt in der Datei /usr/share/doc/calendarserver/README.Debian.gz
Die Calendarserver-Dokumentation sagt, das auf dem Filesystem xattr-Attribute eingeschaltet werden müssen. Dies kann man mit folgendem Befehl prüfen, der die Ausgabe "user_xattr" ergeben sollte.
# cat /proc/fs/ext4/sda1/options | grep xattr
Der erste Schreck war, das es auf Grund einer scheinbaren Inkompatibilität kein offizielles Debian-Paket in Debian Stretch gibt. Ich habe ein bisschen recherchiert. Es gibt eine Version 3.2 in Wheezy und eine 7.0 in Sid. Und es gibt einen grave Bug
auf Grund einer Inkopatibilät mit einer aktuelleren Bibliothek, die in Buster enthalten ist, an dem wohl zur Zeit gearbeitet wird. Upstream ist die Version 9.0 aktuell. Ich möchte es dennoch lieber mit der aktuelleren Version 7.0 versuchen...
Erst habe ich wie in der README-Datei angegeben, eine Datenbank {caldav} und einen Datenbank-User {caldavd} auf dem PostgreSQL-Server erstellt. Dann habe ich die entsprechende Schema-Datei gestartet, die die Datenbank eingerichtet hat:
psql -h postgresql.local -f /usr/lib/python2.7/dist-packages/txdav/common/datastore/sql_schema/current.sql caldav caldavd
Nun habe ich in der Datei {/etc/caldavd/caldavd.plist} den Eintrag für den DBType angepasst:
<!-- TB -->
<key>DBType</key>
<string>postgres</string>
<key>DatabaseConnection</key>
<dict>
<key>endpoint</key>
<string>tcp:postgresql.local</string>
<key>database</key>
<string>caldav</string>
<key>user</key>
<string>caldavd</string>
<key>password</key>
<string>geheimescaldavdpassword</string>
</dict>
In {/etc/default/calendarserver} das starten des Servers aktivieren und dann mit
/etc/init.d/calendarserver restart
starten.
Diese Links haben im weitesten Sinne mit dem Thema zu tun und sind mir bei meiner Arbeit aufgefallen.
- Liste von CalDAV-Software
- Bibliothek, um CalDAV-Daten in Java zu parsen
- Tool, um Daten von einem Server zum anderen zu kopieren