DROPBOX_ENABLED: "true" 時才會啟動:
- web(
dropbox模組):連結、專案的 Dropbox 對話方塊,以及 Dropbox 呼叫的 webhook。 - third-party-datastore:pod 內的獨立服務,負責處理要傳送至 Dropbox 或從 Dropbox 擷取的變更佇列。
- document-updater:啟用 Dropbox 後,它會在所有人離開專案數分鐘後,於背景將編輯器的變更寫入 MongoDB;只有在此之後,這些變更才會送往 Dropbox。
設定
1
ConfigMap
30-config.yaml (additions)
GIT_BRIDGE_ENABLED: "true" 並部署 Git 整合中的 git-bridge StatefulSet:若缺少這些,帳號設定會隱藏專案同步區段。2
Secret
DROPBOX_TOKEN_CIPHER_PASSWORD 用於加密 MongoDB 中使用者的 Dropbox 權杖。每個副本都必須使用相同的值,且之後變更此值會讓每位使用者都必須重新連結 Dropbox。3
建立資料庫索引
在副本集的主要節點上,執行一次建立資料庫索引中的索引指令:
4
套用並重新啟動
DROPBOX_ENABLED 為 "true" 時,third-party-datastore.log 才會存在。5
向網際網路開放 webhook
Dropbox 必須能從網際網路連線至 接著依照 Toolkit 頁面中的說明,在 Dropbox App Console 中新增 webhook。
${OVERLEAF_SITE_URL}/dropbox/webhook。若您的 ingress 或負載平衡器只允許外部存取部分路徑或網路,請允許此路徑;這是 Dropbox 唯一會呼叫的路徑。請從叢集外部進行檢查:多個副本
除了共用的DROPBOX_TOKEN_CIPHER_PASSWORD 之外,不需要額外處理:
- webhook 可能抵達任何一個副本。它只會將變更排入 Redis 的佇列中。
- 每個副本都會執行 third-party-datastore,且各自處理共用的佇列。使用者的佇列會透過 Redis 中的鎖定取得,因此同一時間只有一個副本會傳送或擷取特定使用者的變更。
- 每個副本的 document-updater 都會在背景寫入閒置的專案。每個專案都是從 Redis 中的共用清單取得,因此只會被寫入一次。

