Kalender, Kontakte und Aufgaben via Baikal mit dem Raspberry Pi verwalten

Adressen, Aufgaben und Termine sind sehr persönliche Informationen, die man nach Möglichkeit nicht Firmen wie Google oder Microsoft anvertrauen sollte. Sofern man über einen kleinen Homeserver verfügt, kann man in wenigen Minuten seinen privaten Kalenderserver einrichten, der für den Datenaustausch zwischen Android, iPhone, Thunderbird, Fritz!Box usw. usw. sorgt.

Der Kalenderserver Baikal ist seit vielen Jahren ein Klassiker auf diesem Gebiet. Ob man damit nun nur seine eigenen Daten verwalten möchte oder z. B. einen Familienkalender für alle Geräte im Haushalt zur Verfügung stellen möchte – all das geht sehr einfach. Allerdings handelt es sich um einen reinen Sync-Server. Es wird also nicht ein Webkalender aufgerufen – man verwaltet alle Termine und Daten in seinen gewohnten Apps – also etwa via Thunderbird oder dem iPhone-Kalender.

Kalenderverwaltung in Betterbird/Thunderbird

Baikal benutzt für die Übertragung CalDAV (= Kalenderdaten) und CardDAV (= Kontaktdaten). Diese Protokolle werden von vielen Anwendungen automatisch erkannt. Unter iOS sind beide Protokolle von Haus aus in den Einstellungen aktivierbar, unter Android hat sich die App DAVx5 bewährt.

Installation auf dem Raspberry Pi

In meiner Paperless-ngx habe ich ja schon ausführlich beschrieben, wie einfach sich auf dem Raspberry Pi neue Anwendungen via Docker bzw. Docker-Compose installieren lassen: Man legt einen Pfad an, speichert eine kleine Textdatei, ruft Docker auf – und schon ist der neue Dienst im heimischen Netzwerk erreichbar.

Auch für Baikal würde ich diesen Weg vorschlagen. (Wer den Befehl „docker-compose“ bisher noch nicht auf dem Raspberry Pi benutzt hat, der findet in meinem Paperless-ngx-Artikel eine Schritt-für-Schritt-Anleitung für die Erstinstallation.)

1. Pfad anlegen

Wie man den Pfad nennt, ist gleichgültig. In diesem Beispiel habe ich ihn „baikal“ genannt. Also

sudo mkdir baikal
cd baikal

2. Textdatei erstellen

Nun eine Textdatei mit dem Namen „docker-compose.yml“ erstellen:

sudo nano docker-compose.yml

In diese Datei folgenden Text kopieren:

version: '3'

services:
  baikal:
    image: ckulka/baikal:latest
    container_name: baikal
    ports:
      - "82:80"
    volumes:
      - baikal-data:/var/www/html/Specific
    environment:
      BAIKAL_DAV_REALM: "MyBaikalServer"

volumes:
  baikal-data:

Achtung: Unter „ports“ habe ich „82:80“ eingetragen, da bei mir Port 80 schonen für einen anderen Webdienst belegt war. Standardeinstellung wäre „80:80“.

Datei sichern (Strg+O) und Editor beenden (Strg+X).

3. Server starten

Nun folgt auf der Kommandozeile der Befehl

sudo docker-compose up -d

Beim ersten Start werden einige Dateien geladen, nach 2 Minuten sollte alles installiert sein und der Kalender-Server mit der IP des Raspberry Pi erreichbar sein. Bei mir ist das „192.168.178.64:82„.

Baikal einrichten

Die Web-Oberfläche von Baikal wird einfach im Browser aufgerufen. „admin“ ist als Benutzername eingetragen, nur noch ein beliebiges Passwort vergeben. Das Ergebnis sieht dann so aus:

Unter dem Menüpunkt „Users and resources“ (oben auf der Seite) werden Anwender, Kalender und Adressbücher angelegt.

Für jeden Anwender können mehrere Kalender und Adressbücher definiert werden – also z. B. „Familie“, „Verein“, „Team“, „berufliche Kontakte“ usw. usw.

Mit „+ Add calendar“ wird ein neuer Kalender definiert. Dabei kann festgelegt werden, ob neben Terminen auch Aufgaben und Notizen übertragen werden sollen:

Sync einrichten

Zu jedem Kalender (bzw. Adressbuch) gehört ein eigener Link, der in die jeweilige Anwendung eingeben werden muss.

Beispiel Thunderbird:

  1. In den Kalenderbereich gehen.
  2. „Neuer Kalender“ (unten) anklicken.
  3. „Im Netzwerk“ auswählen.

Anschließend den in Baikal benutzten Nutzernamen und den dort kopierten Link eintragen:

Mit „Kalender suchen“ sollte Baikal dann direkt gefunden werden, Passwort noch eingeben.

Kalendertyp „CalDAV“ bestätigen und auf „Abonnieren“ klicken.

Nun steht der neue Kalender zur Verfügung:

Die Eintragungen – Termin mit Notiz, ToDo-Liste – werden mit den Apps der anderen Geräte synchronisiert. Dort muss man natürlich zuvor den gleichen Link eingetragen haben. Unter iOS werden z. B. die nativen Apps „Erinnerungen“ (für Aufgaben) und „Kalender“ verwendet.

Ähnlich geht man bei Adressbüchern/Kontakten vor. Diese kann man sogar mit der Fritz!Box synchronisieren, sofern der Raspberry Pi via „https“ zugänglich ist:

Der versteckte Admin-Bereich

Es gibt noch eine zweite Admin-Oberfläche, die leicht übersehen wird. Zu jedem Nutzernamen gibt es einen speziellen Link, der weitere Einstellungen ermöglicht:

Hier kann man etwa *.ics-Dateien des Kalenders exportieren, einzelne Kalender für andere Nutzer freigeben oder Schreib-/Leserechte definieren:

Insgesamt macht Baikal einen guten Eindruck – und da der kleine Raspberry Pi meist ohnehin nicht ausgelastet ist: Warum nicht einen Versuch wagen?

7 Kommentare

  • Schmutzfink

    Hallo Herbert.
    Danke für die ausführliche Anleitung. Ich stand lange Jahre mit Baikal auf Kriegsfuß, da die Installation auf meiner Synology (ohne Docker-Kompatibilität!) sehr aufwändig war. Nun habe ich – auf meiner neuen DS- es wieder angepackt und nach deiner Anleitung in wenigen Minuten installiert.
    Eine Sache finde ich jedoch merkwürdig/wurmt mich. Laut ckulka/baikal-docker auf Github sollten unter den Pfaden /var/www/baikal/Specific und /var/www/baikal/config die für’s Backup wichtigen Daten liegen. Bei mir ist unter /var kein www-Ordner zu finden. Ich vermute, weil ich keinen Webserver auf meiner Synology installiert hatte. Nun frage ich mich, wo die Datenbank liegt. Der /docker/baikal enthält lediglich die yaml-Datei.
    Hast du eine Idee?
    Besten Gruß

    • Herbert

      Hallo,
      bei meinem Raspberry Pi sollte die Datenbank entsprechend dem YML-Eintrag unter „/var/www/html/Specific/db“ zu finden sein – evtl. ist die Ordnerstruktur bei Deiner Synology eine andere …

  • Norbert

    schöne Anleitung, vielen Dank! Lief bei mir auf Anhieb auf einem Raspi 3b+.

    Aber genau wie Schmutzfink kann ich die Daten nicht finden. Es gibt keinen Ordner /var/www. Habe Deine yml Datei mit docker-compose benutzt, allerdings steht In der Baikal Admin Oberfläche steht unter Database settings ein etwas anderer Pfad als in der yml Datei:
    /var/www/baikal/Specific/db/db.sqlite
    auf dem Raspi zeigt ls /var nur diese Ordner: backups cache lib local lock log mail opt run spool swap tmp
    Irgendwo müssen die Daten aber ja sein. Hast Du oder hat sonst jemand einen Tipp ?

    • Herbert

      Da ich keinen Raspberry Pi 3 habe, kann ich leider nicht nachsehen. Welches OS in welcher Variante hast Du denn installiert? Raspberry Pi OS mit 64-bit?

    • Herbert

      Zwar würde ich jetzt vermuten, dass die Pfade identisch sind, aber da ich kein 32-bit-System einsetze, kann ich es leider nicht überprüfen.

  • Norbert

    „wer suchet der findet“ : die Datenbank db.sqlite liegt bei mir unter

    /var/lib/docker/volumes/sehrlangezahl/_data/db

    die lange Zahl dürfte installations abhägig sein und bei jeder Docker Installation anders. Aber wenn man schon mal weiß wo man suchen muss, findet sich’s leichter 🙂 – vielleicht hilft’s jemandem.

Eine Antwort schreiben

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