Skip to main content
Dropbox-synkronisering bruger tre dele af hver Ayakaleaf Pro-pod, og alle tre starter kun med DROPBOX_ENABLED: "true":
  • web (modulet dropbox): tilknytning, projektets Dropbox-dialog og den webhook, som Dropbox kalder.
  • third-party-datastore: en selvstændig tjeneste inde i poden, der arbejder sig gennem køen af ændringer, der skal sendes til eller hentes fra Dropbox.
  • document-updater: med Dropbox slået til skriver den editorens ændringer til MongoDB i baggrunden, et par minutter efter at alle har forladt et projekt; først derefter sendes de til Dropbox.
Opret Dropbox-appen, og læs, hvordan synkronisering fungerer, i Dropbox-synkronisering; denne side lægger det ind i Kubernetes.

Konfiguration

1

ConfigMap

30-config.yaml (additions)
GIT_BRIDGE_ENABLED: "true" og git-bridge-StatefulSet’et fra Git-integration skal være på plads: uden dem skjuler kontoindstillingerne afsnittet om projektsynkronisering.
2

Secret

DROPBOX_TOKEN_CIPHER_PASSWORD krypterer brugernes Dropbox-tokens i MongoDB. Hver replika skal bruge den samme værdi, og hvis den ændres senere, skal alle brugere tilknytte Dropbox igen.
3

Opret databaseindekserne

Kør indekskommandoerne fra Opret databaseindekserne én gang på replikasættets primære:
4

Anvend og genstart

third-party-datastore.log findes kun, når DROPBOX_ENABLED er "true".
5

Åbn webhooken mod internettet

Dropbox skal kunne nå ${OVERLEAF_SITE_URL}/dropbox/webhook fra internettet. Hvis din ingress eller load balancer kun tillader visse stier eller netværk udefra, skal du tillade denne; det er den eneste sti, Dropbox kalder. Tjek den udefra clusteret:
Tilføj derefter webhooken i Dropbox App Console som beskrevet på Toolkit-siden.

Flere replikaer

Intet ekstra ud over den delte DROPBOX_TOKEN_CIPHER_PASSWORD:
  • Webhooken kan ramme en hvilken som helst replika. Den sætter kun ændringen i kø i Redis.
  • Hver replika kører third-party-datastore, og hver arbejder på den delte kø. En brugers kø tages med en lås i Redis, så kun én replika ad gangen sender eller henter en given brugers ændringer.
  • Hver replikas document-updater skriver inaktive projekter i baggrunden. Hvert projekt tages fra en delt liste i Redis, så det skrives én gang.

Testet på Kubernetes

Mod en mock af Dropbox-API’et, på Kubernetes 1.37 med tre replikaer bag HAProxy, består vores end-to-end-test for Dropbox-synkronisering (59 tilfælde): tilknytning og fjernelse af tilknytning; afsendelse af projekter, redigeringer, binære filer, omdøbninger, flytninger og sletninger til Dropbox, herunder en redigering i editoren, der ankommer via baggrundsskrivningen efter at projektet blev lukket, uden kompilering eller „sync now”; anvendelse af ændringer foretaget i Dropbox via webhooken (verifikationschallenge og signaturkontrol), nye projekter fra nye mapper, slettede projektmapper; projekter med samme navn; editorens Dropbox-dialog og „sync now” med dens hastighedsbegrænsning; genforsøg, hastighedsbegrænsninger og timeouts fra Dropbox; konti, hvis tilknytning fjernes, når Dropbox er fuld, afviser tokenet eller er suspenderet; suspenderede Overleaf-konti; og webhookens svar, når third-party-datastore er nede.
Sidst ændret 2. november 2026