2 puan yazan GN⁺ 2025-04-11 | 1 yorum | WhatsApp'ta paylaş
  • Sık iş seyahatleri ve yolculuklar ile farklı zaman dilimlerindeki ilişkileri yönetme ihtiyacı birleşince, Big Tech’e bağımlılığı azaltan ve takvim verilerini doğrudan kontrol etmeyi sağlayan kendi takvim sistemi gerekli hale geldi
  • Yeni yapı, merkezine Baïkal CalDAV sunucusunu alıyor; Airtrail, IMAP e-posta ve dil okulunun ICS verilerini toplayıp CalDAV’a koyuyor, ardından paylaşım için .ics dosyaları olarak yeniden yayımlıyor
  • Takvimleri YAML ile yazıp CI/CD’de ICS’ye dönüştürme yöntemi prototip için yeterliydi; ancak elle yapılan hatalar ve bakım yükü artınca statik dosya yaklaşımının yerini aldı
  • Python betiği her 15 dakikada bir etkinlikleri topluyor ve sınıflandırıyor, aile ve iş için ayrı ICS dosyaları oluşturuyor; iş takviminde bazı etkinlikleri PRIVATE olarak işaretliyor
  • Google Calendar ve Google Script yalnızca iş takvimi senkronizasyonu için kullanılıyor; Airtrail API entegrasyonundan sonra bir uçuş bir kez girildiğinde 15 dakika içinde kişisel takvime, 1 saat içinde iş takvimine yansıyor

Takvim yönetimi neden karmaşıklaştı

  • Sık hareket halinde olmak nedeniyle aile, arkadaşlar ve iş arkadaşları mevcut zaman dilimini ya da uçağa binilip binilmediğini anlamakta zorlanıyordu; farklı zaman dilimlerindeki randevuları ayarlamak için sürekli saat hesabı yapmak gerekiyordu
  • Uçuş, tren, biniş öncesi bloke edilen zaman ve havalimanına ulaşım süresi gibi bilgileri birden fazla yere tekrar tekrar girmek gerektiğinden takvim yönetimi yükü arttı
  • Mevcut takvim ekosistemindeki rahatsızlıklar standartlar, ön uç uygulamaları ve kullanıcı deneyiminin geneline yayılmıştı
    • E-posta sağlayıcısı uçuş için takvim öğesi oluştursa bile aktarmalı uçuşları atlayabildiği ya da zaman dilimlerini yanlış işlediği durumlar olabiliyor
    • Oluşturulan öğenin organizer alanı kullanıcı olmadığı için paylaşım veya düzenleme zorlaşabiliyor
  • Gereken koşullar basit takvim kaydının ötesine geçip paylaşım ve kontrolü de kapsıyordu
    • Etkinlikler iş takviminde blocker olarak görünmeliydi
    • Eşin takvime abone olabilmesi gerekiyordu
    • Etkinlik girişi en fazla bir kez yapılmalıydı
    • Birden çok cihazdan düzenleme yapılabilmeliydi
    • Veriler doğrudan kontrol altında olmalıydı
    • İş takvimini eşle paylaşma yöntemi kullanılamazdı
  • Ek gereksinimler arasında .ics e-posta eklerini içe aktarma, dil okulunun takvimi için HTTP ICS içe aktarma, kendi barındırılan uçuş takipçisi Airtrail entegrasyonu, renk ayrımı, iş takvimi için gizli bayrağı, sık yenileme ve istenen ön uç uygulamasını kullanabilme vardı

YAML·ICS yaklaşımının sınıra dayandığı noktalar

  • Mevcut paylaşım yöntemleri çoğu zaman tüm işlevleri sunmak için ortak bir platform veya aynı hesap ortamı gerektiriyordu
    • Gmail veya Outlook.com ekosistemi
    • Exchange gibi aynı ortamda hesap paylaşımı
  • Yaygın geçici çözümler iki taneydi
    • iCal verisini HTTP üzerinden sunarak salt okunur takvim yayımlamak
    • iCal .ics dosyasını e-postayla göndermek
  • İlk sürüm, web sitesinde herkese açık ama tahmin edilmesi zor bir URL’ye .ics dosyası koyup amaca göre birden fazla URL oluşturma yöntemiydi
  • Etkinlik verileri YAML ile yazılıyor, CI/CD hattında küçük bir betikle ICS dosyalarına yeniden serileştiriliyordu
  • Prototip için yeterliydi; ancak ölçek büyüdükçe YAML’ı elle yazarken sık hata yapılmaya başlandı ve aslında düşük eforla bitmesi gereken iş zahmetli hale geldi

CalDAV ve Baïkal ile değiştirilen yapı

  • Yeni yapı, statik dosyalardan ayrılarak barındırılan CalDAV tabanlı bir sisteme geçti
  • CalDAV, WebDAV dağıtık yazarlık belirtiminin bir uzantısıdır ve takvim uygulamalarının ihtiyaç duyduğu işlevleri sağlar
  • Bir CalDAV sunucusu kullanıldığında, seçilen ön uç uygulamayla dizüstü bilgisayar, telefon gibi birden fazla cihazda etkinlikleri görmek ve yönetmek mümkün olur
  • Kimlik doğrulama olmadan kolayca abone olunabilen CalDAV sunucusu çok olmadığı için, sunucuyu düzenli aralıklarla yoklayan, etkinlikleri çıkaran ve web sitesindeki iCal dosyası olarak yayımlayan bir betiğe ihtiyaç vardı
  • Genel akış şöyleydi
    • Veri kaynaklarından etkinlikleri yokla
    • Etkinlikleri programatik olarak CalDAV’a yayımla
    • CalDAV’dan tüm etkinlikleri alıp .ics dosyası olarak yaz
    • .ics dosyasını HTTP üzerinden sun

Baïkal kurulumu ve istemci bağlantısı

  • Seçilen araç Baïkal; takvimleri ve kişileri yöneten hafif, kendi barındırılan bir CalDAV/CardDAV sunucusu
  • Docker Compose ile ckulka/baikal:0.9.5 imajı çalıştırıldı; portlar ve yerel volume’ler belirtilerek docker compose up -d ile başlatıldı
  • Baïkal MySQL de kullanabilir, ancak SQLite ile de çalışır; SQLite’ın yönetimi daha basittir
  • Web’e açmak için nginx reverse proxy kullanıldı
    • proxy_pass ile yerel Baïkal portuna bağlanma
    • /.well-known/caldav adresini dav.phpye 301 ile yönlendirme
    • Bu yönlendirme iPhone veya Mac Takvim uygulamasına eklerken gereklidir
  • TLS, Let’s Encrypt ve certbot ile yapılandırıldı; certbot nginx yapılandırma dosyasını otomatik güncelliyor
  • Tarayıcıdan domaine girilerek yönetici hesabı oluşturuldu, ardından kullanıcı ve takvimler yaratıldı
  • macOS ve iOS’un varsayılan Takvim uygulamalarına bağlandı; macOS/iOS ayarlarında otomatik veya advanced yerine manual settings kullanıldı

Etkinlik sınıflandırması ve iş takviminin görünürlüğü

  • iCalendar belirtiminde EVENT bileşeninin isteğe bağlı CATEGORIES özelliği vardır; ancak kullanılan macOS Calendar, iOS Calendar, Google Calendar gibi araçlar bu alanı uygulamıyor
  • Serbest metinle sınıflandırmada tutarlılığı korumak zor olduğundan, etkinlik türleri Python enum ile modellendi
    • Örnek: TerminType, CultureType, SocialType, AwayType, TransportType
    • MEETUP, CONFERENCE, CLASS, APPOINTMENT, MEETING, EXAM gibi değerler içeriyor
  • enum’ların birden fazla gruba ayrılmasının nedeni, etkinlik türlerini kavramsal olarak düzenlemekti
  • Sınıflandırma sistemi, iş takviminde görünürlüğü belirleyen mantığı da içeriyor
    • İki haneli enum değerleri iş takviminde varsayılan olarak private işleniyor
    • Doktor randevusu gibi etkinlikler ayrı iş takvimi dosyasına gizli olarak serileştiriliyor
  • Bu sınıflandırma, etkinliklerin aranabilirliğini ve görsel ayırt edilebilirliğini artırmak; renk ayrımını destekleyen ön uçlarda tek bakışta anlaşılır hale getirmek için kullanılıyor

Python senkronizasyon betiği ve ICS yayını

  • Otomasyon için Python betiği bir cron job’a bağlandı
  • Betik, birden fazla girdiyi toplayıp Baïkal’a koyuyor ve tekrar paylaşılabilir ICS olarak dışa aktarıyor
    • IMAP ile e-postadan etkinlikleri alma
    • Airtrail API’den uçuş etkinliklerini çıkarma
    • Dil okulunun barındırdığı ICS dosyasını alma
    • Toplanan etkinlikleri Baïkal’a push etme
    • Baïkal’dan tüm etkinlikleri alıp bir veya daha fazla paylaşılabilir ICS dosyası olarak yeniden serileştirme
  • IMAP entegrasyonu, e-postayla alınan takvim davetlerini otomatik olarak alıp takvime eklediği için Google Calendar’a benzer bir işlev sunuyor
  • cron giriş noktası betiği aile ve iş için ayrı ayrı Calendar oluşturuyor; Baïkal’dan etkinlikleri alıp dallandırarak işliyor
    • Aile ICS’sine etkinliği ekliyor
    • İş e-posta adresi etkinliğin serileştirilmiş çıktısında yoksa iş ICS’sine ekliyor
    • is_work_public sonucuna göre classification değerini PUBLIC veya PRIVATE olarak ayarlıyor
  • Baïkal entegrasyon betiği, uzak etkinlikleri almak için PROPFIND istekleri ve HTTP Digest kimlik doğrulaması kullanıyor
  • Etkinlik açıklamasında CATEGORIES: deseni varsa kategori açıklama alanından çıkarılıp event.categories içine konuyor; ilgili metin açıklamadan kaldırılıyor
  • Paylaşım amaçlı ICS dosyaları nginx üzerinden tahmin edilmesi zor URL’lerle sunuluyor; URL, rastgele ve salt uygulanmış hash dizgesinden üretiliyor
  • Bu cron job 15 dakikada bir çalışıyor

İş Google Calendar senkronizasyonu

  • Kişisel takvimde etkinlikleri görmenin yanı sıra, iş takviminde yolculuk ve uçuş planlarının bloke zaman olarak görünmesi ve iş arkadaşlarının durumu anlayabilmesi gerekiyordu
  • İş takvimine kopyalama için Google Script Engine kullanıldı
  • Temel betik, GAS-ICS-Sync’in değiştirilmiş bir sürümü
  • Değiştirilmiş sürüm, takvim CATEGORIES özelliğini okuyup iş takvimine renk kodlaması uyguluyor
  • Google Script 30 dakika aralıklarla çalışıyor
  • Google Calendar kullanımı Big Tech’e bağımlılığı azaltma hedefiyle çelişiyor; ancak bunun iş ortamının tercihi olduğu ve kişisel kullanım bağımlılığı olmadığı ayrımı yapılıyor

İşletim sonuçları ve maliyet

  • Bu sistem yaklaşık 6 ay boyunca küçük düzeltmeler ve eklemelerle kullanıldı
  • En yeni değişiklik Airtrail API entegrasyonu
    • Uçuş rezervasyonu yapıldığında veriler uçuş takipçisine giriliyor
    • 15 dakika içinde kişisel takvime ekleniyor
    • 1 saat içinde iş takvimine otomatik kopyalanıyor
  • Karmaşık seyahat gereksinimlerinde takvim yönetimi süresini önemli ölçüde azaltarak yaşam kalitesinde iyileşme sağladı
  • Toplam maliyet en aza indirilebilir; ev tipi NAS üzerinde de kolayca çalıştırılabilir
  • Şu anda web sitesini ve entegrasyonu çalıştırmak için verileri İsviçre’de tutan, ayda yaklaşık 100 dolar sunucu zamanı aboneliği kullanılıyor
  • Bu maliyet biraz abartılı bir kurulum ve zamanla optimize edilmesi planlanıyor
  • VM instance’ının Docker host’u üzerinde hızlıca yapılandırılabilmiş olması ek maliyeti göze almaya değer kıldı; takvim yönetimi kolaylaştığı için ayda 100 dolara karşılık gelen zamanı tasarruf ettiriyor

1 yorum

 
GN⁺ 2025-04-11
Hacker News yorumları
  • Tepki çekecek gibi ama bence CalDAV pek iyi değil
    Gerçekten kolay ve harika olsaydı, çok daha fazla self-hosted CalDAV çözümü olurdu ve kullanılabilirlikleri de daha iyi olurdu; Radicale de beni etkilemedi
    Aslında bana sunulacak tek şey bir takvim dosyası olduğundan kendi CalDAV sunucumu yazmayı denedim, ama tek bir dosyayı dışa açmak bile hiç sezgisel değildi ve karmaşıktı, bu yüzden vazgeçtim
    Başkalarıyla CalDAV destekli uygulamalar üzerinden takvim paylaşmanız gerekiyorsa gerekliliğini anlarım, ama tek başına kullanılan bir takvimi barındırmak için bana neredeyse zaman kaybı gibi geliyor
    Bunun yerine başlangıçta dinamik olarak güncellenen bir iCal dosyasını S3 bucket'ına koyup Android'de ICSx5 ile senkronize ettim. CalDAV olmadan yalnızca HTTPS yeterliydi
    Ancak Android için özgür ve açık kaynaklı takvim uygulamaları hâlâ yetersiz; ayrıca GrapheneOS'te ICSx5 düzgün çalışmadığından şimdi iCal dosyasına doğrudan bağlantı destekleyen Proton Calendar'ı neredeyse aynı şekilde kullanıyorum
    iCalendar biçimini kullanan yaklaşım iyi, ama takvim yazılımlarının iCalendar özellik desteği çok farklı olduğundan sonunda meta verilerin çoğunu özel özellikler yerine açıklama alanına tıkıştırmak zorunda kalıyorum
    Benim kullanımım, Eventbrite, Meetup, pub quiz şirketleri, herkese açık etkinlik takvimleri gibi çeşitli sitelerden veri çekip yalnızca ilgimi çeken sosyal etkinlikleri filtreleyen ve bunları normalde kullandığım takvim uygulamasında görebileceğim tek bir takvimde birleştiren bir yazılım

    • Tüm Apple ürünlerinde yer alan CalDAV istemcisi üzerinde çalışmıştım; protokolün kötü olduğuna katılıyorum
      Üstelik Exchange ve Google'ın standarda uymayan CalDAV sunucularını idare etmek için çok uğraştık; kullanıcılar da tüm suçu bize attı
      Şimdi Google'da çalışınca görüyorum ki gCal uygulamaları tamamen farklı bir protokol kullanıyor
    • CalDAV ve temelindeki WebDAV'ın ana sorunu, W3 onaylı standartların çoğunda görülen kronik soruna benziyor
      Hafif bir biçim olmak yerine tek seferde çok fazla işi yapmaya çalışarak aşırı tasarlanmış; sonuçta birbirine dolanmış farklı fikirlerden oluşan bir yumak gibi bir protokole dönüşmüş
      Bu yüzden birçok servis, gerçekte istedikleri kapsamın dışına çıktığı için tüm spesifikasyona eksiksiz uymaya çalışmıyor
      W3 veri biçimi spesifikasyonları sanki hep böyle bitiyor; daha düşük seviyeli protokol spesifikasyonlarında bu nispeten daha az böyle görünüyor
    • Dreaming in Code adlı kitap, Chandler takvim programını geliştiren ekip üzerinden CalDAV ve WebDAV'ın nasıl ortaya çıktığını ayrıntılı biçimde ele alıyor
      Okuyalı 15 yıl oldu, ama bu tür protokollerin tasarım sürecinde komiteler içinde nasıl yolunu kaybettiğine de kısmen değindiğini hatırlıyorum
      Projenin 2001 civarında başladığı gerçeği bile takvim meselesinin ne kadar eski bir baş ağrısı olduğunu gösteriyor
      Neden kötü olduğunu öğrenmek istiyorsanız öneririm; ayrıca startup'lar ile açık kaynağın çatışması, ürün geliştirme ve genel olarak yazılım geliştirme üzerine de iyi bir hikâye
      http://www.dreamingincode.com/ ; https://en.m.wikipedia.org/wiki/Dreaming_in_Code
    • Nextcloud'un CalDAV ve CardDAV'ını DAVx5 ile kullanıyorum; neredeyse kusursuz çalışıyor
    • Benim CalDAV sağlayıcım ZOHO
      Android senkronizasyonu için arka planda senkronizasyon servisi çalıştıran, root gerektirmeyen açık kaynak uygulama DAVX5'i kullanıyorum; kurulumda çok sorun vardı ve bu CalDAV uygulama farklarından kaynaklanıyor olabilir. DAVX5'ten ZOHO takvimine senkronizasyon da uzun sürüyor
      Ubuntu'daki Evolution'ın CalDAV desteği oldukça iyi, ama posta görünümü ile takvim görünümü arasında her geçişte tüm takvimi yeniliyor. ZOHO takviminin yenilenmesi uzun sürüyor ve ZOHO'nun hız sınırları da sıkı olduğundan fiilen soft block yemiş oluyorsunuz
      Güncel Thunderbird'de farklı bir HTTP başarı kodu bekleyen bir CalDAV uyumsuzluğu var. ZOHO 200 döndürüyor, ama Thunderbird başka bir kod bekliyor. Bu arada Thunderbird CalDAV kodu JS ile yazılmış
      Bu sorun yalnızca ikinci takvimde ortaya çıkıyor; ikinciyi eklediğiniz anda hata vermeye başlıyor. En azından ZOHO'da epey acı verici
  • Önerebileceğim başka bir CalDAV sunucusu da Radicale
    Python ile yazılmış ve oldukça modüler tasarlanmış; kimlik doğrulama, yetkilendirme gibi eklentiler takılabiliyor
    Veriler düz metin dosyaları olarak saklanıyor; git ile izleyip yedekliyorum
    Zaman içinde birkaç ilginç değişiklik biriktirdim. Kimlik doğrulamayı host sistemin pam'iyle yapıyorum; takvim paylaşımı için de izinli tüm kullanıcılara takvimi sembolik linkleyen periyodik bir betik çalıştırıyorum. Ancak kombinasyon patlaması sorunu var
    Özel CalDAV özellikleri kullanan bir yetkilendirme eklentisi ve değiştirilmiş bir web eklentisiyle erişim denetim listeleri de ekledim
    Herkese açık takvimler için ACL ile public kullanıcısına okuma izni veriyorum ve nginx hack'iyle okuma işlemlerine kapsayıcı erişim tanıyorum
    Bu herkese açık takvim web takviminde görülebiliyor: https://gitlab.nomagic.uk/popi/js_calendar_from_ics
    Sanırım bu kurulum hakkında bir blog yazısı yazmalıyım

    • Radicale'ı birkaç yıldır kullanıyorum. BusyCal'de ara sıra çıkan sorunlar dışında çok sorunsuz çalışıyor
  • Tam ihtiyacım olan yazıydı
    Kişisel sunucumda Mailcow'un SoGO takvimini, iş takvimim için Fastmail'i kullanıyorum; birbirleriyle pek iyi anlaşmıyorlar
    Mailcow takvimini başka araçlarla düzgün bağlamanın yolunu bulamadığım için yarı manuel senkronizasyona zaman harcıyorum
    Bir süredir takvimleri ayırmak istiyordum ama bildiğim tek alternatif Nextcloud'du; o da biraz ağır geliyor
    Baïkal iyi görünüyor ve bir an önce denemek istiyorum. Böylece Mailcow'u başka bir self-hosted e-posta servisiyle değiştirmeyi de araştırabilirim

  • Son dönemde buluttan oldukça agresif biçimde uzaklaşıyorum. Yüzlerce GB verim vardı ama taşıma işlemini aralıklı yapsam da 2 haftadan kısa sürdü ve beklediğimden çok daha iyi çalışıyor
    Dışarıya bıraktığım tek hizmet e-posta; çünkü MX kayıtları ve IMAP/SMTP ile uğraşmak istemiyorum
    Geri kalanlarda çift çekirdekli Celeron CPU’lu Asus PN40 çok yardımcı oldu. Erişilebilirliğinin iyi olması, M.2 NVME ve SATA sürücü yuvaları sayesinde tek yerde güvenli bir yedekleme düzeni kurabilmesi büyük avantaj
    CalDAV’ın biraz şüpheli olduğuna katılıyorum ama Nextcloud ihtiyaçlarımın çoğunu karşıladı. Redis ekleseniz bile bazı işler yavaş olabiliyor; yine de takvim, Dropbox/Google Drive alternatifi, belgeler, fotoğraflar, yedekleme ve otomatik senkronizasyonu iyi hallediyor
    Buna çeşitli açık kaynak çözümler ekleyince müzik·video akışı, izleme, bildirimler, VPN, okuyucu, yönetim araçları ve her türlü yardımcı araç da tamamen çözülüyor
    Bu mini PC performans olarak düşük sayılır ama ISP’m çok iyi olduğu için hepsini bolca kapasite bırakarak kaldırıyor; benim gibi 5-6 kişiyi daha alsa da zorlanmayacak düzeyde

    • Veri dayanıklılığını artırmak istiyorsanız 3-2-1 yedekleme stratejisine bakmak iyi olur. RAID’e de birlikte bakmaya değer
  • Eski olanın yeniden yeni hâle gelmesi gibi bir his
    2000’lerin başında Mozilla Sunbird ile kişisel Win2k sunucumdaki IIS WebDAV modülü üzerinden takvim barındırıyordum
    CardDAV sanırım henüz yoktu; yanlış hatırlıyor da olabilirim
    Sonunda tüm o verileri Google Calendar’a aktardım; çok geriye gidince üniversite ödevleri gibi şeyler bile duruyor, bu yüzden epey eğlenceli

    • 2004 civarında Sunbird neredeyse istediğim şeydi ama kararsız görünüyordu
      Bazı randevular sunucuya çıkmadığı için kaybettiğim olmuştu; DAViCal sunucusuyla birlikte CalDAV olarak kullanıyordum
      Sunbird durduruldu ve Windows’ta çalışacak düzgün bir alternatif var mı diye son zamanlarda bakmadım
  • Baikal ilginç görünüyor
    Geçmişte birkaç Apple iOS cihaz arasında takvim paylaşmak için DAViCal kullanmıştım. Çalıştığında iyi çalışıyordu ama iOS sürümü değiştikçe kararsızlaşıyor gibi geldi ve sonunda bıraktım
    Bir gün yeniden bakarsam DAViCal ve Radicale ile birlikte artık Baikal’e de bakmayı düşünüyorum
    https://www.davical.org/
    https://radicale.org/v3.html

    • Radicale’i uzun süre kullandım ve iyi çalışıyor
      Son dönemde Nextcloud’a geçtim; çünkü paylaşımlı hosting tarafında dağıtımı onlar üstleniyor ve entegre web arayüzü sayesinde kurulum yükü çok daha azdı
  • Baikal’i birkaç yıldır kullanıyorum, oldukça sağlam. Ancak tek başıma kullanıyorum ve asıl yazıdaki tüm gereksinimlere sahip değilim
    Masaüstünde Thunderbird’ün yerleşik takvimine bağlıyorum; telefonda F-Droid’den DAVx5 ve Fossify Calendar kullanıyorum
    Fossify Calendar, Simple Mobile Tools’un Calendar uygulamasından çatallandı; ama adının aksine şimdiye kadar gördüğüm en özellikli takvim uygulaması
    Bir sürü menü ve iletişim kutusunun içine sokmadan tüm seçenekleri doğrudan göstermesindeki sadelik hoşuma gidiyor

  • İşte Outlook, evde Google Calendar kullanıyorum; HTTP ile senkronize edince tamamen kararsız oluyor
    Saat dilimlerini sürekli bozuyor gibi; bazen UTC olarak yayımlıyor bazen yayımlamıyor, bu yüzden toplantı saatleri hep şaşıyor
    Bu iki büyük sağlayıcının bu kadar temel bir özelliği neden düzeltemediğini anlamıyorum
    Kendi sistemimi kullanınca çözülecekse hemen yaparım ama Outlook’ta oluşturulan toplantının 2 saat farkla içeri alınması gibi aynı şey yaşanır diye endişeliyim

    • Google ürünleri genelinde saat dilimi işleme onlarca yıl boyunca uygulamadan uygulamaya umutsuzca bozuktu. Yine de artık yapay zeka geliştiricileri yakında halleder herhâlde
    • Bu sorunu düzeltmek için neredeyse hiç finansal teşvik yok. Hatta kilitleme etkisine yardımcı oluyor
      Ayrıca birçok şirket veri sızıntısı sorunları nedeniyle kişisel takvim ile iş takvimi arasında senkronizasyonu fiilen yasaklıyor
  • Böyle bir şeyi fotoğraflar için de yapmak istiyorum. Bir süredir Dropbox ve Google’dan uzaklaşmak istiyorum; önceliklerim iki tane
    Birincisi, fotoğraflarımdan anılar özelliği gibi şeyler oluşturup telefona göndermek istiyorum. Yıl dönümleri, benzer aktiviteler, ben ve X (X eş, aile, arkadaş vb.), zaman içindeki değişimler gibi ölçütlerle gruplama şeklinde
    İkincisi, cihazda çekilen fotoğrafları kendi sunucuma kaydedebilmem gerekiyor
    Farklı yerlerde 2 TB alana sahip 3 TrueNAS makinesi hazırladım ve bu özelliği yavaş yavaş yapmak istiyorum

  • Başka bir yol olarak sunucusuz DecSync kullanmak da var
    Thunderbird veya Evolution Android uygulamasıyla senkronize oluyor; takvimler, kişiler, görevler ve RSS de diğer eşlere kopyalanıyor. F-Droid’den de alınabiliyor
    https://github.com/39aldo39/DecSync

    • İlginç ama iOS desteği görünmüyor ve ne yazık ki bakımı da yapılmıyor gibi