2 Punkte von GN⁺ 2025-04-11 | 1 Kommentare | Auf WhatsApp teilen

Einführung

  • Dies ist der erste Teil einer Serie darüber, Daten und Technik selbst zu besitzen, und erklärt, wie man eine selbst gehostete Kalenderlösung integriert.
  • Häufige Reisen machten die Terminplanung komplex, und um die Unannehmlichkeiten bestehender Kalendersysteme zu lösen, wurde eine eigene Lösung aufgebaut.

Anforderungen

  • Termine werden im Arbeitskalender als Blocker angezeigt.
  • Die Ehefrau kann den Kalender abonnieren.
  • Ereignisse müssen nur einmal eingegeben werden.
  • Bearbeitung ist auf mehreren Geräten möglich.
  • Die Daten können vollständig kontrolliert werden.
  • Das Problem lässt sich nicht dadurch lösen, dass der Arbeitskalender mit der Ehefrau geteilt wird.

Frühere Lösung

  • Bestehende Lösungen zur Kalenderfreigabe erforderten eine gemeinsame Plattform oder boten nur eingeschränkte Funktionen.
  • Zunächst wurde mit YAML-Dateien gearbeitet, um Kalenderereignisse zu schreiben und sie zur Freigabe in ICS-Dateien umzuwandeln, doch die Wartung wurde schwierig.

Architektur

  • Mit einem CalDAV-Server wurde eine Lösung aufgebaut, mit der sich Kalender auf mehreren Geräten verwalten lassen.
  • Sie verbindet sich mit verschiedenen Datenquellen, aktualisiert Ereignisse automatisch und stellt sie als ICS-Dateien bereit.

Baïkal-Einrichtung

  • Mit Baïkal wurde ein CalDAV-Server eingerichtet und per Docker Compose einfach bereitgestellt.
  • Über einen nginx-Reverse-Proxy wurde der Zugriff über das Web konfiguriert.

Einrichtung eines Systems zur Ereignisklassifizierung

  • Die CATEGORIES-Eigenschaft von iCalendar wurde genutzt, um Ereignisse zu klassifizieren, und mit Python-enum wurde ein Datenmodell erstellt.
  • Dadurch lassen sich Ereignisse leicht suchen oder farblich unterscheiden.

Kalender kompilieren und teilen

  • Ereignisse werden automatisch über IMAP, API, ICS-Dateien usw. importiert, zu Baïkal hinzugefügt, in ICS-Dateien umgewandelt und im Web geteilt.
  • Über einen Cron-Job werden sie alle 15 Minuten aktualisiert.

Teilen mit dem Arbeitskalender

  • Mit der Google Script Engine werden Ereignisse in den Arbeitskalender kopiert und auf Basis der CATEGORIES-Eigenschaft farblich codiert.

Fazit

  • Sechs Monate Tests haben gezeigt, dass das System gut funktioniert und bei der Verwaltung von Reiseplänen sehr hilfreich ist.
  • Die Serverkosten von 100 US-Dollar pro Monat werden angesichts der Bequemlichkeit bei der Terminplanung als lohnend bewertet.

1 Kommentare

 
GN⁺ 2025-04-11
Hacker-News-Kommentare
  • CalDAV ist komplex und nicht intuitiv. Ich habe Radicale ausprobiert, war aber nicht zufrieden. Ich habe sogar versucht, persönlich einen CalDAV-Server zu implementieren, habe dann aber aufgegeben

    • Stattdessen habe ich eine iCal-Datei in einem S3-Bucket gehostet und mit ICSx5 auf Android synchronisiert. CalDAV war nicht nötig, nur HTTPS
    • FOSS-Kalender sind weiterhin unzureichend, und da ICSx5 auf GrapheneOS nicht funktioniert, bin ich zu Proton Calendar gewechselt. Es ist nicht perfekt, erfüllt aber meine Anforderungen
    • Die Nutzung des iCalendar-Formats ist ein guter Ansatz, aber da die unterstützten Funktionen je nach Software unterschiedlich sind, habe ich beschlossen, Metadaten im Beschreibungsfeld unterzubringen
    • Ich sammle mit Software Daten von verschiedenen Websites, filtere nur die sozialen Veranstaltungen heraus, die mich interessieren, und führe sie in einem einzigen Kalender zusammen
  • Radicale ist als modularer CalDAV-Server, geschrieben in Python, empfehlenswert

    • Die Daten werden als Textdateien gespeichert und mit git versioniert und gesichert
    • Für die Authentifizierung wird PAM des Host-Systems verwendet
    • Zum Teilen von Kalendern wird regelmäßig ein Skript ausgeführt, das die Kalender für alle berechtigten Benutzer per symbolischem Link verfügbar macht
    • Mit benutzerdefinierten CalDAV-Eigenschaften und einem modifizierten Web-Plugin werden Zugriffskontrolllisten unterstützt
    • Öffentliche Kalender vergeben per ACL Leserechte an den Benutzer public
  • Ich nutze Mailcow (SoGO) auf meinem privaten Server und Fastmail. Die beiden Kalender synchronisieren sich nicht gut

    • Ich habe den Kalender von Mailcow nicht dazu gebracht, mit anderen Tools gut zusammenzuarbeiten, daher synchronisiere ich halbautomatisch
    • Ich würde gern Baïkal ausprobieren. Das wäre auch eine Gelegenheit, Mailcow durch einen anderen selbstgehosteten Mail-Dienst zu ersetzen
  • Anfang der 2000er habe ich Mozilla Sunbird genutzt, um Kalender auf einem Win2k-Server zu hosten. CardDAV gab es damals wohl noch nicht

    • Ich habe alle Daten in Google Calendar importiert und kann dort alte Uni-Aufgaben und Ähnliches noch sehen
  • Ich nutze Baikal seit einigen Jahren, und es ist stabil. Verbunden habe ich es mit Thunderbird, DAVx5 und Fossify Calendar

    • Fossify Calendar ist ein Fork der Kalender-App von Simple Mobile Tools und bietet die meisten Funktionen
    • Es stellt einfach alle Optionen bereit und ist dadurch bequem zu nutzen
  • Ich würde gern Funktionen für Fotos bauen. Ich möchte von Dropbox und Google wegkommen

    • Ich möchte Fotos nach Jahrestagen, Aktivitäten, Familie usw. gruppieren und ans Handy senden
    • Ich möchte Fotos, die auf Geräten aufgenommen werden, auf dem Server speichern können
    • Ich habe an drei Standorten true-nas-Maschinen mit 2 TB eingerichtet und baue die Funktionen darauf auf
  • Die Synchronisierung von Outlook und Google Calendar über HTTP ist nicht zuverlässig

    • Wegen Zeitzonenproblemen stimmen Besprechungszeiten nie
    • Mit einem eigenen System ließe sich das wohl lösen, aber ich habe Sorge, dass Termine dann mit zwei Stunden Verschiebung erstellt werden
  • Baikal sieht interessant aus. Früher habe ich DAViCal genutzt, aber nach Änderungen in iOS-Versionen war es nicht mehr zuverlässig

    • Wenn ich es noch einmal versuche, würde ich DAViCal, Radicale und Baikal in Betracht ziehen
  • Ich versuche in letzter Zeit, aus der Cloud auszusteigen. Die Datenmigration hat zwei Wochen gedauert und funktioniert besser als erwartet

    • Mit Ausnahme von E-Mail betreibe ich jetzt alle Dienste selbst, wobei ein Asus PN40 sehr hilfreich ist
    • CalDAV ist instabil, aber Nextcloud deckt die meisten Anforderungen ab
    • In Kombination mit mehreren Open-Source-Lösungen decke ich damit praktisch alle Bedürfnisse ab
  • Es gibt auch eine serverlose Methode mit DecSync. Thunderbird oder Evolution werden mit Android-Apps synchronisiert

    • Kalender, Kontakte, Aufgaben und RSS werden auf andere Peers repliziert