Skip to main content
Dropbox-synkronisering bruker tre deler av hver Ayakaleaf Pro-pod, og alle tre starter bare med DROPBOX_ENABLED: "true":
  • web (dropbox-modulen): kobling, prosjektets Dropbox-dialogboks og webhooken som Dropbox kaller.
  • third-party-datastore: en egen tjeneste inne i poden som arbeider seg gjennom køen av endringer som skal sendes til eller hentes fra Dropbox.
  • document-updater: når Dropbox er på, skriver den editorens endringer til MongoDB i bakgrunnen, noen minutter etter at alle har forlatt et prosjekt; først da går de til Dropbox.
Opprett Dropbox-appen og les hvordan synkroniseringen fungerer i Dropbox-synkronisering; denne siden legger det inn i Kubernetes.

Konfigurasjon

1

ConfigMap

30-config.yaml (additions)
GIT_BRIDGE_ENABLED: "true" og git-bridge-StatefulSet-en fra Git-integrasjon må være på plass: uten dem skjuler kontoinnstillingene seksjonen for prosjektsynkronisering.
2

Secret

DROPBOX_TOKEN_CIPHER_PASSWORD krypterer brukernes Dropbox-tokener i MongoDB. Alle replikaer må bruke samme verdi, og hvis den endres senere, må alle brukere koble til Dropbox på nytt.
3

Opprett databaseindeksene

Kjør indekskommandoene fra Opprett databaseindeksene én gang, på primærnoden i replikasettet:
4

Bruk og start på nytt

third-party-datastore.log finnes bare når DROPBOX_ENABLED er "true".
5

Åpne webhooken mot internett

Dropbox må kunne nå ${OVERLEAF_SITE_URL}/dropbox/webhook fra internett. Hvis ingressen eller lastbalansereren din bare tillater enkelte stier eller nettverk utenfra, tillater du denne; det er den eneste stien Dropbox kaller. Sjekk den fra utsiden av klyngen:
Legg deretter til webhooken i Dropbox App Console som beskrevet på Toolkit-siden.

Flere replikaer

Ingenting ekstra utover det delte DROPBOX_TOKEN_CIPHER_PASSWORD:
  • Webhooken kan nå hvilken som helst replika. Den legger bare endringen i køen i Redis.
  • Hver replika kjører third-party-datastore, og hver av dem arbeider med den delte køen. En brukers kø tas med en lås i Redis, så bare én replika sender eller henter en gitt brukers endringer om gangen.
  • Hver replikas document-updater skriver inaktive prosjekter i bakgrunnen. Hvert prosjekt tas fra en delt liste i Redis, så det skrives én gang.

Testet på Kubernetes

Mot en etterligning av Dropbox-API-et, på Kubernetes 1.37 med tre replikaer bak HAProxy, består ende-til-ende-testene våre for Dropbox-synkronisering (59 tilfeller): kobling og frakobling; sending av prosjekter, redigeringer, binærfiler, omdøpinger, flyttinger og slettinger til Dropbox, inkludert en redigering i editoren som kommer frem via bakgrunnsskrivingen etter at prosjektet ble lukket, uten kompilering eller «sync now»; anvendelse av endringer gjort i Dropbox via webhooken (verifiseringsutfordring og signaturkontroll), nye prosjekter fra nye mapper, slettede prosjektmapper; prosjekter med samme navn; editorens Dropbox-dialogboks og «sync now» med hastighetsbegrensningen; nye forsøk, hastighetsbegrensninger og tidsavbrudd fra Dropbox; kontoer som kobles fra når Dropbox er full, avviser tokenet eller er suspendert; suspenderte Overleaf-kontoer; og webhookens svar når third-party-datastore er nede.
Sist endret 2. november 2026