SSD Nodes Learn Hosting plans →
Panduan Matt ConnorOleh Matt Connor

Cara Menyiapkan CalDAV di VPS dengan Radicale

Sinkronkan kalender ponsel dan laptop tanpa Google. Pelajari setup Radicale di VPS, TLS, discovery, koleksi per pengguna, backup, dan konfigurasi klien.

Yang Anda bangun

Kalender yang di-host sendiri adalah satu server CalDAV pada VPS yang Anda kendalikan, di balik TLS, dengan satu login untuk setiap orang. Ponsel di saku dan laptop di meja Anda menampilkan acara yang sama. Laptop pasangan Anda juga menampilkannya. Tidak ada akun Google sebagai perantara.

Ini berbeda dari halaman pemesanan yang di-host sendiri. Halaman pemesanan ditujukan untuk orang lain. Halaman tersebut memublikasikan waktu luang Anda dan memungkinkan seseorang memilih salah satunya. Server kalender ditujukan untuk perangkat Anda sendiri. Server tersebut menyimpan acara dan menjaga agar semua klien tetap sinkron. Banyak orang menjalankan keduanya. Alat pemesanan kemudian membaca ketersediaan dari server CalDAV yang Anda bangun di sini.

Instalasinya kecil. Radicale adalah satu paket Python dengan konfigurasi sekitar sepuluh baris. Hal yang menentukan apakah setup ini bertahan selama bulan pertama adalah TLS, discovery, koleksi per pengguna, dan backup. Bagian berikut berfokus terutama pada hal-hal tersebut.

Apa itu CalDAV, dan mengapa penting?

CalDAV adalah sinkronisasi kalender melalui HTTP. CalDAV didefinisikan dalam RFC 4791 sebagai ekstensi untuk WebDAV (web distributed authoring and versioning, sekumpulan metode HTTP tambahan yang didefinisikan dalam RFC 4918). Kalender adalah koleksi yang berperilaku seperti direktori. Satu acara adalah satu file di dalamnya, yang ditulis dalam format teks iCalendar (RFC 5545), format yang sama dengan lampiran .ics dalam email Anda.

Klien menggunakan HTTP biasa dengan beberapa metode tambahan. PROPFIND menanyakan konten yang tersedia dan propertinya. REPORT meminta bagian yang difilter, seperti semua acara dalam rentang tanggal tertentu. PUT menulis satu acara, sedangkan DELETE menghapusnya. Setiap acara memiliki baris UID. Identifier tersebut digunakan agar dua perangkat dapat memastikan bahwa keduanya melihat acara yang sama, bukan salinannya.

Portabilitas adalah manfaat utamanya, dan itulah alasan utama untuk menggunakannya. iOS, macOS, Thunderbird, Evolution, dan Android melalui DAVx⁵ semuanya mendukung CalDAV. Data Anda tidak terikat pada server yang Anda pilih saat ini. Pindahkan file ke server CalDAV lain, arahkan klien ke hostname baru, dan tidak ada hal lain yang berubah.

CardDAV tersedia bersama CalDAV. Konsepnya sama untuk kontak, yang didefinisikan dalam RFC 6352 dan menyimpan file vCard, bukan acara. Setiap server di bawah ini menyediakan kedua protokol dari akun yang sama. Jadi, setelah kalender berfungsi, buku alamat cukup diaktifkan melalui satu opsi.

Server CalDAV mana yang sebaiknya Anda gunakan?

Radicale adalah pilihan paling sederhana yang tetap berfungsi. Aplikasi ini menggunakan Python, tidak memerlukan database, dan menyimpan data dalam folder yang berisi file biasa. Panduan ini menggunakannya karena kalender rumah tangga tidak memerlukan lebih dari itu dan karena sangat sedikit hal yang dapat gagal pada pukul tiga pagi.

Baikal adalah pilihan dengan panel administrasi web. Aplikasi ini berjalan di PHP dan library sabre/dav, menyimpan pengguna serta kalender di SQLite atau MySQL, dan memungkinkan Anda menambahkan seseorang melalui browser, bukan melalui command line. Pilih opsi ini jika akun sering ditambahkan dan dihapus.

Nextcloud tepat jika kalender merupakan salah satu dari beberapa fitur yang Anda perlukan. Anda mendapatkan kalender, kontak, file, dan aplikasi seluler, dengan konsekuensi harus menggunakan PHP-FPM, database, dan runner untuk menjalankan job latar belakang. Jika ini terdengar terlalu berat untuk kebutuhan Anda, alternatif Nextcloud yang lebih ringan membahas komprominya, sedangkan sinkronisasi file yang di-host sendiri membahas kebutuhan lain yang biasanya menjadi alasan orang memasang Nextcloud.

DAViCal adalah opsi PostgreSQL yang telah lama tersedia. Opsi ini layak dipertimbangkan hanya jika Anda sudah menjalankan PostgreSQL dan ingin menyimpan data kalender di dalamnya.

Instal Radicale di Ubuntu 24.04

Radicale 3.8.3, yang diberi tag pada 8 Oktober 2026, adalah rilis terbaru per 11 Oktober 2026. Instal Radicale dalam virtual environment khusus, dengan extra bcrypt yang diperlukan oleh file kata sandi di bawah ini.

sudo apt update
sudo apt install -y python3-venv apache2-utils nginx
sudo useradd --system --user-group --home-dir / --shell /usr/sbin/nologin radicale
sudo install -d -o radicale -g radicale -m 750 /var/lib/radicale/collections
sudo install -d -m 750 -o root -g radicale /etc/radicale
sudo python3 -m venv /opt/radicale/venv
sudo /opt/radicale/venv/bin/pip install --upgrade 'radicale[bcrypt]'

Virtual environment bukan sekadar pilihan gaya. sudo pip install radicale ke system Python gagal dengan error: externally-managed-environment karena Ubuntu menandai Python-nya sebagai milik apt agar pip tidak dapat menimpa file paket.

Tulis /etc/radicale/config:

[server]
hosts = 127.0.0.1:5232

[auth]
type = htpasswd
htpasswd_filename = /etc/radicale/users
htpasswd_encryption = autodetect

[storage]
filesystem_folder = /var/lib/radicale/collections

hosts sengaja mengikat ke loopback. nginx melakukan terminasi TLS dan meneruskan koneksi ke port tersebut, sehingga Radicale tidak berhadapan langsung dengan Internet. Contoh upstream yang menggunakan 0.0.0.0:5232 membuka service tanpa enkripsi yang menerima kata sandi. Itulah satu kesalahan yang penting untuk dihindari di sini.

Sekarang buat akun. -B memilih bcrypt, yang dibaca Radicale dengan htpasswd_encryption = autodetect setelah modul bcrypt dari instalasi radicale[bcrypt] di atas tersedia:

sudo htpasswd -B -c /etc/radicale/users you
sudo htpasswd -B /etc/radicale/users partner
sudo chown root:radicale /etc/radicale/users
sudo chmod 640 /etc/radicale/users

-c membuat file dan mengosongkan isinya. Gunakan perintah ini hanya untuk pengguna pertama. Jika htpasswd -B -c dijalankan lagi beberapa bulan kemudian, semua akun yang ditambahkan setelah akun pertama akan terhapus. Gejalanya adalah satu orang dapat melakukan sinkronisasi, sedangkan semua pengguna lain terus-menerus diminta memasukkan kata sandi. SHA-512 crypt (-5) tidak dapat digunakan di sini: htpasswd baru mendukung SHA-2 sejak Apache 2.4.59, sedangkan Ubuntu 24.04 menyediakan apache2-utils 2.4.58, yang htpasswd-nya tidak memiliki flag -5.

Buat /etc/systemd/system/radicale.service, yang diadaptasi dari unit dalam dokumentasi Radicale:

[Unit]
Description=CalDAV and CardDAV server
After=network.target
Requires=network.target

[Service]
ExecStart=/opt/radicale/venv/bin/python -m radicale
Restart=on-failure
User=radicale
UMask=0027
PrivateTmp=true
ProtectSystem=strict
ProtectHome=true
PrivateDevices=true
ProtectKernelTunables=true
ProtectKernelModules=true
ProtectControlGroups=true
NoNewPrivileges=true
ReadWritePaths=/var/lib/radicale/

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now radicale
curl -i http://127.0.0.1:5232/

Hasil yang sehat adalah 401 Unauthorized dengan header WWW-Authenticate: service sedang mendengarkan dan autentikasi aktif. Connection refused berarti tidak ada proses yang sedang mendengarkan pada alamat tersebut. Biasanya service gagal start atau sudah berhenti setelah itu. journalctl -u radicale -n 50 menunjukkan opsi yang ditolak oleh service. ProtectSystem=strict memasang filesystem dalam mode read-only untuk service ini, sehingga ReadWritePaths=/var/lib/radicale/ adalah baris yang memungkinkan service menyimpan event. Jika baris tersebut dihapus, operasi baca tetap berfungsi, tetapi semua operasi tulis gagal.

TLS bersifat wajib karena klien menolak plaintext

Konfigurasi ini menggunakan autentikasi HTTP Basic, satu-satunya skema yang diterima Radicale, dan Basic mengirim user:password yang dienkode dengan base64 pada setiap permintaan. Base64 adalah encoding, bukan enkripsi. Melalui HTTP biasa, Anda mengirimkan kata sandi ke setiap jaringan antara ponsel dan server, sepanjang hari, pada setiap sinkronisasi.

Klien menerapkan pembatasan ini secara otomatis. Dokumentasi Radicale mencatat bahwa macOS Calendar.app mungkin menolak pengiriman kredensial melalui HTTP yang tidak aman tanpa menampilkan pesan. iOS berperilaku sama. Akun tampak sudah dikonfigurasi, tetapi tidak pernah melakukan sinkronisasi dan tidak ada error yang dapat dibaca.

Arahkan record A untuk cal.example.com ke VPS terlebih dahulu karena certificate authority akan memeriksanya. Kemudian buat /etc/nginx/sites-available/cal.example.com:

server {
    listen 80;
    server_name cal.example.com;

    location / {
        proxy_pass        http://localhost:5232/;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header  X-Forwarded-Proto $scheme;
        proxy_set_header  Host $http_host;
        proxy_pass_header Authorization;
    }

    location = /.well-known/caldav  { return 301 https://$host/; }
    location = /.well-known/carddav { return 301 https://$host/; }
}

Keempat baris header proxy tersebut berasal dari dokumentasi Radicale. Biarkan apa adanya.

sudo ln -s /etc/nginx/sites-available/cal.example.com /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d cal.example.com
curl -i -u you https://cal.example.com/

nginx -t menampilkan syntax is ok dan test is successful. Lakukan reload hanya setelah perintah tersebut berhasil karena reload dengan file yang rusak akan mempertahankan konfigurasi lama dan menyembunyikan kesalahan hingga restart berikutnya. Certbot mengedit file site secara langsung: memasang sertifikat, mengubah blok agar menggunakan port 443, dan menambahkan redirect dari port 80. Perintah curl terakhir akan meminta kata sandi dan seharusnya mengembalikan 200, yaitu antarmuka web milik Radicale. 502 Bad Gateway berarti nginx sedang berjalan, tetapi tidak menerima jawaban yang valid dari port 5232. Penyebab yang biasanya terjadi adalah Radicale tidak sedang listening pada port tersebut.

Mengapa penambahan akun gagal di ponsel?

Karena discovery. RFC 6764 menjelaskan cara klien mengubah hostname menjadi URL kalender. Klien mencari record SRV _caldavs._tcp, lalu meminta https://cal.example.com/.well-known/caldav dan mengharapkan redirect ke root DAV. Dari sana, klien meminta current-user-principal, lalu calendar-home-set milik principal tersebut, dan baru kemudian melihat kalender Anda. Ponsel hanya menyediakan satu kolom untuk server, sehingga setiap langkah harus berjalan tanpa intervensi.

curl -sI https://cal.example.com/.well-known/caldav

Respons yang benar adalah HTTP/2 301 dengan header location: https://cal.example.com/. Kehadiran 404 di sana sering menyebabkan iOS menampilkan pesan bahwa informasi akun tidak dapat diverifikasi, sementara Thunderbird pada jaringan yang sama berfungsi: Thunderbird menggunakan URL lengkap yang Anda masukkan, sehingga tidak memerlukan redirect.

Target redirect bergantung pada server. Radicale yang disajikan pada root situs melakukan redirect ke /, dan Radicale sendiri merespons path tersebut dengan status 301 ketika permintaan sampai kepadanya. Karena itu, aturan nginx membuat redirect tersebut eksplisit, bukan membuat redirect baru. Baikal menyediakan aturan contoh yang melakukan redirect ke /dav.php dengan status 308. Nextcloud melakukan redirect ke /remote.php/dav/.

Buat kalender dan bagikan salah satunya dengan pasangan Anda

Banyak klien tidak dapat membuat kalender dan hanya dapat berlangganan kalender. Buka https://cal.example.com/ di browser, lalu masuk sebagai you dan buat kalender di sana. Di disk, kalender tersebut disimpan di bawah /var/lib/radicale/collections/collection-root/you/, dengan identifier yang dibuat otomatis sebagai nama folder.

Backend hak akses default Radicale adalah owner_only: akun terautentikasi dapat membaca dan menulis koleksinya sendiri di bawah /USERNAME/, dan tidak dapat mengakses yang lain. Untuk sebagian besar rumah tangga, pengaturan ini sudah tepat. Cara paling sederhana untuk membagikan kalender adalah menggunakan akun ketiga. Buat household dengan htpasswd, buat kalender bersama menggunakan login tersebut, lalu tambahkan kalender itu di setiap perangkat sebagai akun CalDAV kedua. Cara ini berfungsi pada semua klien, termasuk iOS, karena kalender berada di home akun tersebut.

Jika Anda memerlukan kontrol yang lebih terperinci, gunakan hak akses berbasis aturan. Tambahkan konfigurasi berikut ke /etc/radicale/config:

[rights]
type = from_file
file = /etc/radicale/rights

Kemudian /etc/radicale/rights, berdasarkan contoh dalam dokumentasi Radicale:

[root]
user: .+
collection:
permissions: R

[principal]
user: .+
collection: {user}
permissions: RW

[own-calendars]
user: .+
collection: {user}/[^/]+
permissions: rw

[shared-household]
user: you|partner
collection: you/2f0a9c1e-1f4c-4c2b-9a1b-0d2f7a5c9e11
permissions: rw

Huruf kapital dan huruf kecil memiliki arti yang berbeda. R dan W membaca dan menulis koleksi yang bukan kalender atau buku alamat, yaitu folder principal. r dan w membaca dan menulis kalender itu sendiri. Ganti identifier tersebut dengan nama folder kalender yang sebenarnya dari path penyimpanan di atas.

Ada satu batasan yang perlu diperhatikan: klien yang hanya membaca home set kalender tidak akan menampilkan kalender yang berada di bawah path pengguna lain karena proses discovery tidak menelusuri path tersebut. Thunderbird dan DAVx⁵ dapat menambahkannya menggunakan URL lengkap. iOS tidak dapat melakukannya. Karena itu, pola akun bersama adalah satu-satunya cara yang selalu berfungsi.

Siapkan klien karena pada tahap inilah kalender self-hosted sering gagal

iPhone dan iPad. Buka Settings, lalu Calendar (pada versi iOS terbaru, berada di bawah Apps), kemudian Calendar Accounts, Add Account, Other, Add CalDAV Account. Server adalah cal.example.com, diikuti nama pengguna dan kata sandi. Description hanya berfungsi sebagai label. Jika akun tidak dapat disimpan, buka kembali akun tersebut: tampilan lanjutan menampilkan Use SSL, port, dan URL akun lengkap. Menempelkan URL akan melewati proses discovery sepenuhnya.

Android. Tidak ada klien CalDAV bawaan. Instal DAVx⁵ dari F-Droid atau Google Play, tambahkan akun menggunakan base URL https://cal.example.com/ dan nama pengguna Anda, lalu centang kalender yang diinginkan. DAVx⁵ menulis data ke Android calendar provider, sehingga acara muncul di aplikasi kalender yang sudah Anda gunakan.

Thunderbird. Pilih New Calendar, On the Network, lalu masukkan nama pengguna dan lokasi https://cal.example.com/. Thunderbird menampilkan hasil yang ditemukan dan menanyakan kalender mana yang ingin ditambahkan.

macOS. Buka System Settings, Internet Accounts, Add Other Account, CalDAV, lalu ubah Account Type menjadi Manual. Setelah itu, masukkan nama pengguna, kata sandi, dan alamat server yang sama.

CalDAV adalah protokol polling. Spesifikasinya tidak menyediakan push, sehingga acara yang ditambahkan di laptop akan tiba di ponsel pada sinkronisasi berikutnya, bukan pada detik yang sama. Atur interval pada setiap klien sesuai kebutuhan Anda. Ingat bahwa interval yang lebih pendek pada ponsel menghabiskan lebih banyak baterai.

Cadangkan penyimpanan yang hanya berupa file

Di Radicale, kalender Anda berupa direktori berisi file .ics, satu file untuk setiap acara, serta satu file properti kecil untuk setiap koleksi. Apa pun yang menyalin direktori tersebut sudah mencadangkannya. Anda dapat membuka cadangan dengan less untuk memastikan bahwa cadangan tersebut berisi acara yang sebenarnya. Ini merupakan keunggulan nyata dibandingkan dump database yang tidak dapat Anda baca.

sudo systemctl stop radicale
sudo tar czf /root/radicale-$(date +%F).tar.gz -C /var/lib/radicale collections
sudo systemctl start radicale

Hentikan service selama beberapa detik yang diperlukan untuk membuat arsip. Dengan demikian, tidak ada client yang sedang berada di tengah proses penulisan saat file dibaca. Setelah itu, salin arsip ke luar server, karena cadangan pada VPS yang sama tidak akan bertahan dari kegagalan yang sedang Anda antisipasi. Pemulihan dilakukan secara terbalik: ekstrak, sudo chown -R radicale:radicale /var/lib/radicale/collections, lalu jalankan service. Setiap client juga menyimpan salinan lokal kalendernya. Karena itu, laptop yang belum melakukan sinkronisasi sejak kegagalan tersebut merupakan salinan kedua data Anda.

Kapan Baikal atau Nextcloud lebih sesuai

Baikal 0.12.1 dirilis pada 5 August 2026 dan memerlukan PHP 8.2 atau yang lebih baru. Ekstrak Baikal di luar web root dan expose hanya direktori html:

sudo apt install -y php-fpm php-sqlite3 php-xml php-mbstring php-curl unzip
cd /tmp
curl -LO https://github.com/sabre-io/Baikal/releases/download/0.12.1/baikal-0.12.1.zip
sudo unzip -q baikal-0.12.1.zip -d /srv
sudo chown -R www-data:www-data /srv/baikal/Specific /srv/baikal/config

Kedua direktori tersebut adalah satu-satunya direktori yang dapat ditulisi oleh web server. Jadi, direktori lain tidak perlu diberi izin tulis. Di dalam server block nginx, bagian khusus untuk Baikal adalah sebagai berikut:

root /srv/baikal/html;
index index.php;

location ~ /(\.ht|Core|Specific|config) { deny all; }

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php8.3-fpm.sock;
}

location = /.well-known/caldav  { return 308 /dav.php; }
location = /.well-known/carddav { return 308 /dav.php; }

Reload nginx, buka situs di browser, lalu setup wizard akan membuat akun admin dan database SQLite. Konfigurasi client sama seperti Radicale, dengan https://cal.example.com/ sebagai alamat server karena aturan well-known mengarahkan proses discovery ke /dav.php.

Nextcloud baru sepadan jika Anda juga ingin menggunakan file dan aplikasi ponsel dengan login yang sama. DAV root-nya adalah /remote.php/dav/, dan aturan discovery yang sama berlaku. Untuk semua opsi ini, menjalankan service di dalam container mencegah versi PHP masuk ke host: Docker Compose pada VPS membahas compose file dan reverse proxy di depannya, sedangkan hal yang layak di-self-host pada 2026 dapat membantu menentukan sejauh mana Anda ingin menggunakan pendekatan ini.

Mode kegagalan dan string yang akan Anda lihat

Setiap sinkronisasi mengembalikan 401. File kata sandi mungkin kehilangan akunnya setelah htpasswd -c kedua, atau pengguna radicale tidak dapat membacanya. Periksa dengan sudo -u radicale cat /etc/radicale/users; pesan permission denied menunjukkan penyebabnya, dan perbaikannya adalah menambahkan grup radicale lalu menetapkan mode 640. Secara default, Radicale juga menunggu satu detik setelah setiap login yang gagal. Karena itu, klien dengan kata sandi lama tampak lambat, bukan ditolak.

nginx mengembalikan 405 pada PROPFIND. URL tersebut disajikan sebagai file statis, sehingga metode WebDAV tidak pernah mencapai Radicale. Uji endpoint secara langsung:

curl -u you -X PROPFIND -H "Depth: 0" -i https://cal.example.com/you/

Koleksi DAV yang berfungsi mengembalikan 207 Multi-Status. Hasil lainnya berarti permintaan berhenti di web server.

Ponsel tidak dapat memverifikasi akun, tetapi browser tidak bermasalah. Ada dua penyebab umum. Redirect well-known tidak ada, yang dapat diuji dengan curl di atas. Atau rantai sertifikat tidak lengkap. Browser biasanya mengatasi hal ini dengan mengambil intermediate yang hilang, sedangkan iOS tidak. Periksa dari shell:

openssl s_client -connect cal.example.com:443 -servername cal.example.com </dev/null

Cari Verify return code: 0 (ok). Jika gagal, konfigurasi nginx mengarah ke cert.pem, padahal seharusnya mengarah ke fullchain.pem.

Event duplikat setelah impor. Setiap event memiliki UID, dan klien menggunakannya sebagai identitas. Jika file yang sama diimpor dua kali melalui tool yang membuat ulang identifier, Anda akan mendapatkan dua event yang tidak akan pernah digabungkan. Hapus salinan tambahan pada salah satu perangkat, lalu biarkan penghapusan tersebut tersinkronisasi.

Semuanya berhenti berfungsi setelah reboot. Service dijalankan secara manual. sudo systemctl is-enabled radicale menampilkan disabled, dan sudo systemctl enable --now radicale memperbaikinya secara permanen.

FAQ

Apakah saya benar-benar memerlukan TLS untuk server CalDAV yang di-host sendiri?

Ya. Radicale melakukan autentikasi menggunakan HTTP Basic, sehingga kata sandi dikirim dalam bentuk encoding base64 pada setiap permintaan, dan base64 dapat dibalik dengan mudah. Klien juga memberlakukannya: macOS Calendar.app dapat menolak secara diam-diam pengiriman kredensial melalui HTTP yang tidak aman, dan iOS berperilaku sama. Akibatnya, akun tampak berhasil disimpan tetapi tidak pernah melakukan sinkronisasi. sudo certbot --nginx -d cal.example.com adalah seluruh tugasnya.

Mengapa ponsel saya gagal menambahkan akun saat Thunderbird berhasil?

Thunderbird menggunakan URL lengkap yang Anda masukkan. Ponsel hanya menyediakan satu kolom server, sehingga ponsel mengandalkan discovery RFC 6764. Tanpa record SRV, ponsel akan meminta https://cal.example.com/.well-known/caldav dan mengharapkan redirect ke root DAV. Jika permintaan tersebut menghasilkan 404, ponsel biasanya melaporkan bahwa akun tidak dapat diverifikasi. Tambahkan location = /.well-known/caldav { return 301 https://$host/; } ke nginx, lalu pastikan dengan curl -sI https://cal.example.com/.well-known/caldav bahwa hasilnya adalah 301 dan header location. Memasukkan URL akun lengkap pada pengaturan lanjutan iOS akan melewati discovery sepenuhnya.

Apakah dua orang dapat menggunakan satu kalender bersama?

Ya. Cara yang paling andal adalah menggunakan login bersama. Buat akun ketiga dengan htpasswd, letakkan kalender bersama di bawah akun tersebut, lalu tambahkan akun itu sebagai akun CalDAV kedua pada setiap perangkat. File rights Radicale dapat memberikan hak baca dan tulis kepada pengguna tertentu pada satu koleksi di bawah path pengguna lain. Namun, klien yang hanya membaca calendar home set miliknya sendiri tidak akan pernah menampilkannya. Karena itu, cara tersebut lebih sesuai untuk Thunderbird dan DAVx⁵ daripada iOS.

Apa yang terjadi pada event saya jika VPS mati?

Pada Radicale, penyimpanan berupa teks biasa: satu file .ics untuk setiap event di bawah /var/lib/radicale/collections/collection-root/. Anda dapat mencadangkannya dengan tar dan membacanya dengan less. Untuk melakukan restore, ekstrak, chown -R radicale:radicale, lalu start service. Setiap klien yang melakukan sinkronisasi juga menyimpan salinan lokal. Jadi, laptop yang sudah diperbarui sebelum kegagalan menyimpan salinan kedua kalender Anda secara lengkap.

Apakah server CalDAV juga menyinkronkan kontak saya?

Kontak menggunakan CardDAV, yaitu protokol terkait yang didefinisikan dalam RFC 6352 dan menyimpan file vCard, bukan event. Radicale, Baikal, dan Nextcloud semuanya dapat menyediakannya melalui akun dan hostname yang sama. Di Android, DAVx⁵ menyinkronkan kalender dan kontak dari satu akun. Di iOS, Anda menambahkan akun kedua dengan tipe CardDAV menggunakan kredensial yang sama. Karena itu, redirect /.well-known/carddav harus dicantumkan dalam konfigurasi nginx di samping konfigurasi CalDAV.

#caldav#calendar#radicale#self-hosting#sync