Homeserver 29: Kalender und Kontakte

Jetzt, wo der Server von außen erreichbar ist, kann ich damit beginnen, ein paar der wirklich interessanten Features zu installieren. Ich habe so einiges im Hinterkopf, aber beginnen wir heute mal damit, CalDAV und CardDAV zu installieren.

Diese beiden Dienste ermöglichen es mir, meine Kontakte und Kalender auf meinem eigenen Server zu hosten. Das hat gleich mehrere Vorteile:

  • Ich bin unabhängig von externen Diensten wie iCloud, Google oder sonstigen Anbietern.
  • Die Daten liegen bei mir. Das lässt mich wegen des Datenschutzes beträchtlich ruhiger schlafen.
  • Ich bin geräteunabhängig. Bei Fremddiensten, wie iCloud, bin ich auf Apple festgelegt. Andere Systeme und Geräte sind nur mit umständlichen Kniffen zu nutzen.

Bis jetzt liegen meine Daten in der iCloud. Mit meinem iPhone und meinem MacBook ist das ja kein Problem, aber mit Thunderbird komme ich kaum an die Daten ran. Und was ist, wenn ich mich später mal für ein Android-Gerät entscheide, sei es auch nur zum Ausprobieren?

CalDAV und CardDAV sind mehr oder weniger standardisierte Systeme, die so ziemlich von jedem modernen Gerät oder Programm verstanden werden. Somit bin ich wesentlich flexibler. Zwar muss bei manchen Programmen und Geräten Software nachinstalliert werden, aber das ist in der Regel schnell gemacht.

Nachtrag zur Erreichbarkeit aus dem Netz

Im letzten Teil habe ich beschrieben, wie ich meinen Server von außen zugänglich gemacht habe. Ich muss hierzu einmal einige Kleinigkeiten konkretisieren.

Ich hätte mir bei FreeDNS eine Subdomain als CNAME-Eintrag machen können. Das wollte ich aber nicht, weil es zum Einen nur mit einem CAPTCHA ging, und ich gerade niemanden hatte, der mir helfen konnte, und zum Anderen, weil man sich eine aus einem Pool öffentlicher Domains eine aussuchen müsste. Ich wollte einfach nicht, dass mein Server z. B. unter server.chickenkiller.com oder crabdance.com erreichbar ist. 🙂 Andererseits, wer keine andere Möglichkeit hat, das ist kostenlos.

Ich habe ja schon Domains, also habe ich mal selbst Subdomains angelegt, die aber alle ein Problem haben: Es sind alles HTTP-Weiterleitungen. Das nutzt mir so nichts, weil ich z. B. über diese Subdomains nicht per SSH auf meinen Server zugreifen kann. Aber jetzt habe ich eine Subdomain unter einer meiner Domains mit einem CNAME-Eintrag, der dann auf die Adresse server01.xxx.myfritz.net zeigt. Und jetzt kann ich jeden Dienst mit jedem Port aus dem Internet über meine neue Subdomain erreichen.

Wenn ihr also euren Server, NAS oder sonst was von außen erreichen wollt, und über MyFritz! geht, ist eine Subdomain mit einem CNAME-Record das, was ihr wollt. 🙂 Manche können ihre DNS-Einträge ja selbst verwalten, falls ihr nicht zu denen gehört, fragt mal freundlich bei euren Providern nach. Da werdet ihr dann auch geholfen. 🙂

Auswahl der Software

Kommen wir jetzt also mal zur Auswahl der Software für das CalDAV und CardDAV. Da gibt es ja ein paar, aber ich habe mich für den Baical-Server entschieden. Es gibt hier zwei Downloads, die Regular Version, und die Flat-Version. Dabei unterscheiden die sich nur in ihrer Installationsmethode. Regular war mir zu umständlich, zu kompliziert, keine Lust dazu! Also habe ich die Flat-Version heruntergeladen.

Installation

Wenn man sich also das Flat-Package heruntergeladen und ausgepackt hat, hat man ein Verzeichnis, in dem ein Verzeichnis „baikal“ existiert. Dieses Verzeichnis lade ich nun auf meinen Server ins HTML-Verzeichnis. Ich hatte mir dafür ja eine SMB-Freigabe zugelegt, so dass ich mir den Pfad da nicht merken muss. Stattdessen habe ich mir hierfür einen Laufwerksbuchstaben zugewiesen, in dem sich jetzt das Hauptverzeichnis meines Webservers befindet. Hier kopiere ich das baikal-Verzeichnis rein.

Nun gehe ich auf meinen Server, und da ich ja lokal bin,

http://server01/baikal/admin

Dies startet den Installationsvorgang.

Juhu! Fehlermeldung! Was für eine Freude! Denn davon stand in der Installationsanleitung nix! Aber OK, mach ich doch, was da steht. Denn die Fehlermeldung sagt, die Installationsroutine sei locked, also gesichert. Ist ja auch sinnvoll, sonst könnte man vielleicht eine bestehende Installation beschädigen. Man löst das Problem dadurch, indem man einfach eine leere Datei mit dem Namen „ENABLE_INSTALL“ in Großbuchstaben anlegt. Diese Datei kommt ins Verzeichnis „Specific“ im Baikal-Verzeichnis. Dann klappt’s auch mit der Installation. 🙂

Es werden nur ein paar Fragen gestellt, dann kann es auch schon los gehen:

  • Server Time zone: Hier wählt man die Zeitzone aus. Für mich in Deutschland natürlich „Europe/Berlin“.
  • Enable CalDAV: Natürlich hake ich das an, will ja Kalender synchronisieren.
  • Enable CardDAV: Aktiviere ich ebenfalls für Adresssynchronisation.
  • WebDAV authentication type: Hier wählt man Basic aus.
  • Admin-Passwörter: Hier wählt man das Passwort für den Admin aus.
  • Enable Web Interface: Sollte man anhaken, sonst hat man kein Webinterface mehr… 🙂
  • Web interface autolock: Das lasse ich deaktiviert.

Mit der Schaltfläche „Save“ Speichert man das ganze ab. Und nun geht es zur Datenbank-Konfiguration.

Datenbank anlegen

Bevor ich jetzt weitermachen kann, muss ich erst mal eine Datenbank anlegen. Irgendwohin müssen die Daten ja hingeschrieben werden. Also öffne ich in einem weiteren Tab meines Browsers die Adresse:

http://server01/phpmyadmin

Hier melde ich mich mit Benutzernamen und Passwort an und klicke auf den Link „Datenbanken“.

Die Maske für die Erstellung einer neuen Datenbank ist bereits auf dem Bildschirm, ich brauche sie nur auszufüllen. Eigentlich reicht der Datenbankname schon, dann auf den Anlegen-Schalter klicken, fertig! Den Tab mit PHPMyAdmin können wir wieder schließen und die Konfiguration von Baikal fortsetzen.

Baikal weiter konfigurieren

Bei „Use MySQL“ ist ein Haken gesetzt, so dass Baikal nun eine MySQL-Datenbank nutzen kann. Die weiteren Felder werden wie folgt ausgefüllt:

  • MySQL Host: Hier kommt „localhost“ rein.
  • MySQL database name: Hier kommt der Datenbankname rein, den wir gerade für die neue Datenbank gewählt haben.
  • MySQL username: Benutzername für MySqL.
  • MySQL password: Nun, sagt ja schon der Name… 🙂

Um nun fortfahren zu können, klicke ich auf „Save changes“. Und das war es auch schon. Die Installation ist abgeschlossen und die Installationsroutine ist wieder „locked“.

Erste Schritte

Wenn ich jetzt meinen Browser öffne und folgende Adresse eingebe:

http://server01/baikal/admin

So komme ich auf eine Anmeldungsseite, wo ich mich erst mal mit dem Benutzernamen Admin und dem bei der Konfiguration festgelegten Passwort anmelden muss. Dann öffnet sich das Dashboard mit allerhand nützlichen und statistischen Daten. Hier kann ich auch die Einstellungen einsehen und ggf. ändern.

Bevor ich jetzt aber irgendetwas sinnvolles machen kann, muss ich mir erst mal einen Benutzer anlegen. Dafür klicke ich auf den Link „Users and resources“. Und hier klicke ich auf den Link „Add user“.

Hier müssen nicht viele Felder ausgefüllt werden:

  • Username: Hier kann man einen Benutzernamen festlegen.
  • Display name: Der Name, der angezeigt werden soll.
  • Email: E-Mail-Adresse des Benutzers.

In den beiden Passwortfeldern gibt man noch ein Passwort an und klickt dann auf „Save changes“. Komischerweise ist das Dialogfeld zum Erstellen von Usern aber noch offen. Macht sinn, wenn man noch welche erstellen will. Das will ich nicht, daher gehe ich ganz nach unten, und klicke auf „Close“.

Nun steht mein User auf der Seite. Daneben befinden sich Links, optisch sehen sie eher aus wie Schalter.

Klicke ich auf „Calendars“, sehe ich, welche Kalender für mich bereits vorhanden sind, ich kann Kalender zusätzlich erstellen, bearbeiten oder löschen. Hier befindet sich bereits ein Kalender, der sich „Default calendar“ nennt. Klicke ich daneben auf „Edit“, habe ich folgende Felder:

  • Display name: Das ist der Anzeigename des Kalenders, hier steht „Default calendar“. Das ändere ich mal…
  • Description: Eine Beschreibung, auch das ändere ich mal.
  • Todos: Aktiviert man dies, so kann man hier auch Aufgaben eintragen. Das ist hier schon aktiv, das lasse ich mal so.
  • Notes: Aktiviert man dies, so sind auch Notizen im Kalender möglich. Das ist hier deaktiviert, ich aktiviere das mal.

Anschließend noch auf „Save changes“ und danach auf „Close“ klicken. Weitere Kalender brauche ich erst mal nicht. Sollte ich aber einen privaten und einen geschäftlichen Kalender haben wollen, so könnte ich mir jetzt einen weiteren anlegen. Da ich das nicht will, klicke ich weiter oben auf „Back to users list“.

Klicke ich nun auf „Adress books“, so habe ich die gleiche Ansicht wie eben, nur halt mit Adressbüchern, und nicht mit Kalendern. Also klicke ich auch hier auf Edit, um einige Einstellungen zu prüfen:

  • Display name: Ändere ich, dort steht „Default adress book“.
  • Description: Auch hier gebe ich eine Beschreibung ein.

Mehr gibt es hier nicht, ich klicke also auf „Save changes“ und dann auf „Close“.

In beiden Fällen, direkt über dem Feld „Display name“, steht ein Wert, der später noch wichtig wird, die „Token ID“. Dies ist für die URL wichtig, wenn wir die Adressbücher und Kalender in die jeweiligen Programme eintragen. Bei beiden stand jetzt „default“, aber bei nachträglich erstellten Kalendern und Adressbüchern müsst ihr euch das angucken.

Mit der Weboberfläche sind wir erst mal fertig.

Kalender und Adressbuch nutzen

Um jetzt das Adressbuch und den Kalender mit dem Server synchronisieren zu können, sind mehrere Schritte von Nöten. Am wichtigsten ist, die Daten aus der iCloud zu befreien um sie in den Server importieren zu können. Hat man einen Mac, ist das sogar recht einfach. Wenn nicht, nun, den Fall kann ich jetzt nicht nachstellen, weil ich dieses Problem nicht habe.

Adressbuch sichern

Am einfachsten kann ich mein Adressbuch mit meinem iPhone sichern. Dafür habe ich eine App, die die Kontakte als Excel-Tabelle exportiert, und auch wieder importiert. Also starte ich Excel Contacts, … oh, Moment, die App heißt ja jetzt anders. OK, dann öffne ich halt die App SA Kontakte. 🙂 Hier kann ich meine Kontakte als Excel-Tabelle in meine Dropbox ablegen.

Nachdem ich dies getan habe, kann ich am Mac in der Anwendung Kontakte alle Kontakte löschen. Somit sind diese alle raus aus der iCloud. Anschließend kann ich auf beiden Geräten, dem iPhone und dem Mac, das Synchronisieren der Kontakte mit der iCloud deaktivieren.

Kalender sichern

Hier wüsste ich nicht, ob und wie das mit dem iPhone geht. Dies geht aber wunderbar mit dem Kalender auf dem Mac. Um den Kalender als ICS-Datei zu exportieren geht man folgendermaßen vor:

  • Ich öffne den Kalender am Mac.
  • Im Menü „Ablage“ im Untermenü „Exportieren“ aktiviere ich den Punkt „Exportieren“.
  • Im Dialogfeld wähle ich nun den Namen der Export-Datei und dessen Ort.

Das war es schon. Nach dem Aktivieren der Schaltfläche „Exportieren“ befindet sich die Datei „Kalender.ics“ in meinem Home-Verzeichnis.

Nun kann ich auch den Kalender in der App Kalender auf dem Mac löschen. Zuvor kann es sein, dass ich einen leeren neuen Kalender erstellen muss, weil sich der Standard-Kalender sonst nicht löschen lässt.

Anschließend kann ich die Kalendersynchronisation auf dem iPhone und dem Mac mit der iCloud deaktivieren.

Kalender und Kontakte auf dem Mac einrichten

Um die Kontakte und den Kalender nun am Mac zu nutzen, müssen noch die Accounts dort eingerichtet werden. Für den Kalender geht das wie folgt:

  • Ich öffne die Kalender-App und gehe mit Befehl+, in die Einstellungen.
  • Ich interagiere mit der Symbolleiste und aktiviere das Symbol für „Accounts“.
  • Mit VO+Pfeil-rechts gehe ich bis zur Optsionsschaltfläche „Account hinzufügen“ und aktiviere diese.
  • Aus der Liste der Accounttypen wähle ich „CalDAV-Account hinzufügen“.
  • Im nächsten Dialogfeld wähle ich als Account-Typ „Manuell“, da Mac OSX bestimmt nicht meine Serveradresse kennt… 🙂
  • Bei Benutzername und Passwort gebe ich die Daten ein, die ich bei der Erstellung des Benutzers im Baikal-System gewählt habe.
  • Als Serveradresse gebe ich folgendes ein: „http://subdomain.domain.de/baikal/cal.php/principals/benutzername“. Die Werte müsst ihr je nach euren Gegebenheiten anpassen. Das betrifft den Teil mit der subdomain und domain, sowie den Benutzernamen am Ende.
  • Anschließend noch auf „Erstellen“ klicken und je nach Wunsch einige Anpassungen im Dialogfeld machen, wie Accountname usw.

Das gleiche mache ich jetzt für die Kontakte:

  • Ich öffne die Kontakte-App und gehe mit Befehl+, in die Einstellungen.
  • Ich interagiere mit der Symbolleiste, gehe zum Symbol „Accounts“ und dann auf „Hinzufügen“.
  • In der Liste der Accounttypen wähle ich „Anderer Account“.
  • Accounttyp: CardDAV.
  • Benutzername und Passwort wie in Baikal eingerichtet.
  • Serveradresse: „http://subdomain.domain.de/baikal/card.php/“. Die Werte müsst ihr evtl. an eure Gegebenheiten anpassen.

Anschließend noch auf Erstellen klicken, evtl. noch die Accountbeschreibung anpassen und in den Server-Einstellungen SSL aktivieren.

Bei dem iPhone geht das übrigens nahezu genau so mit den gleichen Adressen. Ihr geht in den Einstellungen auf „Mail, Kontakte, Kalender“. Hier doppeltippt ihr die Taste „Account hinzufügen“. Jetzt könnt ihr als Account-Typ CalDAV oder CardDAV auswählen. Die einzugebenden Daten sind die gleichen, wie für die Mac-Varianten, daher gehe ich jetzt da nicht weiter drauf ein.

SSL-Verschlüsselung

Der Server ist ja schon SSL-verschlüsselt, was ja sogar durch eine Änderung von mir erzwungen wird. Der Mac, als auch das iPhone, werden über das selbsterstellte Zertifikat meckern. Man kann hier aber einmalig festlegen, dass dem Zertifikat getraut werden kann, somit hat man eine SSL-verschlüsselte Verbindung. Das gilt genau so für die Thunderbird-Synchronisation, wie ich sie weiter unten beschreibe. Auch hier kann man dem Zertifikat einmalig vertrauen. Danach ist auch diese Verbindung mit SSL gesichert.

Importieren des zuvor exportierten Kalenders

Die Kalender.ics-Datei, die ich vorhin exportiert hatte, möchte ich ja wieder im neuen Kalender haben. Also öffne ich mal die Kalender-App am Mac. Im Menü „Ablage“ wähle ich den Punkt „Importieren“. Nachdem ich die Datei in der Liste ausgewählt und auf „Importieren“ geklickt habe, dauert es je nach Größe der Datei eine Weile. Anschließend ist noch der Zielkalender zu wählen, fertig!

Adressen importieren

Hierzu bemühe ich mich wieder der SA Kontakte App. Das ist über das iPhone immer noch die einfachste Möglichkeit. Ich aktiviere den Reiter Import, wähle die zuvor exportierte Datei aus der Dropbox aus und starte den Import-Vorgang. Nach kurzer Zeit sind alle meine Adressen wieder in den Kontakten!

Geht auch Thunderbird?

Aber sicher doch! Es sind nur zwei Addons nötig, Lightning für Kalender und Aufgaben und der SOGO Connector für CardDAV. Lightning ist im Addon-Bereich des Thunderbirds zu finden, den SOGO Connector kann man hier downloaden. Die XPI-Datei des SOGO Connectors muss dann in Thunderbird unter „Extras“ und dort unter „Addons“ aus der Datei installiert werden.

Kalender in Lightning

Um den Kalender in Lightning einzubinden gehe ich wie folgt vor:

  • In Thunderbird, im Menü „Datei“, dort unter „Neu“ wähle ich „Kalender“.
  • Aus der Auswahl wähle ich „Im Netzwerk“.
  • Bei Kalenderformat wähle ich „CalDAV.
  • Die Adresse ist: „http://subdomain.domain.de/baikal/cal.php/calendars/benutzername/default“. Die Werte müsst ihr an eure Gegebenheiten anpassen. Dabei ist „default“ die Token ID des Standardkalenders. Wollt ihr einen zweiten Kalender, den ihr im Baikal-System hinterlegt habt, nutzen, so muss hier dessen Token ID hin. Wie man diese herausfindet, habe ich ja weiter oben schon beschrieben.
  • Offline-Unterstützung habe ich aktiviert und klicke auf „Weiter“.
  • Im nächsten Dialog vergebe ich einen Namen für den Kalender und gebe auch meine Mailadresse an. Anschließend klicke ich auf „Weiter“.
  • Nach einer Weile erscheint ein Dialogfeld, welches einem die Fertigstellung des Kalenders meldet. Hier klickt man auf „Fertig“.

Der Kalender ist jetzt aber noch nicht zu sehen. Zunächst muss ich die Maus irgendwie zum Kalendereintrag bringen, mit rechter Maustaste klicken und aus dem Kontextmenü „Synchronisieren“ wählen. Nun werde ich nach Benutzernamen und Kennwort gefragt, und ob ich die Daten speichern will. Ab jetzt kommen die Kalenderdaten auf meinen Rechner.

Adressbuch in Thunderbird einrichten

Um das Adressbuch in Thunderbird einzubinden, gehe ich wie folgt vor. Dass der SOGO-Connector korrekt installiert wurde, setze ich einfach mal voraus… 🙂

  • In Thunderbird öffne ich aus dem Menü „Extras“ das Adressbuch.
  • Aus dem Menü „Datei“ und dort aus dem Untermenü „Neu“ wähle ich „Remote-Adressbuch“.
  • Verbindungsname: Ein Name für das Adressbuch.
  • URL: „http://subdomain.domain.de/baikal/card.php/addressbooks/benutzername/default“. Gegebenenfalls müsst ihr die Werte für euch anpassen. Auch hier gilt, für ein zweites Adressbuch muss „default“ durch die Token ID des zweiten Adressbuches ersetzt werden.

Die anderen Einstellungen könnt ihr so vornehmen, wie euch danach ist. Das ist sowieso zu meist Geschmackssache, wann man über was informiert werden will. Jedenfalls klicke ich nun auf OK.

Damit die Kontakte nun sichtbar werden, also die erste Synchronisation durchgeführt wird, muss ich auf mein neues Adressbuch mit der rechten Maustaste Klicken und aus dem Kontextmenü „Synchronisieren“ wählen. Nach Eingabe von Benutzernamen und Passwort sollten die Daten eintrudeln. Allerdings, wenn ihr den Kalender schon erfolgreich synchronisiert habt, wird nicht mehr nach Benutzername und Passwort gefragt, weil das ja dieselben sind, und Thunderbird diese ja schon kennt.

Fazit

Jetzt habe ich Kontakte und Kalender auf meinem eigenen Server, mein iPhone, Mac und mein Windows-PC synchronisieren sich damit prima. In der Familie habe ich auch noch jemanden mit einem Android-Gerät. Vielleicht kann ich den ja überreden, sich mal CalDAV-Sync und CardDAV-Sync auf sein Gerät zu installieren und mal zu probieren, ob es damit auch geht. Einen User kann ich ja mit wenigen Klicks erstellen. 🙂