2 points par GN⁺ 2025-04-11 | 1 commentaires | Partager sur WhatsApp

Introduction

  • Première partie d’une série consacrée à la prise de contrôle directe de ses données et de sa technologie, expliquant comment intégrer une solution de calendrier auto-hébergée.
  • Des voyages fréquents rendaient la gestion du planning complexe, et l’autrice a fini par construire sa propre solution pour résoudre les limites des systèmes de calendrier existants.

Exigences

  • Les rendez-vous doivent apparaître comme des blocs de réservation dans le calendrier professionnel.
  • L’épouse doit pouvoir s’abonner au calendrier.
  • Les événements ne doivent être saisis qu’une seule fois.
  • Ils doivent pouvoir être modifiés depuis plusieurs appareils.
  • Les données doivent être entièrement maîtrisées.
  • Il n’est pas possible de résoudre le problème en partageant simplement le calendrier professionnel avec l’épouse.

Solution précédente

  • Les solutions classiques de partage de calendrier imposaient une plateforme commune ou n’offraient que des fonctionnalités limitées.
  • La démarche a commencé par la rédaction d’événements de calendrier dans des fichiers YAML, ensuite convertis en fichiers ICS pour être partagés, mais cette approche est devenue difficile à maintenir.

Architecture

  • Une solution a été construite autour d’un serveur CalDAV afin de gérer le calendrier depuis plusieurs appareils.
  • Elle se connecte à diverses sources de données pour mettre automatiquement à jour les événements, puis les expose sous forme de fichiers ICS.

Configuration de Baïkal

  • Baïkal est utilisé pour mettre en place le serveur CalDAV, avec un déploiement simplifié via Docker Compose.
  • Un reverse proxy nginx est configuré pour rendre le service accessible sur le Web.

Mise en place d’un système de classification des événements

  • La propriété CATEGORIES d’iCalendar est utilisée pour classer les événements, et un modèle de données est défini avec un enum Python.
  • Cela permet de retrouver facilement les événements ou de les distinguer par couleur.

Compilation et partage du calendrier

  • Les événements sont récupérés automatiquement via IMAP, API, fichiers ICS, etc., puis ajoutés à Baïkal avant d’être convertis en fichiers ICS et partagés sur le Web.
  • Une tâche cron assure une mise à jour toutes les 15 minutes.

Partage avec le calendrier professionnel

  • Google Script Engine est utilisé pour copier les événements vers le calendrier professionnel et appliquer un code couleur fondé sur la propriété CATEGORIES.

Conclusion

  • Après six mois de tests, le système fonctionne bien et aide considérablement à gérer les déplacements.
  • Le serveur coûte 100 $ par mois, mais la praticité apportée à la gestion du planning est jugée largement suffisante pour en justifier la valeur.

1 commentaires

 
GN⁺ 2025-04-11
Avis Hacker News
  • CalDAV est complexe et peu intuitif. J’ai essayé Radicale, mais sans en être satisfait. J’ai envisagé d’implémenter moi-même un serveur CalDAV, puis j’ai abandonné

    • À la place, j’ai hébergé des fichiers iCal dans un bucket S3 et utilisé ICSx5 pour la synchronisation sur Android. Pas besoin de CalDAV, seulement de HTTPS
    • Les calendriers FOSS restent insuffisants, et comme ICSx5 ne fonctionne pas sur GrapheneOS, je suis passé à Proton Calendar. Ce n’est pas parfait, mais cela couvre mes besoins
    • Utiliser le format iCalendar est une bonne approche, mais les fonctionnalités prises en charge varient selon les logiciels, donc j’ai décidé de mettre les métadonnées dans le champ de description
    • J’utilise un logiciel pour collecter des données depuis différents sites, filtrer uniquement les événements sociaux qui m’intéressent, puis les regrouper dans un calendrier unique
  • Radicale est un serveur CalDAV modulaire écrit en Python, que je recommande volontiers

    • Les données sont stockées sous forme de fichiers texte, puis suivies et sauvegardées avec git
    • L’authentification utilise le pam du système hôte
    • Pour le partage des calendriers, j’exécute périodiquement un script qui crée un lien symbolique vers les calendriers pour tous les utilisateurs autorisés
    • J’assure la prise en charge des listes de contrôle d’accès avec des propriétés CalDav personnalisées et un plugin web modifié
    • Les calendriers publics accordent les droits de lecture à l’utilisateur public via les ACL
  • J’utilise Mailcow (SoGO) sur mon serveur personnel, ainsi que Fastmail. Les deux calendriers se synchronisent mal

    • Je n’ai pas réussi à faire fonctionner correctement le calendrier de Mailcow avec d’autres outils, donc je fais une synchronisation semi-automatique
    • J’aimerais essayer Baïkal. Ce serait aussi l’occasion de remplacer Mailcow par un autre service mail auto-hébergé
  • Au début des années 2000, j’utilisais Mozilla Sunbird pour héberger un calendrier sur un serveur Win2k. Il ne me semble pas que CardDAV existait

    • J’ai importé toutes les données dans Google Calendar, et je peux encore voir d’anciens devoirs universitaires, entre autres
  • J’utilise Baikal depuis plusieurs années, et c’est stable. Je le connecte avec Thunderbird, DAVx5 et Fossify Calendar

    • Fossify Calendar est une app dérivée de l’application calendrier de Simple Mobile Tools, et c’est la plus riche en fonctionnalités
    • Elle propose simplement toutes les options, donc elle est agréable à utiliser
  • J’aimerais créer une fonctionnalité pour les photos. Je veux m’éloigner de Dropbox et de Google

    • Je veux pouvoir regrouper les photos par anniversaire, activité, famille, etc., puis les envoyer vers le téléphone
    • Je veux pouvoir stocker sur le serveur les photos prises depuis l’appareil
    • J’ai installé des machines true-nas de 2 To dans trois lieux et je suis en train de développer cette fonctionnalité
  • Synchroniser Outlook et Google Calendar en HTTP n’est pas fiable

    • À cause des problèmes de fuseau horaire, les heures de réunion sont toujours erronées
    • J’ai l’impression que cela serait résolu avec mon propre système, mais j’ai peur que des réunions soient créées avec deux heures de décalage
  • Baikal a l’air intéressant. J’ai utilisé DAViCal par le passé, mais un changement de version d’iOS l’a rendu peu fiable

    • Quand je réessaierai, je considérerai DAViCal, Radicale et Baikal
  • Récemment, j’essaie de quitter le cloud. La migration des données a pris deux semaines et cela a mieux fonctionné que prévu

    • Je gère moi-même tous les services sauf l’e-mail, et l’Asus PN40 m’aide beaucoup
    • CalDAV est instable, mais Nextcloud couvre l’essentiel de mes besoins
    • En le combinant avec plusieurs solutions open source, j’arrive à couvrir tous mes besoins
  • Il existe aussi une approche serverless avec DecSync. Thunderbird ou Evolution se synchronisent alors avec l’application Android

    • Calendrier, contacts, tâches et RSS sont répliqués vers d’autres pairs