はじめに
- データと技術を自ら所有したいというシリーズの第1部として、セルフホストのカレンダーソリューションを統合する方法を説明する。
- 旅行が多く、予定管理が複雑になり、既存のカレンダーシステムの不便さを解消するために独自のソリューションを構築することになった。
要件
- 予定が業務カレンダーにブロック要素として表示されること。
- 妻がカレンダーを購読できること。
- イベントを一度だけ入力すればよいこと。
- 複数のデバイスで編集できること。
- データを完全に制御できること。
- 業務カレンダーを妻と共有する方法では問題を解決できないこと。
以前のソリューション
- 既存のカレンダー共有ソリューションは共通プラットフォームを必要とするか、機能が限定されていた。
- YAMLファイルを使ってカレンダーイベントを作成し、それをICSファイルに変換して共有する方法から始めたが、保守が難しくなった。
アーキテクチャ
- CalDAVサーバーを使い、複数のデバイスでカレンダーを管理できるソリューションを構築した。
- さまざまなデータソースと接続してイベントを自動更新し、それをICSファイルとして提供する。
Baïkalの設定
- Baïkalを使ってCalDAVサーバーを設定し、Docker Composeで簡単にデプロイした。
- nginxリバースプロキシを使ってWebからアクセスできるように設定した。
イベント分類体系の設定
- iCalendarの
CATEGORIES属性を活用してイベントを分類し、Python enumを使ってデータモデルを作成した。
- これにより、イベントを簡単に検索したり、色分けしたりできるようにした。
カレンダーのコンパイルと共有
- IMAP、API、ICSファイルなどを通じてイベントを自動的に取り込み、Baïkalに追加し、これをICSファイルに変換してWebで共有する。
- cronジョブにより15分ごとに更新されるよう設定した。
業務カレンダーとの共有
- Google Script Engineを使ってイベントを業務カレンダーにコピーし、
CATEGORIES属性に基づいてカラーコーディングを適用した。
結論
- 6か月間のテストを通じてシステムはうまく機能し、旅行日程の管理に大いに役立っている。
- 月額100ドルのサーバー費用はかかるが、予定管理の利便性を考えれば十分に価値があると判断している.
1件のコメント
Hacker Newsのコメント
CalDAV は複雑で直感的ではない。Radicale を使ってみたが満足できなかった。個人的に CalDAV サーバーを実装しようとしたが断念した
Radicale は Python で書かれたモジュール式の CalDAV サーバーで、おすすめできる
publicユーザーに読み取り権限を付与している個人サーバーで Mailcow(SoGO) と Fastmail を使っている。2つのカレンダーはうまく同期しない
2000年代初頭に Mozilla Sunbird を使って Win2k サーバーでカレンダーをホスティングしていた。CardDAV はなかった気がする
Baikal を数年間使っているが安定している。Thunderbird、DAVx5、Fossify Calendar を使って接続している
写真向けの機能を作りたい。Dropbox や Google から離れたい
Outlook と Google Calendar を HTTP で同期するのは信頼できない
Baikal は興味深そうだ。以前 DAViCal を使っていたが、iOS のバージョン変更で信頼できなくなった
最近クラウドから離れようとしている。データ移行には2週間かかったが、期待以上にうまく動いている
サーバーレスで DecSync を使う方法もある。Thunderbird または Evolution が Android アプリと同期する