Skip to main content
Dropbox Senkronizasyonu her Ayakaleaf Pro pod’unun üç bölümünü kullanır ve üçü de yalnızca DROPBOX_ENABLED: "true" ile başlar:
  • web (dropbox modülü): hesap bağlama, projenin Dropbox iletişim kutusu ve Dropbox’ın çağırdığı webhook.
  • third-party-datastore: pod içinde, Dropbox’a gönderilecek veya Dropbox’tan getirilecek değişikliklerin kuyruğunu işleyen kendine ait bir hizmet.
  • document-updater: Dropbox açıkken, herkes bir projeden ayrıldıktan birkaç dakika sonra düzenleyicideki değişiklikleri arka planda MongoDB’ye yazar; değişiklikler ancak ondan sonra Dropbox’a gider.
Dropbox uygulamasını oluşturmak ve senkronizasyonun nasıl çalıştığını öğrenmek için Dropbox Senkronizasyonu sayfasına bakın; bu sayfa bunu Kubernetes’e uygular.

Yapılandırma

1

ConfigMap

30-config.yaml (additions)
GIT_BRIDGE_ENABLED: "true" ve Git entegrasyonu sayfasındaki git-bridge StatefulSet’i mevcut olmalıdır: bunlar olmadan hesap ayarları proje senkronizasyonu bölümünü gizler.
2

Secret

DROPBOX_TOKEN_CIPHER_PASSWORD, kullanıcıların Dropbox token’larını MongoDB’de şifreler. Her replika aynı değeri kullanmalıdır; bu değeri daha sonra değiştirmek, her kullanıcının Dropbox’ı yeniden bağlamasını gerektirir.
3

Veritabanı dizinlerini oluşturun

Veritabanı dizinlerini oluşturma bölümündeki dizin komutlarını replika kümesinin birincil üyesinde bir kez çalıştırın:
4

Uygulayın ve yeniden başlatın

third-party-datastore.log yalnızca DROPBOX_ENABLED değeri "true" olduğunda vardır.
5

Webhook'u internete açın

Dropbox’ın ${OVERLEAF_SITE_URL}/dropbox/webhook adresine internetten erişebilmesi gerekir. Ingress’iniz veya yük dengeleyiciniz dışarıdan yalnızca bazı yollara veya ağlara izin veriyorsa, bu yola izin verin; Dropbox’ın çağırdığı tek yol budur. Bunu kümenin dışından kontrol edin:
Ardından webhook’u Toolkit sayfasında açıklandığı gibi Dropbox App Console’a ekleyin.

Birden fazla replika

Paylaşılan DROPBOX_TOKEN_CIPHER_PASSWORD dışında ek bir şey gerekmez:
  • Webhook herhangi bir replikaya ulaşabilir. Yalnızca değişikliği Redis’te kuyruğa ekler.
  • Her replika third-party-datastore çalıştırır ve her biri paylaşılan kuyruk üzerinde çalışır. Bir kullanıcının kuyruğu Redis’teki bir kilitle alınır; böylece belirli bir kullanıcının değişikliklerini aynı anda yalnızca bir replika gönderir veya getirir.
  • Her replikanın document-updater’ı boştaki projeleri arka planda yazar. Her proje Redis’teki paylaşılan bir listeden alınır; böylece yalnızca bir kez yazılır.

Kubernetes üzerinde test edildi

Dropbox API’sinin bir taklidine karşı, HAProxy arkasında üç replikalı Kubernetes 1.37 üzerinde Dropbox Senkronizasyonu için uçtan uca testlerimiz başarılı oldu (59 vaka): hesap bağlama ve bağlantısını kaldırma; projeleri, düzenlemeleri, ikili dosyaları, yeniden adlandırmaları, taşımaları ve silmeleri Dropbox’a gönderme (proje kapatıldıktan sonra derleme veya “sync now” olmadan arka plan yazımıyla ulaşan bir düzenleyici düzenlemesi dahil); Dropbox’ta yapılan değişiklikleri webhook üzerinden uygulama (doğrulama sınaması ve imza denetimi), yeni klasörlerden yeni projeler, silinmiş proje klasörleri; aynı ada sahip projeler; düzenleyicinin Dropbox iletişim kutusu ve hız sınırıyla birlikte “sync now”; Dropbox’ın yeniden denemeleri, hız sınırları ve zaman aşımları; Dropbox dolu olduğunda, token’ı reddettiğinde veya askıya alındığında bağlantısı kaldırılan hesaplar; askıya alınmış Overleaf hesapları; ve third-party-datastore çalışmadığında webhook’un verdiği yanıt.
Son değiştirilme tarihi 2 Kasım 2026