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
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é
Radicale est un serveur CalDAV modulaire écrit en Python, que je recommande volontiers
publicvia les ACLJ’utilise Mailcow (SoGO) sur mon serveur personnel, ainsi que Fastmail. Les deux calendriers se synchronisent mal
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’utilise Baikal depuis plusieurs années, et c’est stable. Je le connecte avec Thunderbird, DAVx5 et Fossify Calendar
J’aimerais créer une fonctionnalité pour les photos. Je veux m’éloigner de Dropbox et de Google
Synchroniser Outlook et Google Calendar en HTTP n’est pas fiable
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
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
Il existe aussi une approche serverless avec DecSync. Thunderbird ou Evolution se synchronisent alors avec l’application Android