CalDAV und CardDAV dienen als gängige Protokolle zum Synchronisieren von Terminen und Adressen. Mit Baikal installieren Sie den passenden Server auf einem heimischen Rechner.
Während normale Anwendungen mit einem Programmfenster optisch präsent sind, laufen Server-Dienste versteckt im Hintergrund. Man nimmt sie erst wahr, wenn ein dafür konzipiertes Programm mit ihnen Kontakt aufnimmt (Abbildung 1) – etwa ein Webbrowser mit einem Webserver.
Manche Dienste erfordern eine aufwendige Einrichtung. Der CalDAV-Server Baikal [1] gehört nicht dazu: Um ihn aufzusetzen, genügt es, einige Pakete zu installieren, ein Zip-Archiv auszupacken, ein paar Befehle auf der Kommandozeile zu tippen und wenige Zeilen in Konfigurationsdateien anzupassen. Nach der Installation des Servers steht noch das Einbinden der im Netz bereitstehenden Kalender- und Adressbücher in Thunderbird, Kontact oder Evolution an.
Vorarbeit
Starten Sie mit der Installation der Pakete apache2-mod_php7, php7-mbstring und php7-openssl sowie aller von YaST vorgeschlagenen automatischen Änderungen. Damit fügen Sie Ihrem System den Webserver Apache samt Unterstützung für die Programmiersprache PHP hinzu.
Allerdings läuft der Webserver nach der Installation noch nicht, und er ist noch nicht für die Sprache PHP konfiguriert. Letzteres ändern Sie in der Konfigurationsdatei /etc/sysconfig/apache2, und zwar mit administrativen Rechten, etwa über kdesu kate auf der Befehlszeile.
Suchen Sie in der Datei die Zeichenfolge APACHE_MODULES (Abbildung 1). Bei allen Zeilen, in denen diese vorkommt und die mit einem Hash (“#”) beginnen, handelt es sich um Kommentare ohne eigentliche Wirkung. Sie dienen als Beispiele für Werte der Variablen (drittes Vorkommen). Fügen Sie in dieser Zeile vor dem abschließenden Anführungszeichen per Leerzeichen abgetrennt php7 ein.

Abbildung 1: Unter OpenSuse müssen Sie das Modul php7 in /etc/sysconfig/apache2 aktivieren, damit der Webserver PHP-Code ausführt.
Öffnen Sie nun /etc/apache2/default-server.conf im Editor. Zeile 24 verändern Sie von Options none zu Options +FollowSymLinks sowie Zeile 28 von AllowOverride None zu AllowOverride All.
Öffnen Sie dann ein Terminal, und authentifizieren Sie sich mit su als Root. Über systemctl start apache2 starten Sie den Webserver. Mittels systemctl enable apache2 aktivieren Sie ihn so, dass er beim Reboot erneut startet. Um den Server zu testen, benutzen Sie eine PHP-Datei mit dem Inhalt aus Listing 1.
Listing 1
<?php phpinfo(); ?>
Legen Sie diese Datei als /srv/www/htdocs/index.php im Basisverzeichnis des Webservers ab. Dazu benötigen Sie wieder Root-Rechte. Dateien mit dem Namen index sowie dem Suffix html, htm oder php liest der Webserver automatisch. Folglich öffnet http://localhost die Datei index.php.
Im Browser erscheint, wenn alles funktioniert, die PHP-Statusseite aus Abbildung 2. Jetzt haben Sie schon den halben Weg bis zur Installation des CalDAV-Servers Baikal hinter sich.

Abbildung 2: Sehen Sie im Browser die PHP-Statusseite, dann haben Sie die Unterstützung für PHP erfolgreich in den Webserver eingebunden.
Kernstück
Laden Sie als Nächstes von der Release-Seite auf Github [2] die neueste Version von Baikal herunter, und zwar das Archiv baikal-Version.zip, nicht den Quellcode aus den Zeilen darunter. Entpacken Sie das Archiv durch Rechtsklick im KDE-Dateimanager. Hier wählen Sie die Option Entpacken | Archiv hier entpacken. Den entpackten Ordner baikal/ verschieben Sie als Root ins Verzeichnis /srv/.
Der Webserver braucht Zugriff auf das darin enthaltene Verzeichnis Specific/. Dazu macht das Kommando aus der ersten Zeile von Listing 2 den Benutzer wwwrun des Webservers zum Eigentümer des Ordners samt Unterordnern. Wechseln Sie nun im Terminal ins Basisverzeichnis des Webservers (Zeile 2), wo Sie bereits die Datei index.php abgelegt haben, um die PHP-Installation zu testen. Mit dem Befehl aus Zeile 3 erzeugen Sie einen Link auf den Ordner html/ des Baikal-Codes. So erhält Apache Zugriff darauf, und zwar nur auf diesen Ordner.
Listing 2
# chown -R wwwrun:wwwrun /srv/baikal/Specific/ # cd /srv/www/htdocs # ln -s ../../baikal/html baikal
Dann öffnen Sie im Webbrowser http://localhost/baikal/admin (Abbildung 3), also die Seite zum Administrieren des Baikal-Servers. Dort bleibt wenig zu tun: Wählen Sie ein Admin-Passwort, das Sie von nun an zum Aufruf dieser Seite benötigen. Klicken Sie zum Abschluss auf Save changes. Die voreingestellte Zeitzone Europe/Paris in der folgenden Seite passt auch für Anwender in Deutschland.

Abbildung 3: Der auf dem Rechner laufende Webserver hält sich im Hintergrund. Er liefert dem Browser aber eine Webseite, im Beispiel das Konfigurations-Backend von Baikal.
Nach einem erneuten Klick auf Save changes bringt Sie Start using Baikal zum Login mit dem Benutzer admin und dem eben gewählten Passwort. Von dort gelangen Sie schließlich zur Übersicht, über die Sie die Ressourcen verwalten.
Wählen Sie dort den Punkt User and ressources im oberen Menü, um Benutzer und diesen zugeordnete Kalender und Adressbücher anzulegen. Starten Sie mit Add user. Im folgenden Dialog steht Username für den Benutzernamen, den Sie später in den Desktop-Anwendungen angeben. Der rein informative Display name darf Leerzeichen enthalten. Ansonsten sind noch E-Mail und Passwort festzulegen.
Nach einem Klick auf Save changes kommt im oberen Drittel der Seite eine Zeile für den neuen Anwender mit den Buttons Calendars und Address Books zum Verwalten der dem Nutzer zugeordneten Objekten hinzu. Ein Klick darauf zeigt, dass Baikal für den neuen Benutzer einen Default Calendar und ein Default Address Book angelegt hat.
Möchten Sie lieber aussagekräftigere Namen für die Ressourcen verwenden, müssen Sie sie löschen und neu anlegen. Das Löschen erledigen Sie jeweils mit dem roten Button Delete auf den Seiten Calenders oder Address Books. Dann legen mit Add address book beziehungsweise Add calendar neue Ressourcen mit passendem Namen an.
Die Token ID auf der Seite zum Einrichten der Kalender und Adressbücher steht für den Namen und lässt sich später nicht mehr verändern. Über die Felder Display name und Description beschreiben Sie Kalender und Adressbücher detaillierter. In der Regel lohnt es sich, die Kästchen Todos und Notes zu aktivieren: Die meisten PIM-Anwendungen unterstützen neben Terminen auch Aufgabenlisten, Evolution und Kontact nutzen außerdem die Notizfunktion. Das Einrichten von Adressbüchern funktioniert praktisch analog (Abbildung 4).

Abbildung 4: Mit dem Eintragen von Beschreibungen und wenigen Einstellungen ist es beim Anlegen neuer Kalender und Adressbücher in Baikal getan.
Haben Sie die gewünschten Adressbücher und Kalender angelegt, dann ist es an der Zeit, diese in Kontact, Evolution oder Thunderbird einzubinden.
Auf den Desktop
Bei Kontact erledigen Sie das in der Ansicht Kalender über den Aufruf des Kontextmenüs im Fenster für Kalenderressourcen (Abbildung 5). Hier wählen Sie den Eintrag Kalender hinzufügen. Dadurch öffnen Sie den Assistenten zum Hinzufügen von CalDAV-Kalendern und CardDAV-Adressbüchern. Er lässt sich bei Bedarf auch per Kontextmenü im Fenster Adressbücher in der Ansicht Kontakte erreichen.

Abbildung 5: KDE Kontact kennt neben vielen anderen Objekttypen auch CalDAV-Kalender und CardDAV-Adressbücher (zusammengefasst als DAV-Groupware-Ressourcen).
Nach der Eingabe von Benutzernamen und Passwort im ersten Dialog des Assistenten wählen Sie im zweiten die Option Die Ressource manuell einrichten und klicken auf Abschließen. Geben Sie einen beliebigen Anzeigenamen für die Verbindung zum Server ein, und wählen Sie, in welchem Zeitintervall die Software die Kalender aktualisieren soll – etwa alle fünf Minuten. Passwort und Benutzername sind gemäß der Eingabe im ersten Dialog bereits ausgefüllt (Abbildung 6).

Abbildung 6: Kontact benötigt nur die Baikal-Basisadresse sowie den Objekttyp (CalDAV/CardDAV), um alle auf dem Server angelegten Objekte einzubinden.
Klicken Sie dann auf Hinzufügen etwa in der Mitte. Im sich öffnenden Dialog ist CalDAV die richtige Wahl für Kalender, CardDAV für Adressbücher. Geben Sie unter Entfernte Adresse http://localhost/baikal/dav.php ein, wenn Sie sich auf dem Rechner mit der Baikal-Installation befinden. Ansonsten ersetzen Sie localhost durch die IP-Adresse des Rechners mit dem Baikal-Server (siehe Kasten “IP-Adresse ermitteln”).
IP-Adresse ermitteln
Sie finden die Adresse durch Klick auf das Netzwerk-Icon in der Task-Leiste heraus, indem Sie auf die aktive Verbindung klicken und den Reiter Details öffnen. Auf der Kommandozeile liefert die Ausgabe des Befehls ip a das Gesuchte. Achten Sie dabei auf die Zeile, die mit inet beginnt. Die IP-Adresse ist die Gruppe aus vier durch Punkte getrennte Zahlen direkt danach. Ein vernetzter Rechner hat neben dem Loopback-Gerät lo mindestens eine weitere Schnittstelle. Auf einem älteren System heißt die Ethernet-Schnittstelle typischerweise eth0. Bei neueren Systemen, die auf vorhersagbare Namen setzen, lautet der Name enp2s0 oder ähnlich.
Klicken Sie nach Eingabe der Adresse im unteren Bereich Entdeckte Sammlungen auf Abholen. Nun sollten in der Liste darunter alle Anzeigenamen der angelegten Kalender erscheinen. Für Adressbücher gehen Sie ähnlich vor: Wählen Sie statt CalDAV für das Zugriffsprotokoll nun CardDAV.
Ähnlich wie in Kontact gelingt das Einbinden von Kalendern und Adressbüchern in Evolution: Per Klick auf den Pfeil in der Schaltfläche Neu in der oberen Leiste finden Sie die Einträge Kalender und Adressbuch. Wählen Sie im sich öffnenden Dialog (Abbildung 7) als Art des Kalenders das bekannte Protokoll CalDAV. Dann geben Sie dem Kalender einen Namen und eine Farbe und legen ihn auf Wunsch als Vorgabe fest, die Evolution bei neuen Terminen auswählt.

Abbildung 7: Auch Evolution findet anhand der Baikal-Grundadresse alle auf dem Server vorliegenden Kalender und Adressbücher.
Die Option Den Kalenderinhalt lokal zur Arbeit im Offline-Modus kopieren hilft nicht nur weiter, wenn Sie vom Netz getrennt sind, sondern beschleunigt darüber hinaus den Start des Programms. Als Adresse geben Sie wie in Kontact http://localhost/baikal/dav.php ein (beziehungsweise statt localhost die IP-Adresse) und klicken auf Kalender suchen. Hier erscheinen ebenfalls alle auf dem Server vorliegenden Objekte, nachdem Sie das Passwort korrekt eingegeben haben.
Um mehrere Kalender einzubinden, öffnen Sie erneut den Dialog und wählen im Ergebnis der Suche einen weiteren Eintrag. Legen Sie neue Kalender auf dem Server an, dann findet Evolution sie zwar nicht von sich aus, doch sie tauchen bei einer erneuten Sucher im Ergebnis auf.
Weitgehend analog klappt bei Evolution das Einbinden von neuen Adressbüchern (Neu | Adressbuch). Wieder genügt die Basisadresse des Servers; die Suchfunktion findet alle Adressbücher. Die Option Aus diesem Adressbuch automatisch vervollständigen legt fest, dass Evolution im Mail-Editor das Adressbuch bei der Auto-Complete-Funktion berücksichtigt.
Etwas mehr Tipparbeit
Thunderbird bringt keine Suchfunktion für Kalender mit. Die Angabe der bisher benutzten Basis-URL des CalDAV-Servers genügt daher nicht. Stattdessen hängen Sie an diese /calendars/User/Token-ID/ an (Abbildung 8). So lautet zum Beispiel die URL für den privaten Kalender des Anwenders peter auf den lokalen Rechner http://localhost/baikal/dav.php/calendars/peter/privat/.

Abbildung 8: In Thunderbird genügt die Basis-Adresse nicht, um die vorhandenen Ressourcen zu finden. Hier müssen Sie falls nötig per Hand den Typ, den Nutzernamen und die Token-ID anhängen.
Sie starten das Einbinden mit einem Klick auf Einen neuen Kalender erstellen auf der Thunderbird-Startseite. Alternativ kennt das Menü hinter dem Hamburger-Icon rechts in der oberen Leiste den Punkt Neu | Kalender. Im ersten Schritt wählen Sie Im Netzwerk, dann einen Namen und eine Farbe für den Kalender. Thunderbird weist darauf hin, dass das Versenden von Einladungs-Mails eine Mailadresse erfordert – und zwar nur für diese Funktion.
Von Haus aus unterstützt Thunderbird keine über das Netz synchronisierten Adressen. Das im Menü Extras versteckte Adressbuch dient vor allem dazu, die Adressen verschickter E-Mails zu sammeln. Das Thunderbird-Addon CardBook [3] rüstet jedoch eine vollwertige CardDAV-Unterstützung nach. Sie installieren die Erweiterung über den Menüpunkt Add-ons | Add-ons. Im neuen Tab wählen Sie den Reiter Erweiterungen und benutzen das Suchfeld oben (Abbildung 9).
Zu den zwei Icons Kalender und Aufgaben ganz links oben im Programmfenster gesellt sich nun ein drittes für das Adressbuch. Nach dem Neustart, der nach der Installation des Addons ansteht, importiert CardBook die bestehenden Thunderbird-Adressbücher und sucht nach im Netz verfügbaren Daten. Zumindest bei der Baikal-Installation im Test schlug das aber fehl.
Neue Adressbücher fügen Sie per Rechtsklick auf die Adressbuchspalte im CardBook-Reiter hinzu. Im ersten Dialog wählen Sie wieder Im Netzwerk, im nächsten CardDAV. Als URL benötigen Sie hier die um Nutzernamen und Adressbuch-ID erweiterte URL. Statt calendars verwenden Sie diesmal jedoch addressbooks (Abbildung 10). Bevor Sie auf Weiter klicken, überprüfen Sie über die gleichnamige Schaltfläche die Konfiguration. Sie sehen den Schalter eventuell erst, wenn Sie ein Stück nach unten scrollen.

Abbildung 10: Die per CardBook-Addon eingebundenen CardDAV-Adressbücher referenzieren Sie ebenfalls mit dem vollen Pfad, den die Software vor dem Einbinden auf Korrektheit prüft.
Fazit
Die Installation eines voll funktionsfähigen CalDAV- und CardDAV-Servers zur Synchronisation von Kalendern und Adressen fällt nicht besonders schwer, auch wenn dazu einige Handgriffe im Terminal anfallen. In dem hier gezeigten Setup setzen CalDAV und CardDAV auf das HTTP-Protokoll auf, ein gewöhnlicher Webserver liefert die Daten aus. Das bedeutet, dass im Browser alle genannten URLs zum Einbinden in die Programme funktionieren (Abbildung 11).

Abbildung 11: Öffnen Sie die URLs der CalDAV-Ressourcen im Browser, zeigt die Software den Status des Servers an.
Klappt etwas nicht, dann prüfen Sie per Webserver, ob Sie die Ressource überhaupt erreichen. Als Nächstes lohnt es sich, auf dem Rechner mit dem Baikal-Server in der Log-Datei /var/log/apache2/error_log nachzusehen, ob sich darin Meldungen finden, die auf ein Problem hindeuten.
Sie sollten sich der Tatsache bewusst sein, dass der Baikal-Server zwar eine Authentifizierung verlangt, diese aber ernsthaften Angriffen nicht lange standhält: Da der Webserver die Daten per HTTP im Klartext statt verschlüsselt via HTTPS überträgt, fallen die Passwörter jedem in die Hände, der den Transfer belauscht.
Wollen Sie also den Baikal-Server zum Internet hin öffnen oder in wenig vertrauenswürdigen Umgebungen installieren, dann wartet noch zusätzliche Arbeit auf Sie, um den Server abzusichern [4]. Ein Zugriff etwa per VPN verschlüsselt alle Daten, selbst das unsichere HTTP-Protokoll.
Der Ressourcenbedarf eines CalDAV/CardDAV-Server ist gering; bereits ein Raspberry Pi genügt vollkommen zum Betrieb [5]. Wegen des geringen Stromverbrauchs des Mini-Rechners ließe es sich sogar vertreten, diesen rund um die Uhr zu betreiben.
Infos
-
CalDAV/CardDAV-Server Baikal: http://sabre.io/baikal/
-
Backend herunterladen: https://github.com/sabre-io/Baikal/releases/
-
Thunderbird-Addon CardBook: https://addons.thunderbird.net/de/thunderbird/addon/cardbook/
-
HTTPS für Apache: https://www.suse.com/support/kb/doc/?id=7010584
-
OpenSuse für Raspberry Pi: https://en.opensuse.org/HCL:Raspberry_Pi3






