Skip to main content
Dropbox-synkronisering använder tre delar av varje Ayakaleaf Pro-pod, och alla tre startar bara med DROPBOX_ENABLED: "true":
  • web (modulen dropbox): länkning, projektets Dropbox-dialog och webhooken som Dropbox anropar.
  • third-party-datastore: en egen tjänst inne i podden som arbetar sig igenom kön av ändringar som ska skickas till eller hämtas från Dropbox.
  • document-updater: med Dropbox aktiverat skriver den redigerarens ändringar till MongoDB i bakgrunden, några minuter efter att alla har lämnat ett projekt; först då går de till Dropbox.
Skapa Dropbox-appen och läs hur synkroniseringen fungerar i Dropbox-synkronisering; den här sidan för in det i Kubernetes.

Konfiguration

1

ConfigMap

30-config.yaml (additions)
GIT_BRIDGE_ENABLED: "true" och git-bridge-StatefulSet från Git-integration måste finnas på plats: utan dem döljer kontoinställningarna avsnittet för projektsynkronisering.
2

Secret

DROPBOX_TOKEN_CIPHER_PASSWORD krypterar användarnas Dropbox-tokens i MongoDB. Varje replik måste använda samma värde, och om det ändras senare måste alla användare länka Dropbox på nytt.
3

Skapa databasindexen

Kör indexkommandona från Skapa databasindexen en gång, på replikuppsättningens primära nod:
4

Tillämpa och starta om

third-party-datastore.log finns bara när DROPBOX_ENABLED är "true".
5

Öppna webhooken mot internet

Dropbox måste nå ${OVERLEAF_SITE_URL}/dropbox/webhook från internet. Om din ingress eller lastbalanserare bara tillåter vissa sökvägar eller nätverk utifrån, tillåt den här; det är den enda sökväg som Dropbox anropar. Kontrollera den utanför klustret:
Lägg sedan till webhooken i Dropbox App Console enligt beskrivningen på Toolkit-sidan.

Flera repliker

Inget extra utöver det delade DROPBOX_TOKEN_CIPHER_PASSWORD:
  • Webhooken kan nå vilken replik som helst. Den lägger bara ändringen i kön i Redis.
  • Varje replik kör third-party-datastore, och var och en arbetar med den delade kön. En användares kö tas med ett lås i Redis, så bara en replik i taget skickar eller hämtar en viss användares ändringar.
  • Varje repliks document-updater skriver inaktiva projekt i bakgrunden. Varje projekt tas från en delad lista i Redis, så det skrivs en gång.

Testat på Kubernetes

Mot en attrapp av Dropbox-API:et, på Kubernetes 1.37 med tre repliker bakom HAProxy, klarar våra end-to-end-tester för Dropbox-synkronisering sig (59 fall): länkning och avlänkning; att skicka projekt, redigeringar, binära filer, namnbyten, flyttar och borttagningar till Dropbox, inklusive en redigering i redigeraren som kommer via bakgrundsskrivningen efter att projektet stängts, utan kompilering eller ”synkronisera nu”; att tillämpa ändringar gjorda i Dropbox via webhooken (verifieringsutmaning och signaturkontroll), nya projekt från nya mappar, borttagna projektmappar; projekt med samma namn; redigerarens Dropbox-dialog och ”synkronisera nu” med dess hastighetsbegränsning; omförsök, hastighetsbegränsningar och timeouts från Dropbox; konton som avlänkas när Dropbox är full, nekar token eller är avstängt; avstängda Overleaf-konton; samt webhookens svar när third-party-datastore är nere.
Senast ändrad 2 november 2026