1. Datenkraken
Kaum ist das neue Smartphone ausgepackt und eingeschaltet, drängen einen Hersteller wie Apple, Google oder Microsoft ein neues Konto in der unternehmenseigenen Cloud anzulegen. Nach etwas Fingerakrobatik gefolgt von Wischgesten ist der Account eingerichtet und synchronisiert fortan Kalender sowie Adressdaten mit dem Gerät. Wer über weitere Geräte verfügt oder seinen Desktop-PC ebenfalls mit dem Konto synchronisieren möchte, findet bei den Cloud-Diensten der »großen« Hersteller eine bequeme Lösung.
Noch vor der NSA-Affäre sollte es allgemein bekannt gewesen sein, dass es amerikanische Unternehmen mit dem Datenschutz nicht allzu genau nehmen. Im Grunde weiss niemand zu welchem Zweck die dort gespeicherten Adress- und Kalenderdaten genutzt werden. Datenschutzbewusste Anwender suchen folglich nach Alternativen, da viele den großen Anbietern kein Vertrauen mehr schenken.
Mit Baikal möchte ich heute eine OpenSource Lösung vorstellen, die sich durch seine Einfachheit und Stabilität auszeichnet. Für Privatanwender und kleine Büros, mit eigenem Webserver oder entsprechendem Hosting-Paket, mag dies eine Alternative darstellen.
2. Baikal
Seit gut einem halben Jahr (Februar 2013) wird Baikal von Jérôme Schneider entwickelt. Aktuell liegt das Projekt in der Version 0.2.6 vor und wird kontinuierlich verbessert. Von der niedrigen Versionsnummer sollten sich zukünftige Anwender nicht abschrecken lassen – bereits seit Version 0.2.0 läuft Baikal ohne Ausfälle oder Probleme auf mehreren Systemen.
Kurz zusammengefasst bietet es folgende Funktionen und Vorteile:
- Synchronisation von Kalender und Adressbüchern über die IETF Standard-Protokolle CardDAV, sowie CalDAV. Dies gewährleistet eine hohe Flexibilität und der Anwender begibt sich in keine Abhängigkeit zu proprietären Herstellerlösungen.
- Baikal arbeitet folglich mit jeder Anwendung zusammen, die das CardDAV bzw. CalDAV Protokoll unterstützt. Beide Protokolle sind bereits nativ in iOS, sowie Mac OS X integriert. Für Android existieren entsprechende Apps, welche die Protokoll-Funktionalität nachrüstet (DAVx⁵). Des Weiteren stehen für Linux (Mozilla Thunderbird mit Lightning Addon) und auch Windows (eM Client) entsprechende Anwendungen zur Verfügung.
- Über eine übersichtliche Web-Oberfläche lassen sich neue Benutzer, Kalender und Adressbücher anlegen. Weiterhin lassen sich in den Systemeinstellungen unter anderem die Datenbank Parameter modifizieren.
- Baikal basiert auf SabreDAV, Twig, und Bootstrap. Der komplette Quelltext ist einsehbar.
3. Inbetriebnahme
Baikal basiert auf PHP 5.3.1+ und nutzt SQLite3 oder eine MySQL Datenbank für die Verwaltung von Kalender und Kontakten. Je nach Hosting-Umgebung und Anspruch sind drei unterschiedliche Varianten von Baikal erhältlich:
- Flat-Package: Das Paket eignet sich für Anwender mit begrenztem Zugriff auf den Server und seine Ressourcen. Mittels FTP (besser SFTP!) werden die Installationsdateien kopiert und anschließend eine Installation über das Webinterface gestartet. Einfach und schnell.
- Regular-Package: Für alle mit Shell-Access über SSH eignet sich die zweite Variante von Baikal. Konfigurationsbeispiele für Apache und nginx werden bereits mitgeliefert und erleichtern die Inbetriebnahme. Zu finden unter »baikal-regular/Specific/virtualhosts/«.
- Bleeding-Edge: Als letzte Option bietet Baikal eine Entwickler-Variante. Direkt aus der Entwicklerumgebung werden die aktuellsten Quellen bezogen. Diese Variante eignet sich nicht für den Produktivbetrieb.
Abhängig von der gewählten Variante unterscheiden sich die Anforderungen an die Systemumgebung und die anschließende Installation.
3.1 Voraussetzungen
Als Grundvoraussetzung sind für jede Umgebung folgende Bestandteile erforderlich:
- PHP 5.3.1 oder neuer.
- Die PHP-Erweiterungen PHP Data Objects (PDO), DOM (php-xml) SQLite3 oder MySQL – je nachdem ob eine SQLite- oder MySQL-Datenbank eingesetzt werden soll. Ob diese Voraussetzungen bereits erfüllt sind kann einfach über die phpinfo() Funktion geprüft werden.
- 30 MB Festplattenspeicher.
- Hinweis: Baikal ist für den Betrieb in einer Subdomain konzipiert. Also beispielsweise »baikal.meinserver.de«.
3.2 Installation
Werden alle Voraussetzungen erfüllt, ist die Installation von Baikal binnen wenigen Minuten erledigt. Jérôme hat die Installation in seinem GitHub Repository beschrieben. Die FTP-Variante ist hier kurz zusammengefasst:
- Zunächst wird das Baikal Flat-Package von der Webseite heruntergeladen.
- Die entpackten Dateien werden anschließend mittels SFTP in das Subdomain-Verzeichnis des Servers geladen.
- Anschließend wird im Browser die Installation von Baikal angestoßen. Je nach Subdomain wird also aufgerufen: »http://baikal.meinserver.de
- Hinweis: Für die MySQL-Variante muss zunächst eine entsprechende Datenbank erstellt werden.
3.3 Einrichtung Kalender und Kontakte
Nach Abschluss der Installation können neue User und dazugehörige Kalender bzw. Adressbücher angelegt werden. Das lässt sich über das Web-Interface von Baikal erledigen: »https://baikal.meinserver.de/admin/«
Anschließend lassen sich die angelegten Kalender und Adressbücher über die Endgeräte synchronisieren. Je nach Gerät variiert die Konfiguration – im Grunde ist der Vorgang allerdings immer ähnlich:
- Zieladresse definieren:
- »https://baikal.meinserver.de/cal.php/principals/user« (iOS)
- »https://baikal.meinserver.de/cal.php/calendars/username/default« (Thunderbird)
- Benutzername eingeben
- Passwort eingeben
Sollten Probleme auftreten ist die Baikal GitHub Seite die erste Anlaufstelle.
4. iOS Fallstrick
Alle iOS-Varianten haben einen Bug und ignorieren den angegebenen Account-Pfad unter Erweiterte Einstellungen. iOS erwartet sowohl den Kalender, als auch das Adressbuch unter »/.well-known/caldav« bzw. »/.well-known/carddav«. Das ist natürlich Quatsch und wurde selbst in iOS 7 nicht gefixt. Abhilfe schaffen entsprechende Rewrite-Regeln für Apache und nginx.
4.1 Apache
RedirectMatch 301 ^/.well-known/caldav /cal.php RedirectMatch 301 ^/.well-known/carddav /card.php
4.2 nginx
rewrite ^/.well-known/caldav /cal.php redirect; rewrite ^/.well-known/carddav /card.php redirect;
5. Zugriff nur für bestimmte Geräte erlauben
Prinzipiell ist der Zugriff auf die Kontakte bzw. Kalender über eine Kombination aus Benutzername und Passwort abgesichert. Dennoch kann ein kleiner Trick für etwas mehr Sicherheit sorgen und Bruteforce-Angreifer in die Verzweiflung treiben. Allerdings macht die Modifikation nur dann Sinn, wenn die komplette Kommunikation zwischen Client und Baikal-Server mittels SSL abgesichert wird.
Unterstütze den Blog mit einem Dauerauftrag!
Unabhängig. Kritisch. Informativ. Praxisnah. Verständlich.
Die Arbeit von kuketz-blog.de wird vollständig durch Spenden unserer Leserschaft finanziert. Sei Teil unserer Community und unterstütze unsere Arbeit mit einer Spende.
5.1 User-Agents
Im Normalfall übertragen Browser bei der HTTP-Anfrage auf eine Webseite ihren User-Agent. Darin enthalten sind Informationen zur aktuellen Browser-Version und des verwendeten Betriebssystems. Generell ist die Übertragung des User-Agents optional und kann vor der Übertragung (via Browser-Add-on) auch beliebig manipuliert werden.
Nicht nur Browser übertragen User-Agents beim Zugriff auf bestimmte Ziele, sondern auch Endgeräte beim Aufruf ihrer Kontakte und Kalender. So schickt Beispielsweise ein iOS 6 Gerät einen User-Agent der iOS/6.1 beinhaltet. Mac OS X in der Version 10.8.5 schickt hingegen einen User-Agent der aus »12F37« (Buildnummer von 10.8.5) besteht. Soll der Zugriff also nur für jene Geräte erlaubt werden, kann die nginx Konfiguration entsprechend erweitert werden:
location ^~ /cal.php { ## Only allow iOS user agents if ($http_user_agent !~ (iOS/6.1|(12F37))) { return 444; [...] } location ^~ /card.php { ## Only allow iOS user agents if ($http_user_agent !~ (iOS/6.1|(12F37))) { return 444; [...] }
Clients deren Anfrage kein iOS/6.1 oder 12F37 beinhaltet wird die Verbindung direkt gekappt und keine Informationen zurückgesendet. Selbstverständlich lassen sich User-Agents beliebig fälschen. Woher soll ein Angreifer allerdings wissen, mit welchem User-Agent der Baikal-Server abgefragt wird? Ungebetene Gäste werden somit direkt am Gartenzaun abgewiesen, bevor sie die Haustür überhaupt erreichen können.
Hinweis: Die User-Agents sind dem access.log von Apache bzw. nginx zu entnehmen.
6. Fazit
Wer dem Gefängnis von Apple, Google, Microsoft und Co. entkommen möchte, findet in Baikal eine brauchbare und leicht zu bedienende Alternative. Der Lohn ist neben Freiheit, Flexibilität und Datenschutz vor allem eines: Eine Lösung mit der sich Kontakte und Kalender über (fast) alle Geräte hinweg synchronisieren lassen. Bereits ein einfaches Hosting-Paket für wenige Euro im Monat genügt, um dem Datenschutz-Nirvana zu entgehen.
Der Funktionsumfang von Baikal ist auf das Notwendigste reduziert – was aber der Nützlichkeit keinen Abbruch tut. Einmal eingerichtet verrichtet es zuverlässig seinen Dienst. Kennt ihr weitere Alternativen und Lösungen zur Verwaltung von Kontakten und Kalendern? Dann schreibt mir eine Nachricht oder hinterlasst einen Kommentar!
Wenn du über aktuelle Beiträge informiert werden möchtest, hast du verschiedene Möglichkeiten, dem Blog zu folgen:
31 Ergänzungen zu “Baikal – Datenschutz für Kontakte und Kalender”
Forum oder der Chat geeignete Anlaufstellen, um dein Anliegen zu diskutieren. Per E-Mail beantworte ich grundsätzlich keine (Support-)Anfragen – dazu fehlt mir einfach die Zeit. Kuketz-ForumAbschließender Hinweis
Blog-Beiträge erheben nicht den Anspruch auf ständige Aktualität und Richtigkeit wie Lexikoneinträge (z.B. Wikipedia), sondern beziehen sich wie Zeitungsartikel auf den Informationsstand zum Zeitpunkt des Redaktionsschlusses.Kritik, Anregungen oder Korrekturvorschläge zu den Beiträgen nehme ich gerne per E-Mail entgegen.
Klingt interessant.
Ich nutze Owncloud – auch ohne Probleme.
Oh, das klingt interessant. Werde ich auf jeden Fall mal testen.
Du kennst nicht zufällig einen guten CalDAV Web Client? Hin und wieder wäre auch der Zugriff auf den Baikal-Kalender über einen Browser interessant.
Kurz durch die Suchmaschine meines Vertrauens gejagt und gefunden: http://www.k5n.us/webcalendar.php
Ist eben self-hosted, aber wenn man sowieso einen Server für Baikal rennen hat, soll es darauf wohl kaum ankommen. Sofern ich das richtig überblicke, kommst du dann aber um MySQL nicht mehr herum.
Danke. Hab natürlich auch schon eine Weile gegoogelt. Was ich fand, sah aber alles aus wie 2004 und war nicht so richtig ansprechend. Daher meine Frage.
Den von Norbert verlinkten PHPicalendar würde ich mir mal ansehen. Optisch scheint der mir schon ganz gut.
Ich bin zwar nicht 100% zufrieden, habe aber den phpicalendar soweit am Laufen, dass ich jetzt auf einer Webseite den Kalender lesed zur Verfügung habe:
https://github.com/sproctor/php-calendar
Ich benutze auf meinem Synology NAS daheim problemlos ownCloud und syncronisiere sowohl zu Android als auch zu Windows (Outlook mit Web$AV Collaborator)
Kann ich nur empfehlen!
VIELEN DANK, dass du mich auf das ownCloud Paket für Synology aufmerksam gemacht hast.
Ich war schon ganz enttäuscht, dass es für Synology kein CardDav package gibt. Das ist der Grund, warum ich Baikal ausprobiert habe (hab extra nen Raspberry Pi dafür gekauft), aber ownCloud mit Synology ist zwar langsam (zumindest bei meinem NAS), aber super komfortabel.
DANKE!
Der oben referenziert webcalendar (k5n) hat meiner Erfahrung nach heftige Probleme mit Umlauten. Das sollte man zuerst testen …
Ich kann Zarafa empfehlen. Wer eine Synology Box sein Eigen nennt kann Zarafa für bis zu 5 User kostenslos nutzen (für alle anderen ist es glaube ich nicht kostenlos). Vorteil ist, dass es eine komplette Exchange Implementierung ist und man keine Sondereinstellungen auf den Clients machen muss. Einfach Exchange-Konto einbinden, fertig. Mail, Kontakte, Kalendar alles synchronisiert perfekt miteinander.
Hallo, Super Beitrag – aber wie sieht es mit Aktualisierungen aus? Kann man neu Versionen einfach drüberbügeln? Hat jemand schon mal von einer älteren auf eine neuere Version aktualisiert?
Grüße Lamitsch!
Ich erinnere mich an eine gute Update-Beschreibung als Textfile direkt im Baikal Zip.
Hallo,
ich bin durch Zufall auf diese Seite gestoßen, Super Thema, danach habe ich schon lange gesucht.
Ich habe einen freien Web Account bei Cwusrf.
Dort habe ich baikal per ftp installieren können.
Über http://www.baikal.cwsurf.de/baikal/admin kann ich das baikal webadmin administrieren, also user und Kalender und Kontake ankelegen.
Allerdings komme ich mit Thunderbird nicht auf den Kalender.
Wahrscheinlich liegt es an der Schreibweise der Adresse.
Hier bräuchte ich Hilfe.
Ein Aufruf wie : https://baikal.meinserver.de/cal.php/calendars/username/default funktioniert nicht.
Ich habe es mit versucht, geht aber auch nicht.
Eine Eingabe im Browser ergab folgendes Fehlerbild :
d:error>
SabreDAVExceptionForbidden
Requested uri (/baikal/cal.php/calendars/username/default) is out of base uri (/sting/o/m/xxxxxx/htdocs/baikal/cal.php/)
1.8.6
vielen Dank für Eure Hilfe, villeicht hat jemand ein Tipp für mich.
Thomas
Wie ist das denn mit der Sicherheit wenn ich Baikal auf meinem Webserver installiere? Ohne https werden doch dann alle Daten unverschlüsselt durchs Netz geschickt, oder? Dann wäre iCloud wohl die bessere Wahl. Wie ist Baikal gegen Angriffe (zB. brute force) abgesichert. Oder ist Baikal eigentlich nur für’s LAN gedacht?
HTTPS ist Pflicht. Ansonsten werden die Anmeldedaten unverschlüsselt übertragen.
Versuche Baikal auf meinem WHS unter IIS zum laufen zu bewegen…
Installation lief auch problemlos ab und ich kann auf den Adminbereich zugreifen, nur die Synchronisation will nicht klappen.
Wenn ich mit Thunderbird auf den Kalenderzugreifen möchte, erhalte ich ein 403 vom Server zurück (HTTP-Fehler 403.1 – Verboten: Ausführungszugriff verweigert.).
Wie es scheint interpretiert der Server die URL als Pfad (denn es so ja nicht gibt), anstatt die cal.php mit den weiteren Variablen (Username, Kalender-ID) aufzurufen!?
Wenn ich jedoch die selbe URL mit Firefox aufrufe, wird es hingegen korrekt aufgelöst und ich erhalte eine XML als Antwort (Natürlich mit dem Hinweis das GET bei CalDAV nicht implementiert ist).
Woran kann das Liegen?
Hat jemand eine Idee wo ich beim IIS was einstellen muss damit es klappt?
Geht das ganze nur über das Internet? Ich habe eine Synology und möchte das Adressen und Kalender nur über das Wlan zuhause syncronisieren.
Dafür habe ich ja meine eigene Cloud ohne Internet :)
Bis jetzt nutze ich zuhause ein Synology NAS mit owncloud. Trotz bemühungen beim einrichten funktionierte der Sync mit Android/Cyanogenmod und eM Clinet (Windows) nicht wirklich.
werde diese Alternative mal anschauen.
Danke für die Empfehlung.
Ich bin nach einer Lösung, mit der drei Nutzer auf einen Familienkalender lesend und schreibend zugreifen können. Kann ich das hiermit realisieren?
Grüße!
Kann ich nicht beurteilen. Teste es und komm dann mit einem kleinen Erfahrungsbericht zurück. :-)
Hallo,
ich versuche laufend Baikal zu installieren, aber es funktioniert nicht, ich bekomme laufend folgende Fehlermeldung:
Baïkal Install Tool is locked.
To unlock it, create (or re-create if it exists already) an empty file named ENABLE_INSTALL (uppercase, no file extension) in the Specific/ folder of Baïkal.
Ich habe vor dem Installationsversuch extra geschaut ob die ENABLE_INSTALL vorhanden ist und sie war da, dann rufe ich die URL zur Instal. auf, da kommt wieder die Meldung und die ENABLE_INSTALL ist verschwunden, hab sie wieder rein kopiert und wieder das selbe Spiel.
Was soll ich nun machen???
Gruß.
Gerhard
Eventuell hat es etwas mit diesem Problem zu tun: https://github.com/sabre-io/Baikal/issues/86
Hallo Mike,
eine tolle Übersicht über Baikal. Ich bin gerade dabei mich zwischen Baikal und Radicale für meinen RaspberryPi zu entscheiden. Wie siehst Du die beiden im Vergleich?
Beste Grüße, Constantin
Hallo Constantin,
ich hatte mich damals gegen Radicale entschieden, da der Konfigurationsaufwand für den nginx Webserver höher war. Da ich es einfach und überschaubar mag, habe ich mich damals für Baikal entschieden.
Hallo Mike,
ich bin fast am verzweifeln und möchte das Thema hier noch einmal aufgreifen.
Ich habe Baikal auf meiner Synology DiskStation mit DSM 5.2-5592 Update 4 laufen.
Mit dem iPhone iOS 9.0.1 läuft der Sync mit Baikal auch einwandfrei. Nur auf dem Mac (El Capitan) habe ich seit dem neuen Update keine Möglichkeit mehr, meine Kalender und Kontakte mit Baikal zu synchronisieren.
Hier greift wohl der von dir beschriebene Bug!
Vor dem Update lief auch auf dem Mac alles ohne Probleme.
Kannst du mir das mit den rewrite Regeln etwas genauer erklären?!
Wo ich was ändern muss, damit Mac OS die Daten richtig verarbeitet.
Ich wäre dir sehr dankbar.
Gruß Mike
Wird wohl wieder ein »Problem« des neuen Mac OS X sein. Kann ich dir leider aber nicht weiterhelfen, da ich es nicht testen kann.
Eventuell kannst du aus den Log-Files erkennen, auf was El Capitan zugreift. Da muss der Fehler liegen. Anschließend muss dann die Rewrite-Regel angepasst werden.
Ja, ich möchte die Regeln anpassen. Aber wo mache ich das?
Das kann ich dir nicht sagen, ich habe keine Synology und kenne den Aufbau nicht. Vermutlich im Wurzel-Verzeichnis der Synology in der .htaccess Datei.
Hallo Mike,
hallo Baikal-Gemeinde,
vielen Dank für die gute Anleitung, mit der Baikal gut installiert werden konnte. In den Fragen oben habe ich mein Problem leider nicht gefunden. Beim Aufrufen des Kalenders bzw. Users findet Baikal den User nicht und gibt die folgende Fehlermeldung aus (xyz steht für den angelegten user):
Sabre\DAV\Exception\NotFound Principal with name xyz not found 1.8.7
Der Kalender lässt sich somit weder in IOS einpflegen noch über einen Webbrowser aufrufen. Ist hierzu schon eine Lösung bekannt, wie der User erfolgreich gefunden werden kann?
Aufgerufen wurde wahlweise über:
http://servername/kalender/cal.php/principals/xyz
oder
http://servername/kalender/cal.php/calendars/xyz
Es lässt sich lediglich der Admin ansprechen:
http://servername/kalender/admin/
Der User wurde über den eingeloggten Admin angelegt. Über einen Tip, wie Baikal den User und seine Kalender finden und einbinden kann wäre ich dankbar.
Die gleiche Fehlermeldung kommt übrigens auch, wenn man direkt mit den z.B. „Default“ genannten Kalender aufrufen will.
http://servername/kalender/cal.php/calendars/xyz/default
Vielen Dank schon einmal im Voraus
Erri
Hallo zusammen,
wenn ich versehentlich einen Kalender gelöscht habe, gibt es eine Möglichkeit diesen wieder zu reaktivieren? Legt Baikal Backups in einem Verzeichnis auf dem rasberry ab? Und wenn ja, wo?
Vielen Dank.
Ralf