2 poin oleh GN⁺ 2025-04-11 | 1 komentar | Bagikan ke WhatsApp

Pengantar

  • Bagian pertama dari seri tentang memiliki sendiri data dan teknologi, yang menjelaskan cara mengintegrasikan solusi kalender self-hosted.
  • Karena sering bepergian, pengelolaan jadwal menjadi rumit, dan untuk mengatasi ketidaknyamanan sistem kalender yang ada, dibangunlah solusi sendiri.

Persyaratan

  • Jadwal ditampilkan sebagai blokir pada kalender kerja.
  • Istri dapat berlangganan kalender.
  • Acara hanya perlu dimasukkan satu kali.
  • Dapat diedit dari beberapa perangkat.
  • Dapat mengendalikan data sepenuhnya.
  • Masalah ini tidak dapat diselesaikan dengan membagikan kalender kerja kepada istri.

Solusi sebelumnya

  • Solusi berbagi kalender yang ada mengharuskan platform yang sama atau hanya menyediakan fitur terbatas.
  • Awalnya dimulai dengan menulis acara kalender menggunakan file YAML dan mengubahnya menjadi file ICS untuk dibagikan, tetapi pemeliharaannya menjadi sulit.

Arsitektur

  • Membangun solusi menggunakan server CalDAV agar kalender dapat dikelola dari beberapa perangkat.
  • Menghubungkan berbagai sumber data untuk memperbarui acara secara otomatis, lalu menyediakannya sebagai file ICS.

Pengaturan Baïkal

  • Menyiapkan server CalDAV menggunakan Baïkal dan menerapkannya dengan mudah melalui Docker Compose.
  • Menggunakan reverse proxy nginx agar dapat diakses melalui web.

Menyiapkan skema klasifikasi acara

  • Memanfaatkan properti CATEGORIES di iCalendar untuk mengklasifikasikan acara, dan menulis model data menggunakan Python enum.
  • Dengan ini, acara dapat dengan mudah dicari atau dibedakan berdasarkan warna.

Kompilasi dan berbagi kalender

  • Mengambil acara secara otomatis melalui IMAP, API, file ICS, dan lainnya, menambahkannya ke Baïkal, lalu mengubahnya menjadi file ICS untuk dibagikan di web.
  • Diatur agar diperbarui setiap 15 menit melalui pekerjaan cron.

Berbagi dengan kalender kerja

  • Menggunakan Google Script Engine untuk menyalin acara ke kalender kerja dan menerapkan color coding berdasarkan properti CATEGORIES.

Kesimpulan

  • Melalui pengujian selama 6 bulan, sistem ini terbukti bekerja dengan baik dan sangat membantu dalam mengelola jadwal perjalanan.
  • Biaya server sebesar $100 per bulan memang diperlukan, tetapi dinilai sangat sepadan dengan kemudahan pengelolaan jadwal.

1 komentar

 
GN⁺ 2025-04-11
Opini Hacker News
  • CalDAV rumit dan tidak intuitif. Pernah mencoba Radicale tetapi tidak puas. Secara pribadi sempat ingin mengimplementasikan server CalDAV, tetapi menyerah

    • Sebagai gantinya, file iCal di-host di bucket S3 dan menggunakan ICSx5 untuk sinkronisasi di Android. Tidak perlu CalDAV, hanya memakai HTTPS
    • Kalender FOSS masih kurang matang dan ICSx5 tidak berfungsi di GrapheneOS, jadi beralih ke Proton Calendar. Tidak sempurna, tetapi memenuhi kebutuhan
    • Menggunakan format iCalendar adalah pendekatan yang baik, tetapi fitur yang didukung berbeda-beda di tiap perangkat lunak, jadi diputuskan untuk menaruh metadata di kolom deskripsi
    • Menggunakan perangkat lunak untuk mengumpulkan data dari berbagai situs, memfilter hanya acara sosial yang diminati, lalu menggabungkannya ke dalam satu kalender
  • Radicale layak direkomendasikan sebagai server CalDAV modular yang ditulis dalam Python

    • Data disimpan sebagai file teks dan dilacak serta dicadangkan dengan git
    • Autentikasi menggunakan pam dari sistem host
    • Untuk berbagi kalender, skrip dijalankan secara berkala agar kalender di-symlink ke semua pengguna yang memiliki izin
    • Mendukung access control list dengan menggunakan properti CalDAV kustom dan plugin web yang dimodifikasi
    • Kalender publik memberi izin baca kepada pengguna 'public' melalui ACL
  • Menggunakan Mailcow(SoGO) dan Fastmail di server pribadi. Kedua kalender tidak tersinkronisasi dengan baik

    • Kalender Mailcow tidak bisa dibuat bekerja dengan baik bersama alat lain, jadi disinkronkan secara semi-otomatis
    • Ingin mencoba Baïkal. Ini juga bisa menjadi kesempatan untuk mengganti Mailcow dengan layanan email self-hosted lain
  • Pada awal 2000-an menggunakan Mozilla Sunbird untuk meng-host kalender di server Win2k. Sepertinya saat itu belum ada CardDAV

    • Semua data diimpor ke Google Calendar, dan masih bisa melihat tugas kuliah lama dan sebagainya
  • Sudah menggunakan Baikal selama beberapa tahun dan stabil. Terhubung menggunakan Thunderbird, DAVx5, dan Fossify Calendar

    • Fossify Calendar adalah aplikasi hasil fork dari aplikasi kalender Simple Mobile Tools, dan merupakan yang paling kaya fitur
    • Menyediakan semua opsi penting dengan sederhana sehingga nyaman digunakan
  • Ingin membuat sesuatu untuk foto. Ingin lepas dari Dropbox dan Google

    • Ingin fitur yang mengelompokkan foto berdasarkan hari jadi, aktivitas, keluarga, dan sebagainya lalu mengirimkannya ke ponsel
    • Ingin bisa menyimpan foto yang diambil di perangkat ke server
    • Sedang memasang mesin true-nas berkapasitas 2TB di tiga lokasi dan membangun fungsinya
  • Menyinkronkan Outlook dan Google Calendar lewat HTTP tidak andal

    • Karena masalah zona waktu, waktu rapat selalu salah
    • Rasanya ini bisa teratasi jika memakai sistem sendiri, tetapi khawatir rapat akan dibuat dengan selisih dua jam
  • Baikal terlihat menarik. Dulu menggunakan DAViCal, tetapi setelah versi iOS berubah, jadinya tidak andal

    • Saat mencoba lagi, akan mempertimbangkan DAViCal, Radicale, dan Baikal
  • Baru-baru ini sedang mencoba lepas dari cloud. Migrasi data memakan waktu dua minggu dan hasilnya bekerja lebih baik dari perkiraan

    • Menangani sendiri semua layanan kecuali email, dan Asus PN40 sangat membantu
    • CalDAV kurang stabil, tetapi Nextcloud memenuhi sebagian besar kebutuhan
    • Dikombinasikan dengan beberapa solusi open source untuk memenuhi semua kebutuhan
  • Ada juga cara tanpa server menggunakan DecSync

    • Thunderbird atau Evolution akan tersinkron dengan aplikasi Android
    • Kalender, kontak, tugas, dan RSS direplikasi ke peer lain