En İyi Self-Hosted Dropbox Alternatifleri Karşılaştırması
Nextcloud, Seafile ve Syncthing gibi popüler araçları senkronizasyon topolojisi, VPS maliyetleri ve veri yedekleme farkları üzerinden detaylıca karşılaştırıyoruz.
Hangi self-hosted Dropbox alternatifini çalıştırmalısınız?
Zaman ayırmaya değer dört self-hosted Dropbox alternatifi mevcuttur: Nextcloud, Seafile, Syncthing ve üzerinde bir istemci bulunan nesne depolama (object storage). Bunlar birbirinin yerine kullanılamaz. Nextcloud, başka kişilerin dosya alması gereken bir hane veya küçük bir ekip için uygundur. Seafile, senkronizasyon hızının verinin disk üzerinde nasıl göründüğünden daha önemli olduğu, çok sayıda küçük dosyayı senkronize eden bir kişi veya ekip için uygundur. Syncthing, dışarıdan kimsenin bağlantıya ihtiyaç duymadığı, kendi cihazlarını senkronize eden bir kişi için uygundur. Nesne depolama ise bir arşiv için uygundur: nadiren açtığınız ucuz baytlar.
Özellikleri karşılaştırmadan önce senkronizasyonun nasıl çalıştığına göre seçim yapın. Özellik listelerinin hepsi aynı görünür. Topoloji, yani diğer tüm makinelerin üzerinde anlaştığı kopyayı hangi makinenin tuttuğu, altı ay sonra hala memnun kalıp kalmayacağınızı belirleyen unsurdur.
Senkronizasyon topolojisi: merkezi bir sunucu veya sunucusuz eşler
İki tasarım seçeneği mevcuttur ve aşağıda anlatılanların çoğu, yaptığınız seçime bağlıdır.
Merkezi bir sunucu. Nextcloud, Seafile ve nesne depolama (object storage) sistemlerinin tümü bu şekilde çalışır. Genellikle bir VPS (sanal özel sunucu) olan tek bir makine, yetkili kopyayı tutar. Her cihaz bu makine ile iletişim kurar. Dizüstü bilgisayarınız bir ay boyunca kapalı kalabilir, tekrar açıldığında kaldığı yerden devam edebilir. 6 GB boş alanı olan bir telefon verilerin bir kısmını tutabilirken, sunucu her şeyi barındırır. Bir tarayıcı dosyalara erişebilir; paylaşım bağlantılarının var olabilmesinin temel nedeni budur.
Sunucusuz eşler. Syncthing bu şekilde çalışır. Cihazlar birbirini bulur ve dosya listelerini şifreli bir bağlantı üzerinden doğrudan değiş tokuş eder. Hiçbir kopya yetkili değildir: bir dosya yalnızca onu tutan cihazlarda bulunur, başka hiçbir yerde yoktur. Bir değişikliğin cihazlar arasında aktarılabilmesi için iki cihazın aynı anda çevrimiçi olması gerekir. Bir makine sayfa sunmadığı için, herhangi birine verebileceğiniz bir URL yoktur.
Bunun sonucunda, insanların genellikle geç aşamalarda fark ettiği dört durum ortaya çıkar:
- Yazılım yüklemek istemeyen birine dosya göndermek için merkezi bir sunucu gerekir. Bağlantı bir URL'dir ve bir URL, bir portta dinleme yapan bir sürece ihtiyaç duyar.
- Kontrolünüzde olmayan bir makineden (örneğin bir iş bilgisayarı) dosyalarınıza erişmek için merkezi bir sunucu gerekir.
- Haftalarca kapalı kalan bir cihaz, merkezi bir sunucuya bağlandığında verilerini günceller. Eşler arası (peer) bir kurulumda ise cihaz, yalnızca veriyi tutan başka bir cihaz çevrimiçi olduğunda güncellenebilir. Bu nedenle birçok Syncthing kullanıcısı, her zaman açık bir eş olarak bir VPS üzerinde bir örnek (instance) çalıştırır.
- Depolama alanı farklı şekilde hesaplanır. Merkezi bir sunucu bir tam kopya ve her cihazın yerel olarak tuttuğu verileri barındırır. Bir klasörü paylaşan dört eş, dört tam kopya tutar; çünkü her eş klasörün tamamını saklar.
Nextcloud: kullanıcılar, gruplar ve herkese açık bağlantılar
Nextcloud bir PHP web uygulamasıdır. Dosyalarınızı bir veri dizini altında normal dosyalar olarak saklar ve bunları bir veritabanında takip eder. Bir klasörü bir kullanıcıyla, bir grupla veya parola ve son kullanma tarihi içeren herkese açık bir bağlantı olarak paylaşabilirsiniz. Sürüm geçmişi varsayılan olarak etkindir ve silinen dosyalar önce çöp kutusuna gider. Masaüstü istemcileri Linux, macOS ve Windows'u destekler; iOS ve Android uygulamaları ise resmidir. Dropbox'ı bırakma nedeniniz başkalarının dosyalarınızı alması gerekiyorsa, bu dürüst cevaptır.
Bunun bedeli, hareketli parçaların çokluğudur. Normal bir kurulum; bir web sunucusu, PHP-FPM (PHP süreç yöneticisi), MariaDB veya PostgreSQL gibi bir veritabanı ve dosya kilitleme için Redis çalıştırır. Arka plan işi, cron veya bir systemd zamanlayıcısı üzerinden her beş dakikada bir çalışır. 1 GB RAM'e sahip bir VPS üzerinde uygulama başlar, ancak büyük bir yükleme veya uzun süren bir occ bakım komutu, out-of-memory killer (bellek yetersizliği sonlandırıcısı) ile karşılaşır. Birkaç kullanıcı için 2 GB RAM'i alt sınır olarak kabul edin ve daha fazla uygulama etkinleştirdiğinizde 4 GB RAM'e ihtiyaç duyacağınızı öngörün. Diğer bedel ise yükseltmelerdir: uygulama mağazasındaki uygulamalar belirli bir çekirdek sürüme göre oluşturulur, bu nedenle bir sonraki ana sürüme geçmeden önce bağımlı olduğunuz uygulamaların bu sürümü destekleyip desteklemediğini kontrol edin.
Nextcloud, bir hesap yüz binlerce küçük dosya barındırdığında yavaşlar; çünkü her dosya, dosya önbelleği tablosunda bir satır ve diskte gerçek bir dosyadır; masaüstü istemcisi ise bunları tek tek tarar. Ev ölçeğinde bu durum asla sorun teşkil etmez. Boyutlandırma, TLS (taşıma katmanı güvenliği) ve yedeklemeler, kararınızı verdiğinizde başvurmanız gereken TLS ve yedeklemeler içeren Docker tabanlı Nextcloud kurulumu rehberinde ele alınmıştır.
Kapsam hakkında bir uyarı: Nextcloud takviminizi, kişilerinizi, notlarınızı ve fotoğraf kitaplığınızı da çalıştırır; etkinleştirdiğiniz her uygulama arka plan iş yükünü artırır ve yükseltmeyi engelleyebilecek bir unsur daha ekler. Asıl sorun fotoğraflarsa, özel bir araç bunları daha iyi yönetir: bkz. Kendi kendine barındırılan Google Photos alternatifi olarak Immich. Asıl sorun belgeler ve wikilerse, dosya sunucunuza uygulama yığmak yerine kendi kendine barındırılan Notion alternatiflerine göz atın. Bu belgeleri tarayıcıda düzenlemek, bir Nextcloud uygulamasından ziyade ayrı bir sunucu gerektirir; bu nedenle 2 GB alt sınırının sizi hala kurtaracağını varsaymadan önce OnlyOffice ve Collabora karşılaştırmasını değerlendirin.
Seafile: çok sayıda küçük dosya için tasarlandı
Seafile, her dosyayı bloklara ayırır ve bunları, git'in nesneleri için kullandığı mantığa benzer şekilde, içerik özetine (content hash) göre adreslenen dahili bir nesne deposunda saklar. Senkronizasyon ve paylaşım birimi, bir klasör ağacından ziyade bir kütüphanedir. İstemci, dosya başına bir istek yerine blokları ve tek bir commit gönderdiği için, 100.000 küçük dosyadan oluşan bir dizinin senkronizasyonu, dosya bazlı protokollerin yönetebileceğinden çok daha hızlı tamamlanır. Özdeş bloklar yalnızca bir kez saklanır, bu nedenle büyük bir dosyanın ikinci bir kopyası neredeyse hiç ek maliyet getirmez.
Bunun karşılığında, sunucunuzdaki dosyalar artık dosya olmaktan çıkar. Depolama dizinini açtığınızda, onaltılık isimlere sahip nesne dosyalarıyla karşılaşırsınız. Verileri dışarı çıkarmak için Seafile istemcisini veya Seafile'ın kendi dışa aktarma ve fsck araçlarını kullanmanız gerekir. Nesneler normal dosyalar olduğu için yedeklemeler yine de çalışır, ancak cp ile tek bir elektronik tabloyu geri yükleyemezsiniz. Bunun kabul edilebilir olup olmadığına şimdi karar verin, çünkü bu, insanların daha sonra pişmanlık duyduğu bir özelliktir.
Seafile, bir topluluk sürümü ve ücretli bir profesyonel sürüm sunar; bu sürümler arasındaki fark sürümler değiştikçe farklılık gösterebilir, bu nedenle bir ekibi belirli bir özellik etrafında planlamadan önce sitelerindeki güncel şartları okuyun. Resmi masaüstü ve mobil istemcileri mevcuttur. Şifrelenmiş kütüphaneler istemci tarafında şifrelenir, bu nedenle sunucu okuyamadığı şifreli metinleri saklar. Parolayı kaybederseniz, kütüphane siz dahil kimse tarafından okunamaz hale gelir. Şifrelenmiş bir kütüphaneyi tarayıcıda açmak, o parolayı web oturumuna vermek anlamına gelir; bu nedenle bu garantinin en güçlü hali masaüstü ve mobil istemciler için geçerlidir.
Kaynak maliyeti Nextcloud'a yakındır. Bir veritabanı, bir bellek önbelleği ve iki uygulama süreci çalıştırdığınız için 2 GB yine makul bir alt sınırdır.
Syncthing: giriş yapılacak bir şey yok
Syncthing tek bir Go binary dosyasından oluşur. Klasörleri izler, eşlerini bir keşif sunucusu veya aktarıcı üzerinden bulur ve cihazlar arasında doğrudan senkronizasyon yapar. Senkronizasyon yaptığınız kişiler için herhangi bir hesap veya giriş sayfası bulunmaz. İki cihazı kimlik (ID) üzerinden eşleştirir ve her iki tarafta da klasörü onaylarsınız. Çalıştırılacak çok az şey olduğu için bu listedeki en az çaba gerektiren araçtır.
Vazgeçtiğiniz nokta ise paylaşım sütununun tamamıdır. Bu sütundaki girdi Device pairing only, no links şeklindedir. Bir müşteriye, muhasebeciye veya akrabaya bir bağlantı veremezsiniz. Mobil tarafı ise diğer eksikliktir: Android app, no official iOS. Projenin kendi FAQ bölümü bu konuda nettir: "Mevcut Syncthing ekibinin öngörülebilir gelecekte iOS'i resmi olarak destekleme planı yoktur", çünkü iOS arka plan işlemlerini güvenilir senkronizasyonu zorlaştıracak kadar kısıtlamaktadır. iOS kullanıcıları üçüncü taraf uygulamalara yönelmek zorundadır.
Kaynak kullanımı düşüktür, ancak bilinmesi gereken bir nokta vardır. Syncthing senkronize ettiği her dosya için bir dizin girdisi tutar; bu nedenle bellek kullanımı ve ilk tarama süresi toplam boyuttan ziyade dosya sayısına bağlı olarak artar. Büyük bir klasörün ilk kez hashlenmesi işlemciyi bir süre meşgul eder, ardından normale döner. En küçük VPS planında dahi rahatlıkla çalışır.
Çakışmalar, her iki tarafın da korunmasıyla yönetilir. İki cihaz, birbirlerini göremedikleri bir sırada aynı dosyayı değiştirdiğinde, Syncthing bir kopyayı yeniden adlandırır ve diğerinin yanında tutar; böylece notes.sync-conflict-20260802-141530-K7MB3QT.md gibi dosyalarla karşılaşırsınız. Hiçbir şey kaybolmaz. Hiçbir şey otomatik olarak birleştirilmez ve çakışmaları manuel olarak çözmeniz gerekir.
İstemci ile nesne depolama: ucuz baytlar, eşitleme klasörü değil
Nesne depolama, MinIO ile kendi sunucunuzda barındırılan veya bir sağlayıcıdan kiralanan, S3 (basit depolama hizmeti) uyumlu bir bucket anlamına gelir. Buraya bir araçla erişirsiniz: komut satırından rclone veya bucket'ı bir sürücü olarak gösteren bir masaüstü istemcisi. Paylaşım, kendi son kullanma süresini taşıyan ve sizin oluşturduğunuz bir bağlantı olan önceden imzalanmış bir URL (presigned URL) ile yapılır. Sürüm oluşturma (versioning) bir bucket ayarıdır: Bucket versioning, off by default, bu nedenle bucket'ı oluştururken açın, çünkü daha önce yüklediğiniz nesneler için geçerli olmaz.
Bir bucket'ı eşitleme klasörü gibi kullanmak, işlerin yanlış gittiği noktadır. Varsayılan olarak hiçbir şey Documents dizininizi izlemez. rclone bisync iki yönlü eşitleme yapar ve rclone'un kendi belgeleri, gerektirdiği özen konusunda oldukça açıktır. Nesne depolamanın çok iyi yaptığı şey, altta bir yedekleme hedefi veya bir uygulamanın arkasındaki depolama katmanı olarak konumlanmaktır. MinIO ile kendi kendine barındırılan S3 uyumlu nesne depolama, sunucu tarafını ele alır.
Buradaki kaynak maliyeti alışılagelmişin dışındadır. MinIO tek bir ikili dosyadır ve boşta çok az kaynak tüketir. Aslında ödediğiniz maliyet disktir ve bir VPS üzerinde bu, gigabayt başına kiralanan bir blok birimi ile nesneleri içeri ve dışarı taşırken harcadığınız bant genişliği anlamına gelir. Bunların hiçbiri free -h içinde görünmez, bu yüzden bir arşiv boyutu belirlemeden önce bir VPS'in aylık gerçek maliyeti nedir konusunu okuyun.
Paylaşım, mobil istemciler ve sürüm oluşturma karşılaştırması
The data behind this chart
[
{
"tool": "Nextcloud",
"sharing": "Public links, users and groups",
"mobile": "Official iOS and Android apps",
"versioning": "On by default, plus trash"
},
{
"tool": "Seafile",
"sharing": "Public links with password and expiry",
"mobile": "Official iOS and Android apps",
"versioning": "Library history and snapshots"
},
{
"tool": "Syncthing",
"sharing": "Device pairing only, no links",
"mobile": "Android app, no official iOS",
"versioning": "Optional per folder, off by default"
},
{
"tool": "Object storage",
"sharing": "Presigned URLs you generate",
"mobile": "Third party clients only",
"versioning": "Bucket versioning, off by default"
}
]Tüm 4 seçenek tek bir satırda ayrılmıştır. Bunlardan üçü, bir dosyayı yalnızca tarayıcı kullanan bir yabancıya iletebilir. Bunlardan biri ise yalnızca sahip olduğunuz cihazlarla iletişim kurar. Seafile'ın sürüm oluşturma girdisi olan Library history and snapshots özel bir notu hak eder: geçmiş verisi kütüphane bazında tutulur, bu nedenle bir kütüphaneyi silmek onun geçmişini de beraberinde siler.
Verilerinizi geri almak
Çıkış maliyetini şimdi kontrol etmek kolay, ancak daha sonra keşfetmek pahalıdır; bu nedenle taahhütte bulunmadan önce kontrol edin.
Nextcloud, gerçek dosyaları gerçek dizinlerde saklar; bu nedenle veri dizininin bir tar kopyası, uygulama bir daha asla başlamasa bile belgelerinize erişmenizi sağlar. Syncthing, her eş cihazda aynı işlemi yapar; bu, buradaki en güçlü çıkış senaryosudur: dosyalar her cihazda olduğu gibi durur. Seafile'ın nesne deposu, blokları dosya haline getirmek için Seafile'a veya dışa aktarma araçlarına ihtiyaç duyar. Nesne depolama ise rclone veya eşdeğerini gerektirir; bu da yalnızca bir komut uzağınızdadır.
Senkronizasyon yedekleme değildir ve veri kayıpları bu boşluktan kaynaklanır
Buradaki her araç, makineler arasındaki değişiklikleri kopyalar. Silme işlemi de bir değişikliktir. Dizüstü bilgisayarınızdaki bir klasörü kaldırdığınızda, istemci sunucuya bilgi verir, sunucu bu değişikliği uygular ve diğer tüm cihazlarda da klasör silinir. Fidye yazılımları da aynı yolu izler: dosyaları yerel olarak şifreler, istemci değiştirilmiş dosyaları algılar ve şifrelenmiş sürümleri sunucuya yükler. Senkronizasyon doğru çalışmıştır ancak verileriniz yine de kaybolmuştur.
Çöp kutuları ve sürüm geçmişi bu durumu hafifletir. Ancak bunların da bir süresi vardır, hatayı yapan aynı hesap tarafından boşaltılabilirler ve canlı kopyayla aynı disk üzerinde bulunurlar. Arızalanan bir birim, dosyaları ve geçmişlerini birlikte yok eder.
Yedekleme; ayrı donanım üzerinde, belirli bir takvime göre alınan ve en az bir kez geri yükleme testi yapılmış ayrı bir kopyadır. Veritabanını, dosyalarla aynı işlem sırasında yedekleyin. Nextcloud veri dizinini veritabanı olmadan geri yüklemek, dosyaların varlığından habersiz bir örnek oluşturur; sonrasındaki bir occ files:scan işlemi ise dosyaları kurtarsa da veritabanı tablolarında tutulan paylaşımları ve sürüm geçmişini kaybetmenize neden olur. VPS üzerinden zamanlanmış restic yedeklemeleri konusu, bunun şifrelenmiş ve tekilleştirilmiş sürümünü, varsayımlara dayanmak yerine geri yükleme testinin nasıl yapılacağını da içerecek şekilde ele almaktadır.
Tercihim
Bu yazıyı okuyan çoğu kişi için Nextcloud en uygun seçenektir. Dropbox'ı bırakan kullanıcıların en çok eksikliğini hissettiği özellik, hiçbir şey yüklemesi gerekmeyen birine bağlantı gönderebilmek ve dosyaları telefondan açabilmektir. Nextcloud, resmi istemcileriyle her iki özelliği de sunar ve ücretli bir katmanı yoktur; 2 GB RAM bu özellikler için makul bir bedeldir. İstisna tuttuğum iki durum mevcuttur. Eğer klasör sadece size aitse ve yalnızca kendi donanımınızda barındırılıyorsa, Syncthing kullanın; böylece yama yapmanız gereken bir sunucuyla veya savunmanız gereken bir web girişiyle uğraşmazsınız. Eğer yüz binlerce dosyadan oluşan bir çalışma dizinini senkronize ediyorsanız, Seafile kullanın ve hız karşılığında şeffaf olmayan depolama yapısını kabul edin. Object storage, senkronizasyon aracı olarak ön tarafta değil, yedekleme hedefi olarak seçtiğiniz çözümün arka planında yer almalıdır.
FAQ
Syncthing dizüstü bilgisayarım için bir yedekleme çözümü müdür?
Hayır. Syncthing, değişiklikleri cihazlar arasında kopyalar; silme işlemi de diğerleri gibi bir değişikliktir. Bu nedenle yanlışlıkla sildiğiniz bir dosya, saniyeler içinde eşleşen tüm cihazlardan kaybolur. Klasör bazlı dosya sürümleme (file versioning) bu konuda yardımcı olabilir ancak siz her klasör için etkinleştirene kadar bu özellik kapalıdır. Ayrı bir donanım üzerinde, belirli bir takvime göre alınan gerçek bir yedekleme tutun ve geri yükleme işleminin çalıştığından emin olmak için en az bir kez deneme yapın.
Nextcloud ve Syncthing'i aynı VPS üzerinde çalıştırabilir miyim?
Evet, farklı portları dinledikleri için bir çakışma yaşanmaz. Syncthing klasörünü Nextcloud'un veri dizinine yönlendirmeyin. Nextcloud her dosyayı bir veritabanında takip eder; bu nedenle diskte doğrudan Nextcloud'un altına eklenen dosyalar siz occ files:scan komutunu çalıştırana kadar görünmez kalır, alttan silinen dosyalar ise veritabanında boş satırlar bırakır. Syncthing'e kendi dizinini verin veya bu dizini Nextcloud'a harici depolama (external storage) olarak bağlayın; böylece Nextcloud dizini izlemesi gerektiğini bilir.
Hangisi hesabı olmayan biriyle bağlantı paylaşmama izin verir?
Nextcloud ve Seafile, isteğe bağlı parola ve son kullanma tarihi ile herkese açık bağlantılar oluşturabilir. Nesne depolama (object storage) ise belirlediğiniz sürenin sonunda kendiliğinden geçersiz olan önceden imzalanmış (presigned) bir URL sağlar. Syncthing'in bu konuda bir çözümü yoktur. Syncthing'in paylaşım modeli cihaz eşleştirmesine dayanır; bu nedenle karşı tarafın da Syncthing kurması, size bir cihaz kimliği (device ID) vermesi ve klasörü kabul etmesi gerekir.
Sunucunun ne kadar disk alanına ihtiyacı var?
Ana sunucu (server of record) için paylaşılan verilerin toplam boyutunu, sürüm geçmişi ve çöp kutusu için gereken alanı ve devam eden yüklemeler için çalışma payını hesaplayın. Sürüm geçmişi, kullanıcıların genellikle hafife aldığı bir kısımdır: her gün değişen 2 GB'lık bir dosyanın her sürümünü tutmak alanı hızla tüketir, bu nedenle erkenden bir saklama politikası (retention policy) belirleyin. Verileri ayrı bir birime (volume) koymak, bu büyümenin kök dosya sisteminden (root filesystem) uzak kalmasını sağlar; aksi takdirde dolan bir disk, sadece bir yüklemeyi değil tüm sunucuyu durdurur.