En iyi self-hosted Dropbox alternatifleri karşılaştırması
Nextcloud, Seafile ve Syncthing arasından seçim yaparken dikkat etmeniz gerekenleri inceleyin. Senkronizasyon topolojisi, VPS maliyetleri ve yedekleme farklarını öğrenin.
Hangi self-hosted Dropbox alternatifini çalıştırmalısınız?
Zaman ayırmaya değer dört self-hosted Dropbox alternatifi bulunmaktadır: Nextcloud, Seafile, Syncthing ve üzerinde bir istemci bulunan nesne depolama (object storage). Bunlar birbirinin yerine kullanılamaz. Nextcloud, diğer insanların 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 dosyanın senkronize edildiği 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 olup olmayacağınızı belirleyen şeydir.
Senkronizasyon topolojisi: bir ana sunucu veya sunucusuz eşler
İki tasarım seçeneği mevcuttur ve aşağıdakilerin çoğu, bunlardan hangisini seçtiğinize bağlıdır.
Bir ana 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 makineyle 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ı tutarken, sunucu her şeyi tutabilir. Bir tarayıcı dosyalara erişebilir; paylaşım bağlantılarının var olabilmesinin tek 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 sadece onu tutan cihazlarda bulunur, başka hiçbir yerde yoktur. Bir değişikliğin cihazlar arasında aktarılması için iki cihazın aynı anda çevrimiçi olması gerekir. Kimseye verilecek bir URL yoktur, çünkü hiçbir makine bir sayfa sunmamaktadır.
Bunun sonucunda, insanların genellikle geç aşamalarda fark ettiği dört durum ortaya çıkar:
- Yazılım yüklemeyecek birine dosya göndermek için bir ana sunucu gerekir. Bir bağlantı bir URL'dir ve bir URL, bir port üzerinde dinleme yapan bir süreç gerektirir.
- Kontrolünüz altında olmayan bir makineden (örneğin bir iş bilgisayarı) dosyalarınıza erişmek için bir ana sunucu gerekir.
- Haftalarca kapalı kalan bir cihaz, uyandığında bir sunucudan güncellemeleri alır. Eşler arası bir kurulumda ise sadece o veriyi tutan başka bir cihaz da çevrimiçi olduğunda güncellenebilir. Birçok Syncthing kullanıcısının, her zaman açık bir eş olarak bir VPS üzerinde bir örnek (instance) çalıştırmasının nedeni budur.
- Depolama alanı farklı şekilde hesaplanır. Bir ana sunucu, her cihazın yerel olarak tuttuğu verilerin yanı sıra bir tam kopya daha tutar. 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 standart dosyalar olarak saklar ve bunları bir veritabanı üzerinden 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 en dürüst çözümdür.
Bunun bedeli, sistemin hareketli parçalarıdır. 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şleri, cron veya bir systemd zamanlayıcısı aracılığıyla 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şılmasına neden olur. 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 bir bedel ise yükseltmelerdir: uygulama mağazasındaki eklentiler 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 o sürümü destekleyip desteklemediğini kontrol edin.
Nextcloud, bir hesap yüz binlerce küçük dosyayı barındırdığında yavaşlar; çünkü her dosya hem dosya önbellek tablosunda bir satır hem de diskte gerçek bir dosyadır ve masaüstü istemcisi bunları tek tek tarar. Ev ölçeğindeki kullanımlarda bu sorunla karşılaşılmaz. Boyutlandırma, TLS (transport layer security) ve yedeklemeler, kararınızı verdiğinizde başvurabileceğiniz TLS ve yedekleme içeren Docker tabanlı Nextcloud kurulumu rehberinde ele alınmıştır.
Kapsam hakkında bir uyarı: Nextcloud ayrıca takviminizi, kişilerinizi, notlarınızı ve fotoğraf kitaplığınızı da yönetebilir; ancak etkinleştirdiğiniz her uygulama arka plan iş yükünü artırır ve yükseltmeyi engelleyebilecek yeni bir unsur ekler. Eğer asıl sorun fotoğraflarsa, özel bir araç bu işi daha iyi yönetir: Kendi kendine barındırılan Google Photos alternatifi olarak Immich bölümüne bakın. Eğer asıl sorun belgeler ve vikilerse, dosya sunucunuza uygulama yığmak yerine kendi kendine barındırılan Notion alternatifleri konusuna 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ı konusunu 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 (hash) göre adreslenen dahili bir nesne deposunda saklar. Senkronizasyon ve paylaşım birimi, bir klasör ağacı yerine bir kütüphanedir. İstemci, dosya başına bir istek göndermek yerine blokları ve tek bir commit işlemini yüklediğinden, 100.000 küçük dosyadan oluşan bir dizinin senkronizasyonu, dosya bazlı protokollerden çok daha hızlı tamamlanır. Özdeş bloklar yalnızca bir kez saklandığından, büyük bir dosyanın ikinci bir kopyası neredeyse hiç ek maliyet getirmez.
Bunun karşılığında, sunucudaki dosyalarınız 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. Bu nesneler normal dosyalar olduğu için yedeklemeler çalışmaya devam eder, ancak cp ile tek bir elektronik tabloyu geri yükleyemezsiniz. Bunun kabul edilebilir olup olmadığına şimdi karar verin, çünkü insanlar genellikle daha sonra bu özellikten pişmanlık duyarlar.
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 istemciler mevcuttur. Şifreli 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. Şifreli 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 ile benzer seviyededir. 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 relay ü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ı 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 zahmetsiz araçtır.
Vazgeçtiğiniz şey ise tüm paylaşım sütunudur. Girişi Device pairing only, no links olarak görünür. Bir müşteriye, muhasebeciye veya akrabaya doğrudan bir bağlantı veremezsiniz. Mobil 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 kaydı 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 bir süre CPU kullanacaktır, ardından normale döner. En küçük VPS planında bile rahatlıkla çalışır.
Çakışmalar, her iki tarafın da korunmasıyla çözülür. İ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ı elle çözmeniz gerekir.
İstemci ile nesne depolama: ucuz baytlar, eşitleme klasörü değil
Nesne depolama, MinIO ile kendi sunucunuzda barındırdığınız veya bir sağlayıcıdan kiraladığınız S3 (simple storage service) uyumlu bir bucket anlamına gelir. Buna bir araçla erişirsiniz: komut satırından rclone veya bucket'ı bir sürücü olarak gösteren bir masaüstü istemcisi. Bucket'a bir kabuk yerine web sayfasından göz atmayı tercih ederseniz, kendi kendine barındırılan dosya yöneticilerinin bu karşılaştırmasındaki araçların birçoğu, S3 bucket'ını arka uç olarak kullanır ve üzerine kendi paylaşım bağlantılarını ekler. Paylaşım, kendi son kullanma süresini taşıyan ve sizin oluşturduğunuz bir bağlantı olan önceden imzalanmış bir URL'dir (presigned URL). 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 nesnelere uygulanmaz.
Bir bucket'ı eşitleme klasörü olarak kullanmak, bu işin yanlış yapıldığı 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 doğrudan bilgi verir. Nesne depolamanın çok iyi yaptığı şey, altta durmaktır: bir yedekleme hedefi veya bir uygulamanın arkasındaki depolama katmanı. MinIO ile kendi kendine barındırılan S3 uyumlu nesne depolama, sunucu tarafını ele alır.
Buradaki kaynak maliyeti alışılmadık düzeydedir. MinIO tek bir ikili dosyadır ve boşta çok az kaynak tüketir. Aslında ödediğiniz maliyet disktir ve bir VPS'de 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 nedenle bir arşivin boyutunu belirlemeden önce bir VPS'in aylık gerçek maliyetinin ne olduğu 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. Bir tanesi 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ş, kütüphane bazında tutulur; bu nedenle bir kütüphaneyi silmek, geçmişini de beraberinde siler.
Verilerinizi geri almak
Çıkış maliyetini şimdi kontrol etmek kolay, ancak ileride 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 yedeği, 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ğer bir araca ihtiyaç duyar; bu da sadece tek bir komut uzağınızdadır.
Eşitleme yedekleme değildir ve veri kaybı tam olarak bu noktada yaşanı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 durumu bildirir, sunucu işlemi uygular ve diğer tüm cihazlar da ilgili klasörü siler. 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. Eşitleme işlemi doğru çalışmıştır ancak verileriniz yine de kaybolmuştur.
Çöp kutuları ve sürüm geçmişi bu durumu hafifletse de bunlar da belirli bir süre sonra silinir, hatayı yapan aynı hesap tarafından boşaltılabilir ve canlı kopyayla aynı disk üzerinde tutulurlar. Arızalanan bir birim, hem dosyaları hem de geçmişlerini beraberinde götürür.
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ında yapılacak bir occ files:scan işlemi dosyaları kurtarsa da veritabanı tablolarında tutulan paylaşımları ve sürüm geçmişini kaybetmenize neden olur. Bir VPS üzerinden zamanlanmış restic yedeklemeleri konusu, bu sürecin şifrelenmiş ve tekilleştirilmiş halini, ayrıca bir geri yüklemenin varsayımlarla değil, bizzat test edilerek nasıl doğrulanacağını ele almaktadır.
Tercihim ne olurdu
Bu metni okuyan çoğu kişi için tercihim Nextcloud olur. İnsanların Dropbox'ı bıraktıktan sonra en çok eksikliğini hissettiği şey, hiçbir şey kurması gerekmeyen birine bağlantı gönderebilmek ve bir dosyayı telefonda açabilmektir. Nextcloud, resmi istemcileriyle ve ücretli bir katmanı olmamasıyla her ikisini de sunar; 2 GB RAM bunun için makul bir bedeldir. Ancak iki istisnam var. Eğer klasör sadece size aitse ve sadece kendi donanımınızda bulunuyorsa, Syncthing kullanın; böylece yama yapacak 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 kapalı dosya depolama yapısını kabul edin. Hangi aracı seçerseniz seçin, nesne depolama (object storage) senkronizasyon aracı olarak değil, yedekleme hedefi olarak arka planda 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 ve 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örde etkinleştirene kadar 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.
Aynı VPS üzerinde Nextcloud ve Syncthing çalıştırabilir miyim?
Evet, farklı portları dinledikleri için çakışmazlar. Bir Syncthing klasörünü Nextcloud'un veri dizinine yönlendirmeyin. Nextcloud her dosyayı bir veritabanında takip eder; bu nedenle doğrudan disk üzerinde oluşturulan dosyalar siz occ files:scan komutunu çalıştırana kadar görünmez kalır, disk üzerinden silinen dosyalar ise veritabanında boş satırlar bırakır. Syncthing'e kendi dizinini verin veya bu dizini Nextcloud'a harici depolama 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üre sonunda kendiliğinden geçersiz hale gelen önceden imzalanmış (presigned) URL'ler sağlar. Syncthing'in bu konuda bir çözümü yoktur. Syncthing'in paylaşım modeli cihaz eşleştirmesine dayalıdı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ı planlayın. Sürüm geçmişi, insanların genellikle hafife aldığı kısımdır: günlük değişen 2 GB'lık bir dosyanın her sürümünü tutmak alanı hızla tüketir, bu yüzden erkenden bir saklama politikası belirleyin. Verileri ayrı bir birimde (volume) tutmak, bu büyümenin kök dosya sisteminden (root filesystem) uzak kalmasını sağlar; aksi takdirde dolan bir disk, tek bir yüklemeyi değil tüm sunucuyu durdurur.