Skip to main content
Synchronizace s Dropboxem využívá tři části každého podu Ayakaleaf Pro a všechny tři se spouštějí pouze s DROPBOX_ENABLED: "true":
  • web (modul dropbox): propojení, dialog Dropboxu v projektu a webhook, který Dropbox volá.
  • third-party-datastore: samostatná služba uvnitř podu, která zpracovává frontu změn k odeslání do Dropboxu nebo ke stažení z něj.
  • document-updater: se zapnutým Dropboxem zapisuje změny z editoru na pozadí do MongoDB, několik minut poté, co všichni projekt opustili; teprve pak jdou do Dropboxu.
Aplikaci Dropbox vytvořte a jak synchronizace funguje, si přečtěte na stránce Synchronizace s Dropboxem; tato stránka popisuje, jak to vložit do Kubernetes.

Konfigurace

1

ConfigMapa

30-config.yaml (additions)
Musí být nastaveno GIT_BRIDGE_ENABLED: "true" a StatefulSet git-bridge ze stránky Integrace s Gitem: bez nich nastavení účtu sekci synchronizace projektů skryje.
2

Secret

DROPBOX_TOKEN_CIPHER_PASSWORD šifruje tokeny Dropboxu uživatelů v MongoDB. Všechny repliky musí používat stejnou hodnotu a její pozdější změna přiměje všechny uživatele propojit Dropbox znovu.
3

Vytvořte databázové indexy

Spusťte jednou příkazy pro indexy z části Vytvoření databázových indexů, a to na primárním uzlu replica setu:
4

Aplikujte a restartujte

third-party-datastore.log existuje pouze tehdy, když je DROPBOX_ENABLED nastaveno na "true".
5

Zpřístupněte webhook z internetu

Dropbox musí dosáhnout na ${OVERLEAF_SITE_URL}/dropbox/webhook z internetu. Pokud váš ingress nebo load balancer povoluje zvenčí pouze některé cesty nebo sítě, povolte tuto; je to jediná cesta, kterou Dropbox volá. Ověřte to zvenčí clusteru:
Poté přidejte webhook v Dropbox App Console, jak je popsáno na stránce o Toolkitu.

Více replik

Kromě sdíleného DROPBOX_TOKEN_CIPHER_PASSWORD není potřeba nic dalšího:
  • Webhook může dorazit na kteroukoli repliku. Pouze zařadí změnu do fronty v Redisu.
  • Každá replika spouští third-party-datastore a každá zpracovává sdílenou frontu. Fronta uživatele se převezme se zámkem v Redisu, takže změny daného uživatele odesílá nebo stahuje v jednu chvíli pouze jedna replika.
  • Document-updater každé repliky zapisuje nečinné projekty na pozadí. Každý projekt se převezme ze sdíleného seznamu v Redisu, takže se zapíše jednou.

Otestováno na Kubernetes

Proti simulaci Dropbox API, na Kubernetes 1.37 se třemi replikami za HAProxy, procházejí naše end-to-end testy pro synchronizaci s Dropboxem (59 případů): propojení a odpojení; odesílání projektů, úprav, binárních souborů, přejmenování, přesunů a mazání do Dropboxu, včetně úpravy v editoru, která dorazí prostřednictvím zápisu na pozadí po zavření projektu, bez kompilace nebo „sync now“; aplikace změn provedených v Dropboxu přes webhook (ověřovací challenge a kontrola podpisu), nové projekty z nových složek, smazané složky projektů; projekty se stejným názvem; dialog Dropboxu v editoru a „sync now“ s jeho limitem požadavků; opakované pokusy, limity požadavků a timeouty Dropboxu; odpojení účtů, když je Dropbox plný, odmítne token nebo je pozastaven; pozastavené účty Overleafu; a odpověď webhooku, když third-party-datastore neběží.
Naposledy změněno 2. listopadu 2026