Baikal

Nein, es geht hier nicht um den gleichnamigen See, sondern um einen Adressbuch- und Kalender-Server 😀 .
Bisher habe ich dafür jahrelang die Google-Dienste verwendet, weil die:

  1. so einfach einzurichten sind
  2. auf allen möglichen Geräteklassen verfügbar sind
  3. wirklich gut und zuverlässig funktionieren
  4. Ich an das Google-Gründer-Motto ‚don’t be evil‘ halt doch irgendwie geglaubt habe, aber das hat sich ja inzwischen erledigt…

Aber, wie jeder weiss, haben all die schönen ‚kostenlosen‘ Helferlein ihren Preis: die Privatsphäre des Anwenders.

Ich bin zwar der Meinung, dass Google da immer noch besser ist als z.B. Facebook, weil sie die gesammelten Informationen ’nur‘ selber nutzen und nicht weiterverkaufen, aber wer weiss schon wirklich, was da alles passiert ? Oder was sie in Zukunft alles damit machen werden ?

Und genau deswegen habe ich nun mal wieder einen Anlauf unternommen und auf meinem Webhosting Baikal installiert.

Das hatte ich vor Jahren zwar schonmal gemacht, und es hatte auch funktioniert, jedoch hatte ich damals noch kein SSL Zertifikat und damit keine Sicherheit gegen ‚man-in-the-middle-attacks‘ oder ähnliches. Deswegen hatte ich das dann wieder zu den Akten gelegt.

Dieses Problem ist nun dank Let’s Encrypt mittlerweile gelöst, und so habe ich nun einen neuen Anlauf gemacht.

Also erstmal Baikal gemäss Doku installiert und eingerichtet, und gleich noch nach ein paar Tips und Tricks gesucht, um das optimal in meine IT-Landschaft zu integrieren.

Auf dem Desktop benutze ich fast ausschliesslich die KDE PIM Suite (Kmail/Kaddressbook/Kalendar) und mobil die entsprechenden Google Apps (Kontakte, Kalender). Und genau das alles sollte natürlich mit Baikal funktionieren.

Und nach ein wenig Herumprobieren tat es das dann auch 😉 .

Die wichtigsten Punkte sind:

  • Auth Typ ‚Basic‘ einstellen (nicht ‚Digest‘)
  • Im Client die richtige URL eintragen: ‚<SERVER>/baikal/html/dav.php‘

Zu den Clients noch folgende Anmerkungen:

Die KDE PIM Suite ist sozusagen selbsterklärend, man muss hier eben für den Kalender bzw. das Adressbuch eine DAV-Groupware-Ressource wählen und die dann entsprechend dem Server konfigurieren. Sobald das gemacht ist, können einfach die bisher verwendeten (Google-) Kalender bzw. Adressdaten als ical bzw. vcard Dateien exportiert werden – diese werden dann in die Baikal Ressource importiert.

Für Android eignet sich am besten das freie DAVdroid, aus dem F-Droid Projekt: DAVdroid . Dieses ist keine selbständige App zum Abrufen/Ansehen/Bearbeiten von Terminen und Kontakten, sondern lediglich eine Ressource, die sich in den Konten verankert und automatisch die Synchronisierung der Adress- und Kalenderdaten mit dem Server vornimmt.

In den eigentlichen Anwender-Apps (Kalender/Kontakte) kann man dann einstellen, welche Ressource für die Anzeige/Bearbeitung verwendet werden soll. Per Default sind das natürlich die Google Ressourcen – und wenn bis dahin alles richtig konfiguriert wurde, kann man nun einfach die Baikal-Ressourcen aktivieren und die von Google deaktivieren – fertig 😀 .

Ansonsten gibt es natürlich auch Anleitungen, wie man andere gängige Programme zur Zusammenarbeit mit Baikal bewegt, siehe z.B. TBird mit CardBook oder Lightning mit Baikal .
Nachtrag (18.09.18): gerade selber ausprobiert: Mit TBird ist es doch etwas tricky 😀 – man braucht für CalDav das Addon Lightning, das zwar selber bereits CalDav beherrscht, wichtig ist aber hier die korrekte Konfiguration der kompletten Kalender-URL in der Form <SERVER>/baikal/html/dav.php/calendars/<username>/<calendartoken> (das Standard-Token heisst ‚default‘).
Für das Adressbuch habe ich das Addon SogoConnector installiert, hier gilt für die Konfiguration prinzipiell dasselbe wie für Lightning, die korrekte URL heisst hier <SERVER>/baikal/html/dav.php/addressbook/<username>/<addressbooktoken> .

Wie immer, habe ich diese ‚Anleitung‘ erstmal für mich selbst als Referenz geschrieben, aber evtl. hilft das auch jemand anderem ?

Nachtrag (20.09.18): Und noch ein cooler Zusatz: InfCloud.
Damit hat man dann auch noch ein Webinterface für den Baikal Kalender und das Adressbuch, sogar noch schöner als das Google Zeug 😀 .
Mit ein wenig Probieren ergab sich die richtige Konfiguration in der Datei config.js wie folgt:

var globalNetworkCheckSettings={
	href: location.protocol+'//'+location.hostname+'/baikal/html/dav.php/principals/'+
		(location.port ? ':'+location.port: ''),
	timeOut: 90000,
	lockTimeOut: 10000,
	checkContentType: true,
	settingsAccount: true,
	delegation: true,
	additionalResources: [],
	hrefLabel: null,
	forceReadOnly: null,
	ignoreAlarms: false,
	backgroundCalendars: []
}

Und noch eine Anmerkung – da mein Hosting Paket den Editor ‚ed‘ nicht beinhaltet, wohl aber den Stream Editor ’sed‘, ist folgende Anpassung am Cache-Update Script cache_update.sh notwendig:

#! /bin/bash
# Use this script every time you modify any file to force browsers to reload it (empty HTML5 cache).

#command -v ed &> /dev/null || { echo "Error: 'ed' not installed. Aborting." > /dev/stderr; exit 1; }
#printf ",s/#V.*/#V $(date '+%Y%m%d%H%M%S')/\nw\nq\n" | sed -s cache.manifest

command -v sed &> /dev/null || { echo "Error: 'sed' not installed. Aborting." > /dev/stderr; exit 1; }
newd=$(date '+%Y%m%d%H%M%S')
echo $newd | sed -i 's/#V.*/#V '$newd'/' cache.manifest