Giới thiệu
- Đây là phần đầu tiên trong loạt bài về việc trực tiếp sở hữu dữ liệu và công nghệ của mình, giải thích cách tích hợp một giải pháp lịch tự host.
- Việc thường xuyên đi lại khiến quản lý lịch trình trở nên phức tạp, và tác giả đã xây dựng giải pháp riêng để khắc phục những bất tiện của các hệ thống lịch hiện có.
Yêu cầu
- Lịch trình được hiển thị dưới dạng mục chặn trong lịch công việc.
- Vợ có thể đăng ký theo dõi lịch.
- Chỉ cần nhập sự kiện một lần.
- Có thể chỉnh sửa trên nhiều thiết bị.
- Có thể kiểm soát dữ liệu hoàn toàn.
- Không thể giải quyết vấn đề bằng cách chia sẻ lịch công việc với vợ.
Giải pháp trước đây
- Các giải pháp chia sẻ lịch hiện có либо yêu cầu cùng một nền tảng, либо chỉ cung cấp chức năng hạn chế.
- Ban đầu, tác giả viết sự kiện lịch bằng tệp YAML rồi chuyển đổi sang tệp ICS để chia sẻ, nhưng việc bảo trì ngày càng khó khăn.
Kiến trúc
- Tác giả xây dựng một giải pháp dùng máy chủ CalDAV để có thể quản lý lịch trên nhiều thiết bị.
- Hệ thống kết nối với nhiều nguồn dữ liệu khác nhau để tự động cập nhật sự kiện và cung cấp chúng dưới dạng tệp ICS.
Thiết lập Baïkal
- Tác giả dùng Baïkal để thiết lập máy chủ CalDAV và triển khai dễ dàng thông qua Docker Compose.
- Sử dụng reverse proxy nginx để cấu hình truy cập qua web.
Thiết lập hệ thống phân loại sự kiện
- Tận dụng thuộc tính CATEGORIES của iCalendar để phân loại sự kiện và viết mô hình dữ liệu bằng Python enum.
- Nhờ đó có thể dễ dàng tìm kiếm sự kiện hoặc phân biệt chúng bằng màu sắc.
Biên dịch và chia sẻ lịch
- Tự động lấy sự kiện qua IMAP, API, tệp ICS, v.v. rồi thêm vào Baïkal, sau đó chuyển đổi thành tệp ICS để chia sẻ trên web.
- Thiết lập cập nhật mỗi 15 phút thông qua cron job.
Chia sẻ với lịch công việc
- Dùng Google Script Engine để sao chép sự kiện sang lịch công việc và áp dụng mã màu dựa trên thuộc tính CATEGORIES.
Kết luận
- Qua 6 tháng thử nghiệm, hệ thống hoạt động tốt và hỗ trợ đáng kể cho việc quản lý lịch trình di chuyển.
- Dù tốn $100 chi phí máy chủ mỗi tháng, tác giả cho rằng điều đó hoàn toàn xứng đáng nhờ sự tiện lợi trong quản lý lịch.
1 bình luận
Ý kiến trên Hacker News
CalDAV phức tạp và không trực quan. Đã thử dùng Radicale nhưng không thấy hài lòng. Cá nhân từng định tự triển khai máy chủ CalDAV nhưng đã bỏ cuộc
Radicale là một máy chủ CalDAV mô-đun viết bằng Python, khá đáng để đề xuất
publicthông qua ACLĐang dùng Mailcow(SoGO) và Fastmail trên máy chủ cá nhân. Hai lịch này đồng bộ với nhau không tốt lắm
Đầu những năm 2000 đã dùng Mozilla Sunbird để host lịch trên máy chủ Win2k. Có vẻ khi đó chưa có CardDAV
Đã dùng Baikal vài năm và thấy ổn định. Kết nối bằng Thunderbird, DAVx5 và Fossify Calendar
Muốn xây dựng một tính năng dành cho ảnh. Muốn rời bỏ Dropbox và Google
Việc đồng bộ Outlook và Google Calendar qua HTTP không đáng tin cậy
Baikal trông khá thú vị. Trước đây từng dùng DAViCal nhưng sau khi phiên bản iOS thay đổi thì nó không còn đáng tin nữa
Gần đây đang cố gắng rời khỏi cloud. Việc di chuyển dữ liệu mất 2 tuần và hoạt động tốt hơn kỳ vọng
Cũng có cách dùng DecSync theo kiểu serverless. Thunderbird hoặc Evolution sẽ đồng bộ với ứng dụng Android