Kalender, Kontakte und Erinnerungen zwischen Mac und iOS synchronisieren. Ohne iCloud und Google. Mit Baïkal.

Worum geht’s?

Für Kalenderdaten, Aufgaben („Erinnerungen im Apple-Jargon“) und Kontakte ziehe ich ein eigenes Synchronisationsbackend der iCloud oder Google vor. Bisher habe ich hierzu ownCloud auf meinem uberspace verwendet, was soweit eigentlich auch ausreichend gut funktioniert hatte (iOS 7 und Mac OS 10.9). Als ich aber anfing, meine AufgabenErinnerungen damit zu synchronisieren (hauptsächlich wegen der schicken Integration in Fantastical), hat ownCloud für mich nicht immer zuverlässig genug funktioniert. Ärgerlichstes (nicht immer reproduzierbares) Problem: Ich lege eine Aufgabe an und während ich noch dabei bin ein Fälligkeitsdatum hinzuzufügen, wird die Aufgabe bereits in die ownCloud gesynct und überschreibt mir anschließend die lokale Aufgabe mit Fälligkeitsdatum durch die ownCloud-Aufgabe ohne Fälligkeitsdatum. Gnah.

Ich habe mich nicht lumpen lassen und ein instagramifiziertes Logo von Baïkal eingebunden.

Ich hatte mich daher nach einer Alternative umgesehen und bin auf das quelloffene Baïkal gestoßen, welches ich seit kurzem ohne Ausfälle einsetze. Damit sind allerdings zwei Nachteile verbunden, deren man sich bewusst sein sollte: Es gibt keine Webansicht der Kalender- und Kontaktdaten, d.h. ohne Client sieht man nichts genaues seiner Daten. (Version 2 soll das ändern, aber das dürfte eine ganze Weile dauern.) Außerdem können neue Kalender nicht über den Client, sondern nur im Backend angelegt werden.

Obwohl die Konfiguration ziemlich schnell geht, bin ich doch einige male ins Stolpern geraten, insbesondere, da ich meine Synchronisation ausschließlich per SSL durchführen möchte und dieser Fall in den mir untergekommenen Anleitungen nicht ausreichend dokumentiert ist. Daher beschreibe ich meinen Lernprozess hier, auch wenn ich mir bewusst bin, dass ich nicht gerade vorbildlich alle Eventualitäten abgedeckt habe. Insofern Fragen oder Unklarheiten bitte in die Kommentare.

Installation und Konfiguration des Webservers

Bei der Installation auf meinen uberspace habe ich mich in weiten Teilen an Marcos Anleitung gehalten. Als Ergänzung sei gesagt, dass durch die Installation aus dem git-Repository direkt die neueste Version des zugrundeliegenden SabreDAV (derzeit 1.8.7) gezogen wird.

Da ich mein Baïkal per Subdomain anspreche, musste ich – wie dort ausgeführt – in den System settings der Baïkal-Administration die Pfade der CalDAV base URI in "/cal.php/" bzw. der CardDAV base URI in "/card.php/" korrigieren:

baikal-pfade

Darüber hinaus habe ich noch der Datei baikal/html/.htaccess die folgenden Einträge zu den bestehenden Einträgen hinzugefügt, damit kein Client ungewollt auf die Idee kommt, unverschlüsselt Daten zu synchronisieren und die Konfiguration zumindest unter iOS ohne die Angabe des genauen URL-Pfades möglich ist (Quelle):

<IfModule mod_rewrite.c>
    # http-Request immer nach https weiterleiten
    RewriteCond %{HTTPS} !=on
    RewriteCond %{ENV:HTTPS} !=on
    RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]   

    # Dadurch genügt bei der iOS-Konfiguration schon der Servername
    RedirectMatch 301 ^/.well-known/caldav /cal.php
    RedirectMatch 301 ^/.well-known/carddav /card.php
</IfModule>

Konfiguration der Kalender.app (OSX 10.9)

Vorbereitungen

Da man über die Kalender-App keine neuen Kalender anlegen kann (lasst es besser gleich bleiben, da ansonsten die Kalender.app bis zum St. Nimmerleinstag den Kalender erfolglos zu erstellen versucht…), müssen diese vor der Datenmigration im Web-Backend der Baikal-Installation einzeln erstellt werden.

Einrichtung des Baïkal-Kontos

Als nächstes wird über die Systemeinstellungen, das – bis jetzt nur mit Kalenderkategorien und ohne Kalenderdaten befüllte – Baïkal-Konto hinzugefügt:

Internetaccounts Anderen Account hinzufügen CalDAV-Account hinzufügen. Folgende Werte sind einzutragen:

Accounttyp: Fortgeschritten

Benutzername: $username

Kennwort: $password

Serveradresse: dav.domain.tld (Wichtig: kein „https://“ davor!)

Serverpfad: /cal.php/principals/$username

Port: 443 (Auch wichtig, sonst versucht es der Kalender über den (zumindest bei meinem uberspace) geschlossenem Port 8443.)

SSL verwenden: Ja

Kerberos v5: Nein

Danach noch die Erinnerungen einschalten.

Datenmigration

Um die Daten der bestehenden Kalender in den Kalender des Macs zu migrieren, diese einzeln auswählen und über Ablage Exportieren Exportieren als ics-Datei speichern. Diese Datei nun gleich wieder über Ablage Importieren Importieren importieren und als Ziel den gleichnamigen Kalender der Baikal-Instanz angeben. Sollten in den einzelnen Kalendern zugleich AufgabenErinnerungen enthalten sein, bietet Kalender.app anschließend an, diese ebenfalls zu importieren.

Konfiguration des Adressbuchs (OSX 10.9)

Vorbemerkung

Zunächst muss man zur Kenntnis nehmen, dass evtl. angelegte Kontaktgruppen in der Kontakte.app nichts mit den mehreren Adressbüchern zu tun, die man im Backend von Baïkal anlegen kann (Quelle). Für diesen Schritt müssen also keine weiteren Adressbücher im Baïkal-Backend angelegt werden. Das würde sowieso nichts bringen, da die Kontakte.app nur auf genau ein Adressbuch zugreift und zwar das alphabetisch erste Adressbuch. m(

Einrichtung der Kontakte.app

Ebenfalls über Internetaccounts Anderen Account hinzufügen CardDAV-Account hinzufügen:

Benutzername: $username

Kennwort: $password

Serveradresse: https://dav.domain.tld/card.php/principals/$username

Datenmigration

Bei Kontakten ist der Umzug bestehender Kontakte deutlich einfacher als bei den Kalendern. Hierzu können bestehende Gruppen einfach per Drag-and-Drop in das neue Konto kopiert werden. Sollten die Gruppen nicht angezeigt werden, können diese via Darstellung Gruppen einblenden hervorgeholt werden. Kontakte, die keiner Gruppe zugewiesen sind, können durch eine Intelligente Gruppe mit dem Filter Visitenkarte ist nicht Mitglied von beliebige Gruppe ausfindig gemacht und von dort ebenfalls in das neue Konto gezogen werden.

Einrichtung des Adressbuchs unter iOS 7

In der Einstellungen.app unter Mail, Kontakte, Kalender: Account hinzufügen Andere CardDAV-Account hinzufügen

Server: dav.domain.tld

Benutzername: $username

Kennwort: $password

Einrichtung des Kalenders unter iOS 7

In der Einstellungen.app unter Mail, Kontakte, Kalender: Account hinzufügen Andere CalDAV-Account hinzufügen

Server: dav.domain.tld

Benutzername: $username

Kennwort: $password

Nach dem Einrichten beider Accounts am besten prüfen, ob die obige htaccess-Regel greift und der Account in den erweiterten Einstellungen SSL verwenden aktiviert hat. Zwar kann man der Serveradresse auch ein beherztes https:// voranstellen, doch haben mir manche Geräte damit eine Verbindung verweigert.

Schluss

Puh, das sollte es dann eigentlich gewesen sein. \o/ In einem zweiten Beitrag werde ich mich demnächst dem Problem widmen, wie man bestimmte Kalender gemeinsam nutzen kann. Das geht nämlich auch mit Baïkal, allerdings nur mit etwas Datenbankmagie (bei der ich gleich mal einen Fehler gemacht hatte).

Also read...

2 Pingbacks/Trackbacks

Kommentare

  1. Ciao! Kurze Frage zur .htaccess unter baikal/html – Die Datei existiert ja bereits, hast du da dein Abschnitt mit dem HTTPS erzwingen einfach ergänzt oder der Inhalt des bestehenden .htacces-File damit ersetzt?

    Antworten
  2. Pingback: Reclaim your data: 7 Tools und Dienste, mit denen ich meine Datenhoheit zurückbekommen habe » t3n

  3. Pingback: War was? – XXXI | metasierchen

  4. Servus,

    ich habe letztes Jahr deine Anleitung genutzt, um Baikal zu installieren. Leider hat mir El Captain die Carddav Übertragung zerschossen. Weißt du wie ich es wieder reparieren kann?

    Lg

    David

    Antworten
  5. ich bis sehr frustriert von Baikal. Sollangeblich so einfach einzurichten sein. Bei mir geht es auf jeden Fall nicht. Ich komme noch an das Webinterface um User einzurichten, aber einen Zugriff vom Mac OS X Kalender geht nicht. Bei Github wurde dieses Problem auch schon berichtet – ohne Lösung die bei mir funktioniert.
    Immer wenn ich mich anmelde wird der User nicht erkannt und OS X meldet Account Name/Passwort konnte nicht überprüft werden.
    eingerichtet habe ich aasganze nach http://my5cent.spdns.de/beaglebone-black-raspberry-pi/baikal-mit-nginx-und-https.html.

    im nginx Terrorlog steht:
    2016/01/15 21:58:54 [error] 3562#0: *51 rewrite or internal redirection cycle while internally redirecting to „/index.html“, client: 192.168.178.36, server: 192.168.178.31, request: „PROPFIND /dav/principals/ HTTP/1.1“, host: „192.168.178.31“
    Hat irgend jemand eine Idee an was das liegen könnte?

    Antworten

Schreibe einen Kommentar

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