Skip to main content
Synchronizacja z Dropbox korzysta z trzech części każdego poda Ayakaleaf Pro, a wszystkie trzy uruchamiają się tylko przy DROPBOX_ENABLED: "true":
  • web (moduł dropbox): łączenie konta, okno dialogowe Dropbox projektu oraz webhook wywoływany przez Dropbox.
  • third-party-datastore: osobna usługa wewnątrz poda, która przetwarza kolejkę zmian do wysłania do Dropbox lub pobrania z niego.
  • document-updater: przy włączonym Dropbox zapisuje w tle zmiany z edytora do MongoDB kilka minut po tym, jak wszyscy opuścili projekt; dopiero wtedy trafiają one do Dropbox.
Utwórz aplikację Dropbox i przeczytaj, jak działa synchronizacja, w Synchronizacja z Dropbox; ta strona opisuje, jak umieścić to w Kubernetes.

Konfiguracja

1

ConfigMap

30-config.yaml (additions)
GIT_BRIDGE_ENABLED: "true" oraz StatefulSet git-bridge z Integracja z Git muszą być skonfigurowane: bez nich ustawienia konta ukrywają sekcję synchronizacji projektów.
2

Secret

DROPBOX_TOKEN_CIPHER_PASSWORD szyfruje tokeny Dropbox użytkowników w MongoDB. Każda replika musi używać tej samej wartości, a późniejsza jej zmiana zmusza każdego użytkownika do ponownego połączenia Dropbox.
3

Utwórz indeksy bazy danych

Uruchom jednokrotnie polecenia tworzenia indeksów z Utwórz indeksy bazy danych na węźle primary zestawu replik:
4

Zastosuj i zrestartuj

third-party-datastore.log istnieje tylko wtedy, gdy DROPBOX_ENABLED ma wartość "true".
5

Udostępnij webhook w internecie

Dropbox musi mieć dostęp do ${OVERLEAF_SITE_URL}/dropbox/webhook z internetu. Jeśli Twój ingress lub load balancer dopuszcza z zewnątrz tylko niektóre ścieżki lub sieci, zezwól na tę; to jedyna ścieżka wywoływana przez Dropbox. Sprawdź ją spoza klastra:
Następnie dodaj webhook w Dropbox App Console zgodnie z opisem na stronie Toolkit.

Kilka replik

Poza współdzielonym DROPBOX_TOKEN_CIPHER_PASSWORD nic dodatkowego:
  • Webhook może trafić do dowolnej repliki. Jedynie umieszcza zmianę w kolejce w Redis.
  • Każda replika uruchamia third-party-datastore i każda przetwarza współdzieloną kolejkę. Kolejka użytkownika jest pobierana z blokadą w Redis, więc tylko jedna replika naraz wysyła lub pobiera zmiany danego użytkownika.
  • document-updater każdej repliki zapisuje w tle nieaktywne projekty. Każdy projekt jest pobierany ze współdzielonej listy w Redis, więc jest zapisywany tylko raz.

Przetestowano na Kubernetes

Wobec atrapy API Dropbox, na Kubernetes 1.37 z trzema replikami za HAProxy, nasze testy end-to-end dla synchronizacji z Dropbox przechodzą pomyślnie (59 przypadków): łączenie i rozłączanie; wysyłanie do Dropbox projektów, edycji, plików binarnych, zmian nazw, przeniesień i usunięć, w tym edycji z edytora, która dociera przez zapis w tle po zamknięciu projektu, bez kompilacji ani „sync now”; stosowanie zmian wprowadzonych w Dropbox przez webhook (wyzwanie weryfikacyjne i sprawdzenie podpisu), nowe projekty z nowych folderów, usunięte foldery projektów; projekty o tej samej nazwie; okno dialogowe Dropbox w edytorze i „sync now” z limitem żądań; ponowienia, limity żądań i przekroczenia czasu Dropbox; konta rozłączane, gdy Dropbox jest pełny, odrzuca token lub jest zawieszony; zawieszone konta Overleaf; oraz odpowiedź webhooka, gdy third-party-datastore nie działa.
Ostatnia modyfikacja 2 listopada 2026