DROPBOX_ENABLED: "true":
- web (the
dropboxmodule): linking, the project’s Dropbox dialog, and the webhook that Dropbox calls. - third-party-datastore: a service of its own inside the pod that works through the queue of changes to send to or fetch from Dropbox.
- document-updater: with Dropbox on, it writes the editor’s changes to MongoDB in the background, a few minutes after everyone has left a project; only then do they go to Dropbox.
Configuration
1
ConfigMap
30-config.yaml (additions)
GIT_BRIDGE_ENABLED: "true" and the git-bridge StatefulSet from Git integration must be in place: without them the account settings hide the project sync section.2
Secret
DROPBOX_TOKEN_CIPHER_PASSWORD encrypts the users’ Dropbox tokens in MongoDB. Every replica must use the same value, and changing it later makes every user link Dropbox again.3
Create the database indexes
Run the index commands from Create the database indexes once, on the primary of the replica set:
4
Apply and restart
third-party-datastore.log exists only when DROPBOX_ENABLED is "true".5
Open the webhook to the internet
Dropbox must reach Then add the webhook in the Dropbox App Console as described on the Toolkit page.
${OVERLEAF_SITE_URL}/dropbox/webhook from the internet. If your ingress or load balancer only allows some paths or networks from outside, allow this one; it is the only path Dropbox calls. Check it from outside the cluster:Several replicas
Nothing extra beyond the sharedDROPBOX_TOKEN_CIPHER_PASSWORD:
- The webhook may reach any replica. It only queues the change in Redis.
- Every replica runs third-party-datastore, and each works on the shared queue. A user’s queue is taken with a lock in Redis, so only one replica sends or fetches a given user’s changes at a time.
- Every replica’s document-updater writes idle projects in the background. Each project is taken from a shared list in Redis, so it is written once.

