SSD Nodes Learn Hosting plans →
Rehberler Matt ConnorYazan Matt Connor

VPS Uzerinde Radicale ile CalDAV Takvim Kurulumu

Google bagimliligini bitirmek icin VPS uzerinde Radicale ile kendi CalDAV sunucunuzu kurun. TLS yapilandirmasi, cihaz senkronizasyonu ve kesif ayarlari dahil tum adimlar.

Ne inşa ediyorsunuz

Kendi kendine barındırılan (self-hosted) bir takvim, kontrolünüz altındaki bir VPS üzerinde, TLS arkasında ve kişi başına bir oturum açma bilgisiyle çalışan bir CalDAV sunucusudur. Cebinizdeki telefon, masanızdaki dizüstü bilgisayar ve partnerinizin dizüstü bilgisayarı aynı etkinlikleri gösterir. Araya hiçbir Google hesabı girmez.

Bu, kendi kendine barındırılan bir rezervasyon sayfasından farklı bir iştir. Rezervasyon sayfası yabancılar içindir: boş zaman dilimlerinizi yayınlar ve birinin bunlardan birini ayırtmasına olanak tanır. Takvim sunucusu ise kendi cihazlarınız içindir: etkinlikleri depolar ve her istemcinin uyum içinde kalmasını sağlar. İnsanlar genellikle her ikisini de çalıştırır; bu durumda rezervasyon aracı, uygunluk durumunu burada oluşturacağınız CalDAV sunucusundan okur.

Kurulum küçüktür. Radicale, tek bir Python paketinden ve yaklaşık on satırlık bir yapılandırmadan oluşur. Kurulumun ilk ayı atlatıp atlatamayacağını belirleyen unsurlar; TLS, keşif (discovery), kullanıcı bazlı koleksiyonlar ve yedeklemelerdir. Aşağıdaki içeriğin büyük bir kısmı bu konulara ayrılmıştır.

CalDAV nedir ve neden önemlidir?

CalDAV, HTTP üzerinden takvim eşitleme protokolüdür. RFC 4791 içerisinde, WebDAV'ın (RFC 4918 ile tanımlanan, HTTP yöntemlerine ek özellikler getiren web tabanlı dağıtık yazma ve sürümleme protokolü) bir uzantısı olarak tanımlanmıştır. Takvim, bir dizin gibi davranan bir koleksiyondur. Her bir etkinlik, bu dizin içindeki bir dosyadır ve e-postalarınızdaki .ics ekleriyle aynı format olan iCalendar metin formatında (RFC 5545) yazılır.

İstemciler, birkaç ek yöntemle birlikte standart HTTP kullanır. PROPFIND, dizinde ne olduğunu ve hangi özelliklere sahip olduğunu sorgular. REPORT, belirli bir tarih aralığındaki tüm etkinlikler gibi filtrelenmiş bir kesit talep eder. PUT bir etkinlik yazar, DELETE ise onu siler. Her etkinlik bir UID satırı taşır; bu tanımlayıcı, iki cihazın aynı etkinliğe baktığını, bir kopyasına bakmadığını doğrulamalarını sağlar.

Taşınabilirlik bu işin kazancıdır ve uğraşmaya değmesinin tek nedeni budur. iOS, macOS, Thunderbird, Evolution ve DAVx⁵ aracılığıyla Android, CalDAV protokolünü destekler. Verileriniz, bugün seçtiğiniz sunucuya bağlı değildir. Dosyaları farklı bir CalDAV sunucusuna taşıyın, istemcileri yeni ana bilgisayar adına yönlendirin; başka hiçbir şeyin değişmediğini göreceksiniz.

CardDAV de benzer bir yapıdadır. Kişiler için aynı mantığı kullanır; RFC 6352 ile tanımlanmıştır ve etkinlikler yerine vCard dosyalarını saklar. Aşağıdaki her sunucu, her iki protokolü de aynı hesap üzerinden sunar; bu nedenle takvim çalıştığında, adres defterini aktif etmek yalnızca bir onay kutusu işlemidir.

Hangi CalDAV sunucusunu çalıştırmalısınız?

Radicale, işini yapan en küçük çözümdür. Python tabanlıdır, veritabanı gerektirmez ve verileri düz dosyalardan oluşan bir klasörde saklar. Bu rehberde Radicale kullanılmaktadır çünkü ev tipi bir takvim sistemi için daha fazlasına ihtiyaç yoktur ve gece saat üçte bir sorun çıkma ihtimali oldukça düşüktür.

Baikal, web tabanlı bir yönetim paneline sahip olan seçenektir. PHP ve sabre/dav kütüphanesi üzerinde çalışır; kullanıcıları ve takvimleri SQLite veya MySQL üzerinde tutar. Komut satırı yerine tarayıcı üzerinden kullanıcı eklemenize olanak tanır. Hesapların sık sık eklenip çıkarıldığı durumlar için bu seçeneği tercih edin.

Nextcloud, takvimin diğer özelliklerin yanında sadece bir parça olduğu durumlar için uygundur. Takvim, kişiler, dosyalar ve mobil uygulama gibi özelliklere sahip olursunuz; ancak bunun karşılığında PHP-FPM, bir veritabanı ve arka plan iş çalıştırıcısı (job runner) yönetmeniz gerekir. Eğer bu gereksinimler ihtiyaçlarınıza göre ağır geliyorsa, daha hafif Nextcloud alternatifleri bu açığı kapatır ve kendi kendine barındırılan dosya eşitleme çözümleri, insanların Nextcloud kurma nedenlerinin diğer yarısını karşılar.

DAViCal, uzun süredir var olan PostgreSQL tabanlı seçenektir. Yalnızca halihazırda PostgreSQL kullanıyorsanız ve takvim verilerinin de burada tutulmasını istiyorsanız değerlendirmeye değerdir.

Ubuntu 24.04 üzerinde Radicale kurulumu

Radicale 3.5.10, Ağustos 2026 itibarıyla güncel sürümdür. Kurulumu kendi sanal ortamı (virtual environment) içerisinde gerçekleştirin.

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

Sanal ortam kullanımı bir tercih değil, zorunluluktur. Sistem Python'ı üzerine sudo pip install radicale yapmak error: externally-managed-environment hatasıyla sonuçlanır; çünkü Ubuntu, Python paketlerini apt yönetimine bırakmıştır ve pip'in paketlenmiş dosyaların üzerine yazmasına izin vermez.

/etc/radicale/config komutunu çalıştırın:

[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, güvenlik gereği yalnızca loopback üzerinde dinleme yapar. nginx, TLS termination işlemini gerçekleştirir ve trafiği bu porta yönlendirir; böylece Radicale hiçbir zaman doğrudan internete açık olmaz. 0.0.0.0:5232 örneğindeki upstream yapılandırması, şifre kabul eden şifrelenmemiş bir servis yayınlar; bu, burada yapılan en kritik hatadır.

Şimdi hesapları oluşturalım. -5, Radicale'in htpasswd_encryption = autodetect ile ek modüle ihtiyaç duymadan okuyabildiği SHA-512 crypt algoritmasını seçer:

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

-c komutu dosyayı oluşturur ve içindeki tüm veriyi siler. Bu komutu yalnızca ilk kullanıcı için kullanın. Aylar sonra htpasswd -5 -c komutunu tekrar çalıştırmak, ilk kullanıcıdan sonra eklenen tüm hesapları siler. Bu durumun belirtisi, bir kullanıcının sorunsuz senkronizasyon yaparken diğerlerinin sürekli parola ekranında takılı kalmasıdır. Bcrypt de kullanılabilir ancak bunun için radicale[bcrypt] paketinin ayrıca kurulması gerekir.

Radicale dokümantasyonundaki birim dosyasından uyarlanan /etc/systemd/system/radicale.service dosyasını oluşturun:

[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/

Başarılı bir sonuç, WWW-Authenticate başlığına sahip 401 Unauthorized çıktısıdır: servis dinleme durumundadır ve kimlik doğrulama aktiftir. Connection refused, servisin hiç başlamadığını gösterir; journalctl -u radicale -n 50 ise reddedilen seçeneği belirtir. ProtectSystem=strict, dosya sistemini bu servis için salt okunur (read-only) olarak bağlar; bu nedenle ReadWritePaths=/var/lib/radicale/ satırı, servisin veri kaydedebilmesini sağlayan tek satırdır. Bu satırı kaldırırsanız okuma işlemleri çalışmaya devam eder ancak tüm yazma işlemleri başarısız olur.

TLS isteğe bağlı değildir, çünkü istemciler düz metni reddeder

CalDAV, kimlik doğrulaması için her istekte user:password base64 kodlamasıyla gönderilen HTTP Basic yöntemini kullanır. Base64 bir şifreleme değil, kodlama biçimidir. Düz HTTP üzerinden gönderim yapıldığında, telefon ile sunucu arasındaki tüm ağ noktalarına gün boyu ve her eşitlemede parolanızı teslim etmiş olursunuz.

İstemciler bu kuralı sizin yerinize zorunlu kılar. Radicale belgeleri, macOS Calendar.app uygulamasının güvenli olmayan HTTP üzerinden kimlik bilgilerini göndermeyi sessizce reddedebileceğini ve iOS'in de aynı şekilde davrandığını belirtir. Hesap yapılandırılmış görünür ancak hiçbir hata mesajı vermeden eşitleme yapmaz.

Sertifika yetkilisi kontrol edeceği için önce cal.example.com için bir A kaydını VPS adresine yönlendirin. Ardından /etc/nginx/sites-available/cal.example.com dosyasını oluşturun:

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/; }
}

Dört proxy başlık satırı Radicale belgelerinden alınmıştır. Bunları olduğu gibi koruyun.

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 komutu syntax is ok ve test is successful çıktılarını verir. Yalnızca bu çıktı alındıktan sonra yeniden yükleme yapın; çünkü hatalı bir dosyayla yapılan yeniden yükleme, eski yapılandırmayı çalışır durumda bırakır ve hatayı bir sonraki yeniden başlatmaya kadar gizler. Certbot, site dosyasını yerinde düzenler: sertifikayı yükler, bloğu 443 numaralı porta geçirir ve 80 numaralı porttan yönlendirme ekler. Son aşamadaki curl komutu parola ister ve Radicale'in kendi web arayüzü olan 200 sonucunu döndürmelidir. 502 Bad Gateway hatası, nginx'in çalıştığını ancak Radicale'in 5232 numaralı portu dinlemediğini gösterir.

Hesap ekleme işlemi telefonda neden başarısız oluyor?

Bunun nedeni keşif sürecidir. RFC 6764, bir istemcinin ana bilgisayar adını nasıl takvim URL'sine dönüştürdüğünü açıklar. İstemci önce bir _caldavs._tcp SRV kaydı arar, ardından https://cal.example.com/.well-known/caldav adresine istek gönderir ve DAV kök dizinine bir yönlendirme bekler. Buradan current-user-principal adresini, ardından ilgili asıl kullanıcının calendar-home-set adresini ister ve ancak o zaman takvimlerinizi görür. Telefon size sunucu için tek bir alan sunduğundan, her adımın kullanıcı müdahalesi olmadan çalışması gerekir.

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

Sağlıklı yanıt, location: https://cal.example.com/ başlığına sahip HTTP/2 301 durum kodudur. Buradaki bir 404, iOS'in hesap bilgilerini doğrulayamadığını söylemesinin, aynı ağdaki Thunderbird'ün ise çalışmasının nedenidir: Thunderbird girdiğiniz tam URL'yi kullanır, bu nedenle yönlendirmeye hiçbir zaman ihtiyaç duymaz.

Yönlendirme hedefi sunucuya bağlıdır. Sitenin kök dizininde sunulan Radicale, / adresine yönlendirme yapar. Baikal, /dav.php adresine 308 durumuyla yönlendiren örnek kurallar ile gelir. Nextcloud ise /remote.php/dav/ adresine yönlendirme yapar.

Takvimleri oluşturun ve birini partnerinizle paylaşın

Birçok istemci takvim oluşturamaz, yalnızca mevcut bir takvime abone olabilir. Bir tarayıcıda https://cal.example.com/ adresini açın, you olarak giriş yapın ve takvimi orada oluşturun. Disk üzerinde bu takvim, klasör adı için oluşturulan bir tanımlayıcı ile /var/lib/radicale/collections/collection-root/you/ altında yer alır.

Radicale'in varsayılan haklar arka ucu owner_only'dur: kimliği doğrulanmış bir hesap, /USERNAME/ altındaki kendi koleksiyonlarını okur ve yazar, başka hiçbir şeye erişemez. Çoğu hane halkı için bu doğru ayardır ve bir takvimi paylaşmanın en basit yolu üçüncü bir hesap kullanmaktır. household hesabını htpasswd ile oluşturun, paylaşılan takvimi bu giriş altında yapın ve her cihazda ikinci bir CalDAV hesabı olarak ekleyin. Takvim bu hesabın kendi dizininde yer aldığı için iOS dahil her istemcide çalışır.

Daha hassas bir kontrol istediğinizde, kural tabanlı haklara geçiş yapın. /etc/radicale/config dosyasına şunu ekleyin:

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

Ardından, Radicale belgelerindeki örneği temel alarak /etc/radicale/rights dosyasını düzenleyin:

[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

Büyük ve küçük harfler farklı anlamlara gelir. R ve W, takvim veya adres defteri olmayan koleksiyonları okur ve yazar; bu, bir ana (principal) klasörün işlevidir. r ve w ise takvimlerin kendisini okur ve yazar. Bu tanımlayıcıyı, yukarıdaki depolama yolunda bulunan takviminizin gerçek klasör adıyla değiştirin.

Dürüst bir sınırlama: Yalnızca takvim ana dizinini okuyan bir istemci, başka bir kullanıcının yolu altında bulunan bir takvimi görüntüleyemez; çünkü keşif süreci o yola hiçbir zaman girmez. Thunderbird ve DAVx⁵, tam URL ile bu takvimi ekleyebilir. iOS bunu yapamaz; bu nedenle paylaşılan hesap modeli her zaman çalışan yöntemdir.

İstemcileri yapılandırın, çünkü self-hosted takvimlerin başarısız olduğu nokta burasıdır

iPhone ve iPad. Ayarlar'ı, ardından Takvim'i (güncel iOS sürümlerinde Uygulamalar altında listelenir), Takvim Hesapları'nı, Hesap Ekle'yi, Diğer'i ve CalDAV Hesabı Ekle'yi açın. Sunucu kısmına cal.example.com yazın, ardından kullanıcı adı ve parolanızı girin. Açıklama yalnızca bir etikettir. Kaydetmeyi reddederse hesabı tekrar açın: gelişmiş görünümde SSL Kullan, port ve tam hesap URL'si seçenekleri görünür; URL'yi buraya yapıştırmak keşif sürecini tamamen atlamanızı sağlar.

Android. Yerleşik bir CalDAV istemcisi bulunmaz. F-Droid veya Google Play üzerinden DAVx⁵ uygulamasını yükleyin, https://cal.example.com/ temel URL'sini ve kullanıcı adınızı kullanarak bir hesap ekleyin, ardından istediğiniz takvimleri işaretleyin. DAVx⁵ verileri Android takvim sağlayıcısına yazar, bu sayede etkinlikler halihazırda kullandığınız herhangi bir takvim uygulamasında görünür.

Thunderbird. Yeni Takvim, Ağ Üzerinde seçeneğini belirleyin, ardından kullanıcı adınızı ve https://cal.example.com/ konumunu girin. Bulunan öğeleri listeleyecek ve hangi takvimlerin ekleneceğini soracaktır.

macOS. Sistem Ayarları, İnternet Hesapları, Diğer Hesap Ekle, CalDAV yolunu izleyin, Hesap Türü'nü Manuel olarak ayarlayın, ardından aynı kullanıcı adı, parola ve sunucu adresini girin.

CalDAV bir yoklama (polling) protokolüdür. Spesifikasyonda anlık bildirim (push) özelliği yoktur; bu nedenle dizüstü bilgisayarda eklediğiniz bir etkinlik, telefona aynı saniyede değil, bir sonraki eşitleme sırasında ulaşır. Her istemcide kabul edilebilir bir aralık belirleyin ve telefonda daha kısa bir aralığın pil tüketimini artıracağını unutmayın.

Depoyu yedekleme, sadece dosyalardan ibarettir

Radicale altında takviminiz, her etkinlik için bir dosya ve her koleksiyon için küçük bir özellik dosyasından oluşan .ics dosyaları dizinidir. Bir dizini kopyalayan her işlem onu yedekler ve gerçek etkinlikleri içerdiğini doğrulamak için bir yedeği less ile açabilirsiniz. Bu, okuyamayacağınız bir veritabanı dökümüne kıyasla gerçek bir avantajdır.

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

Arşivleme işleminin sürdüğü birkaç saniye boyunca servisi durdurun; böylece dosyalar okunurken hiçbir istemci yazma işleminin ortasında kalmaz. Arşiv dosyasını daha sonra sunucudan dışarı kopyalayın, çünkü aynı VPS üzerindeki bir yedek, hazırlık yaptığınız arıza durumunda hayatta kalamaz. Geri yükleme işlemi bunun tersidir: arşivden çıkarın, sudo chown -R radicale:radicale /var/lib/radicale/collections yapın ve servisi başlatın. Her istemci de takvimlerinin yerel bir kopyasını tutar; bu nedenle arızadan beri eşitleme yapmamış bir dizüstü bilgisayar, verilerinizin ikinci bir kopyası niteliğindedir.

Baikal mı Nextcloud mu daha uygun

Baikal 0.12.1, 5 Ağustos 2026 tarihinde yayınlanmıştır ve PHP 8.2 veya daha yeni bir sürüm gerektirir. Yazılımı web kök dizininin dışına açın ve yalnızca html dizinini dış dünyaya açın:

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

Bu iki dizin, web sunucusunun yazma iznine sahip olduğu tek yerdir; dolayısıyla başka hiçbir dizinin yazılabilir olması gerekmez. Nginx sunucu bloğunuz içerisinde, Baikal'a özgü kısımlar şunlardır:

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; }

Nginx yapılandırmasını yeniden yükleyin, siteyi bir tarayıcıda açın; kurulum sihirbazı yönetici hesabını ve SQLite veritabanını oluşturacaktır. İstemci kurulumu Radicale ile aynıdır; sunucu adresi olarak https://cal.example.com/ kullanılır, çünkü "well-known" kuralı keşif isteğini /dav.php adresine yönlendirir.

Nextcloud, yalnızca dosyalarınızı ve telefon uygulamanızı aynı oturum bilgileriyle kullanmak istiyorsanız tercih edilmelidir. DAV kök dizini /remote.php/dav/ şeklindedir ve aynı keşif kuralları burada da geçerlidir. Bu servislerin herhangi biri için, servisi bir container içerisinde çalıştırmak PHP sürümlerini ana makinenizden (host) uzak tutmanızı sağlar: VPS üzerinde Docker Compose rehberi, compose dosyasını ve önündeki reverse proxy yapılandırmasını ele alır; 2026 yılında neler self-host edilmeye değer makalesi ise bu yolda ne kadar ilerlemek istediğinize karar vermek için uygun bir başlangıç noktasıdır.

Hata modları ve karşılaşacağınız dizgeler

Her eşitleme 401 hatası döndürüyor. Parola dosyası ya ikinci bir htpasswd -c işlemine kurban gitmiştir ya da radicale kullanıcısı dosyayı okuyamıyordur. sudo -u radicale cat /etc/radicale/users ile kontrol edin; bir "permission denied" hatası alıyorsanız sorun budur ve çözümü radicale grubuna atayıp 640 modunu vermektir. Radicale varsayılan olarak her başarısız girişten sonra bir saniye bekler; bu nedenle eski parolaya sahip bir istemci reddedilmiş gibi değil, yavaş çalışıyor gibi görünür.

nginx, PROPFIND isteğine 405 yanıtı veriyor. URL statik bir dosya olarak sunuluyordur, bu yüzden WebDAV metodu Radicale'e ulaşmıyordur. Uç noktayı doğrudan test edin:

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

Çalışan bir DAV koleksiyonu 207 Multi-Status yanıtını verir. Başka bir yanıt, isteğin web sunucusunda takıldığını gösterir.

Telefon hesabı doğrulayamıyor ancak tarayıcıda sorun yok. İki yaygın neden vardır. Yukarıdaki curl komutuyla test edilen "well-known" yönlendirmesi eksiktir. Ya da sertifika zinciri tam değildir; tarayıcılar eksik ara sertifikayı kendileri çekerek bunu telafi ederken iOS bunu yapmaz. Kabuk üzerinden kontrol edin:

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

Verify return code: 0 (ok) dizgesini arayın. Eğer başarısız olursa, nginx yapılandırması fullchain.pem yerine cert.pem dosyasına işaret ediyordur.

İçe aktarma işleminden sonra yinelenen etkinlikler oluşuyor. Her etkinlik bir UID taşır ve istemciler bunu kimlik olarak kabul eder. Tanımlayıcıları yeniden oluşturan bir araçla aynı dosyayı iki kez içe aktarırsanız, hiçbir şekilde birleştirilemeyecek iki ayrı etkinlik oluşur. Bir cihazdaki fazladan kopyaları silin ve silme işleminin eşitlenmesini bekleyin.

Yeniden başlatma sonrasında her şey çalışmayı durduruyor. Servis elle başlatılmıştır. sudo systemctl is-enabled radicale komutu disabled çıktısını veriyorsa, sudo systemctl enable --now radicale komutu sorunu kalıcı olarak çözer.

FAQ

Kendi sunucumda barındırdığım bir CalDAV sunucusu için gerçekten TLS gerekli mi?

Evet. CalDAV, kimlik doğrulaması için HTTP Basic kullanır; bu nedenle parola her istekte base64 kodlanmış olarak iletilir ve base64 kolayca çözülebilir. İstemciler de bunu zorunlu tutar: macOS Calendar.app, güvenli olmayan HTTP üzerinden kimlik bilgilerini göndermeyi sessizce reddedebilir; iOS da benzer şekilde davranır, bu yüzden hesap kaydedilmiş gibi görünür ancak hiçbir zaman senkronize olmaz. sudo certbot --nginx -d cal.example.com tüm işi çözer.

Thunderbird çalışırken telefonum neden hesabı ekleyemiyor?

Thunderbird, girdiğiniz tam URL'yi kullanır. Telefon ise size tek bir sunucu alanı sunar, bu yüzden RFC 6764 keşif protokolünü izler: https://cal.example.com/.well-known/caldav adresine istek atar ve DAV kök dizinine bir yönlendirme bekler. Bu yönlendirme olmazsa telefon 404 hatası alır ve hesabın doğrulanamadığını bildirir. nginx içine location = /.well-known/caldav { return 301 https://$host/; } ekleyin, ardından curl -sI https://cal.example.com/.well-known/caldav ile 301 yönlendirmesi ve location başlığının döndüğünü doğrulayın.

İki kişi aynı takvimi paylaşabilir mi?

Evet, bunun güvenilir yolu ortak bir giriş kullanmaktır. htpasswd ile üçüncü bir hesap oluşturun, paylaşılan takvimi bu hesabın altına koyun ve her cihazda ikinci bir CalDAV hesabı olarak ekleyin. Radicale'in yetki dosyası, belirli bir kullanıcıya başka bir kullanıcının dizini altındaki bir koleksiyonda okuma ve yazma izni verebilir; ancak yalnızca kendi takvim dizinini okuyan bir istemci bunu asla görüntülemeyecektir. Bu yöntem iOS yerine Thunderbird ve DAVx⁵ için daha uygundur.

VPS çökerse etkinliklerime ne olur?

Radicale'de veriler düz metin halindedir: /var/lib/radicale/collections/collection-root/ altında her etkinlik için bir .ics dosyası bulunur. Bunları tar ile yedekleyebilir ve less ile okuyabilirsiniz. Geri yükleme işlemi dosyaları ayıklamak, chown -R radicale:radicale komutunu çalıştırmak ve servisi başlatmaktan ibarettir. Senkronize olan her istemci de yerel bir kopya tutar; bu nedenle çökmeden önce güncel olan bir dizüstü bilgisayar, takviminizin tam bir ikinci kopyasını barındırır.

CalDAV sunucusu kişilerimi de senkronize eder mi?

Kişiler, etkinlikler yerine vCard dosyalarını depolayan ve RFC 6352 ile tanımlanan kardeş protokol CardDAV'ı kullanır. Radicale, Baikal ve Nextcloud'un tümü bu servisi aynı hesaptan ve aynı ana bilgisayar adından sunar. Android'de DAVx⁵, takvimleri ve kişileri tek bir hesaptan senkronize eder. iOS'te ise aynı kimlik bilgileriyle CardDAV türünde ikinci bir hesap eklersiniz; /.well-known/carddav yönlendirmesinin nginx yapılandırmanızda CalDAV yönlendirmesinin yanında yer almasının nedeni budur.

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