Skip to main content
Dropbox-synchronisatie gebruikt drie onderdelen van elke Ayakaleaf Pro-pod, en alle drie starten alleen met DROPBOX_ENABLED: "true":
  • web (de module dropbox): koppelen, het Dropbox-dialoogvenster van het project en de webhook die Dropbox aanroept.
  • third-party-datastore: een eigen service binnen de pod die de wachtrij met wijzigingen afwerkt die naar Dropbox moeten worden verstuurd of ervan moeten worden opgehaald.
  • document-updater: met Dropbox ingeschakeld schrijft deze de wijzigingen uit de editor op de achtergrond naar MongoDB, een paar minuten nadat iedereen een project heeft verlaten; pas dan gaan ze naar Dropbox.
Maak de Dropbox-app aan en lees hoe synchronisatie werkt in Dropbox-synchronisatie; deze pagina zet het in Kubernetes.

Configuratie

1

ConfigMap

30-config.yaml (additions)
GIT_BRIDGE_ENABLED: "true" en de git-bridge-StatefulSet uit Git-integratie moeten aanwezig zijn: zonder deze verbergen de accountinstellingen de sectie voor projectsynchronisatie.
2

Secret

DROPBOX_TOKEN_CIPHER_PASSWORD versleutelt de Dropbox-tokens van de gebruikers in MongoDB. Elke replica moet dezelfde waarde gebruiken, en als je deze later wijzigt, moet elke gebruiker Dropbox opnieuw koppelen.
3

Maak de database-indexen aan

Voer de indexopdrachten uit De database-indexen aanmaken één keer uit, op de primary van de replicaset:
4

Toepassen en herstarten

third-party-datastore.log bestaat alleen wanneer DROPBOX_ENABLED op "true" staat.
5

Stel de webhook open voor internet

Dropbox moet ${OVERLEAF_SITE_URL}/dropbox/webhook vanaf internet kunnen bereiken. Als je ingress of load balancer van buitenaf alleen bepaalde paden of netwerken toestaat, sta dan dit pad toe; het is het enige pad dat Dropbox aanroept. Controleer het van buiten het cluster:
Voeg daarna de webhook toe in de Dropbox App Console zoals beschreven op de Toolkit-pagina.

Meerdere replica’s

Niets extra’s naast het gedeelde DROPBOX_TOKEN_CIPHER_PASSWORD:
  • De webhook kan bij elke replica aankomen. Hij zet de wijziging alleen in de wachtrij in Redis.
  • Elke replica draait third-party-datastore, en elke instantie werkt aan de gedeelde wachtrij. De wachtrij van een gebruiker wordt opgepakt met een lock in Redis, zodat slechts één replica tegelijk de wijzigingen van een bepaalde gebruiker verstuurt of ophaalt.
  • De document-updater van elke replica schrijft inactieve projecten op de achtergrond weg. Elk project wordt uit een gedeelde lijst in Redis gehaald, zodat het één keer wordt weggeschreven.

Getest op Kubernetes

Tegen een mock van de Dropbox API, op Kubernetes 1.37 met drie replica’s achter HAProxy, slagen onze end-to-endtests voor Dropbox-synchronisatie (59 gevallen): koppelen en ontkoppelen; projecten, bewerkingen, binaire bestanden, hernoemingen, verplaatsingen en verwijderingen naar Dropbox sturen, inclusief een bewerking in de editor die via het wegschrijven op de achtergrond aankomt nadat het project is gesloten, zonder compileren of “sync now”; wijzigingen die in Dropbox zijn gemaakt toepassen via de webhook (verificatie-challenge en handtekeningcontrole), nieuwe projecten uit nieuwe mappen, verwijderde projectmappen; projecten met dezelfde naam; het Dropbox-dialoogvenster van de editor en “sync now” met de bijbehorende rate limit; nieuwe pogingen, rate limits en time-outs van Dropbox; accounts die worden ontkoppeld wanneer Dropbox vol is, het token weigert of is geschorst; geschorste Overleaf-accounts; en het antwoord van de webhook wanneer third-party-datastore niet draait.
Laatst gewijzigd op 2 november 2026