Skip to main content
Đồng bộ hóa Dropbox sử dụng ba thành phần của mọi pod Ayakaleaf Pro, và cả ba chỉ khởi động khi có DROPBOX_ENABLED: "true":
  • web (module dropbox): liên kết, hộp thoại Dropbox của dự án, và webhook mà Dropbox gọi tới.
  • third-party-datastore: một dịch vụ riêng bên trong pod, xử lý hàng đợi các thay đổi cần gửi tới hoặc lấy từ Dropbox.
  • document-updater: khi bật Dropbox, nó ghi các thay đổi của trình soạn thảo vào MongoDB ở chế độ nền, vài phút sau khi mọi người đã rời khỏi một dự án; chỉ khi đó các thay đổi mới được chuyển tới Dropbox.
Hãy tạo ứng dụng Dropbox và tìm hiểu cách đồng bộ hoạt động trong Đồng bộ hóa Dropbox; trang này đưa nó vào Kubernetes.

Cấu hình

1

ConfigMap

30-config.yaml (additions)
GIT_BRIDGE_ENABLED: "true" và StatefulSet git-bridge từ Tích hợp Git phải được thiết lập sẵn: nếu không, phần cài đặt tài khoản sẽ ẩn mục đồng bộ dự án.
2

Secret

DROPBOX_TOKEN_CIPHER_PASSWORD mã hóa token Dropbox của người dùng trong MongoDB. Mọi replica phải dùng cùng một giá trị, và việc thay đổi nó sau này sẽ khiến mọi người dùng phải liên kết lại Dropbox.
3

Tạo chỉ mục cơ sở dữ liệu

Chạy các lệnh tạo chỉ mục từ Tạo chỉ mục cơ sở dữ liệu một lần, trên primary của replica set:
4

Áp dụng và khởi động lại

third-party-datastore.log chỉ tồn tại khi DROPBOX_ENABLED là "true".
5

Mở webhook ra internet

Dropbox phải truy cập được ${OVERLEAF_SITE_URL}/dropbox/webhook từ internet. Nếu ingress hoặc load balancer của bạn chỉ cho phép một số đường dẫn hoặc mạng từ bên ngoài, hãy cho phép đường dẫn này; đó là đường dẫn duy nhất mà Dropbox gọi tới. Hãy kiểm tra từ bên ngoài cluster:
Sau đó thêm webhook trong Dropbox App Console như mô tả trên trang Toolkit.

Nhiều replica

Không cần gì thêm ngoài DROPBOX_TOKEN_CIPHER_PASSWORD dùng chung:
  • Webhook có thể đến bất kỳ replica nào. Nó chỉ đưa thay đổi vào hàng đợi trong Redis.
  • Mọi replica đều chạy third-party-datastore, và mỗi replica xử lý hàng đợi dùng chung. Hàng đợi của một người dùng được nhận kèm một khóa trong Redis, nên tại một thời điểm chỉ một replica gửi hoặc lấy các thay đổi của người dùng đó.
  • document-updater của mọi replica ghi các dự án nhàn rỗi ở chế độ nền. Mỗi dự án được lấy từ một danh sách dùng chung trong Redis, nên nó chỉ được ghi một lần.

Đã kiểm thử trên Kubernetes

Với bản giả lập Dropbox API, trên Kubernetes 1.37 với ba replica phía sau HAProxy, các bài kiểm thử end-to-end của chúng tôi cho Đồng bộ hóa Dropbox đều đạt (59 trường hợp): liên kết và hủy liên kết; gửi dự án, chỉnh sửa, tệp nhị phân, đổi tên, di chuyển và xóa tới Dropbox, bao gồm một chỉnh sửa từ trình soạn thảo được chuyển qua thao tác ghi nền sau khi dự án đã đóng, mà không cần biên dịch hay “sync now”; áp dụng các thay đổi được thực hiện trong Dropbox qua webhook (challenge xác minh và kiểm tra chữ ký), dự án mới từ thư mục mới, thư mục dự án bị xóa; các dự án trùng tên; hộp thoại Dropbox của trình soạn thảo và “sync now” cùng giới hạn tốc độ của nó; thử lại, giới hạn tốc độ và timeout của Dropbox; tài khoản bị hủy liên kết khi Dropbox đầy, từ chối token hoặc bị tạm ngưng; tài khoản Overleaf bị tạm ngưng; và phản hồi của webhook khi third-party-datastore ngừng hoạt động.
Lần sửa đổi cuối 2 tháng 11, 2026