Skip to main content
Sinkronisasi Dropbox menggunakan tiga bagian dari setiap pod Ayakaleaf Pro, dan ketiganya hanya dimulai dengan DROPBOX_ENABLED: "true":
  • web (modul dropbox): penautan, dialog Dropbox pada proyek, dan webhook yang dipanggil oleh Dropbox.
  • third-party-datastore: layanan tersendiri di dalam pod yang memproses antrean perubahan untuk dikirim ke atau diambil dari Dropbox.
  • document-updater: dengan Dropbox aktif, layanan ini menulis perubahan dari editor ke MongoDB di latar belakang, beberapa menit setelah semua orang meninggalkan proyek; baru setelah itu perubahan dikirim ke Dropbox.
Buat aplikasi Dropbox dan baca cara kerja sinkronisasi di Sinkronisasi Dropbox; halaman ini menerapkannya ke Kubernetes.

Konfigurasi

1

ConfigMap

30-config.yaml (additions)
GIT_BRIDGE_ENABLED: "true" dan StatefulSet git-bridge dari Integrasi Git harus sudah tersedia: tanpa keduanya, pengaturan akun menyembunyikan bagian sinkronisasi proyek.
2

Secret

DROPBOX_TOKEN_CIPHER_PASSWORD mengenkripsi token Dropbox pengguna di MongoDB. Setiap replika harus menggunakan nilai yang sama, dan mengubahnya nanti membuat setiap pengguna harus menautkan Dropbox lagi.
3

Buat indeks database

Jalankan perintah indeks dari Membuat indeks database satu kali, pada primary dari replica set:
4

Terapkan dan restart

third-party-datastore.log hanya ada jika DROPBOX_ENABLED bernilai "true".
5

Buka webhook ke internet

Dropbox harus dapat menjangkau ${OVERLEAF_SITE_URL}/dropbox/webhook dari internet. Jika ingress atau load balancer Anda hanya mengizinkan path atau jaringan tertentu dari luar, izinkan path ini; ini adalah satu-satunya path yang dipanggil Dropbox. Periksa dari luar kluster:
Lalu tambahkan webhook di Dropbox App Console seperti dijelaskan di halaman Toolkit.

Beberapa replika

Tidak ada yang perlu ditambahkan selain DROPBOX_TOKEN_CIPHER_PASSWORD yang sama:
  • Webhook dapat menjangkau replika mana pun. Webhook hanya memasukkan perubahan ke antrean di Redis.
  • Setiap replika menjalankan third-party-datastore, dan masing-masing memproses antrean bersama. Antrean seorang pengguna diambil dengan lock di Redis, sehingga hanya satu replika yang mengirim atau mengambil perubahan pengguna tertentu pada satu waktu.
  • document-updater di setiap replika menulis proyek yang tidak aktif di latar belakang. Setiap proyek diambil dari daftar bersama di Redis, sehingga hanya ditulis satu kali.

Diuji di Kubernetes

Terhadap tiruan (mock) Dropbox API, di Kubernetes 1.37 dengan tiga replika di belakang HAProxy, pengujian end-to-end kami untuk Sinkronisasi Dropbox lulus (59 kasus): menautkan dan melepas tautan; mengirim proyek, suntingan, file biner, penggantian nama, pemindahan, dan penghapusan ke Dropbox, termasuk suntingan editor yang tiba melalui penulisan latar belakang setelah proyek ditutup, tanpa kompilasi atau “sync now”; menerapkan perubahan yang dibuat di Dropbox melalui webhook (verification challenge dan pemeriksaan tanda tangan), proyek baru dari folder baru, folder proyek yang dihapus; proyek dengan nama yang sama; dialog Dropbox di editor dan “sync now” beserta batas lajunya; percobaan ulang, batas laju, dan timeout dari Dropbox; akun yang dilepas tautannya saat Dropbox penuh, menolak token, atau ditangguhkan; akun Overleaf yang ditangguhkan; serta jawaban webhook saat third-party-datastore sedang mati.
Terakhir diubah pada 2 November 2026