DROPBOX_ENABLED: "true":
- web (модуль
dropbox): привязка, диалог Dropbox в проекте и вебхук, который вызывает Dropbox. - third-party-datastore: отдельный сервис внутри пода, который обрабатывает очередь изменений для отправки в Dropbox или получения из него.
- document-updater: при включённом Dropbox он записывает изменения из редактора в MongoDB в фоновом режиме, через несколько минут после того, как все покинули проект; только после этого они попадают в Dropbox.
Настройка
1
ConfigMap
30-config.yaml (additions)
GIT_BRIDGE_ENABLED: "true" и StatefulSet git-bridge из раздела Интеграция с Git: без них в настройках учётной записи скрыт раздел синхронизации проектов.2
Secret
DROPBOX_TOKEN_CIPHER_PASSWORD шифрует токены Dropbox пользователей в MongoDB. Все реплики должны использовать одно и то же значение, а его последующее изменение вынудит всех пользователей заново привязать Dropbox.3
Создайте индексы базы данных
Один раз выполните команды создания индексов из раздела Создание индексов базы данных на первичном узле набора реплик:
4
Примените изменения и перезапустите
third-party-datastore.log существует, только если DROPBOX_ENABLED равен "true".5
Откройте вебхук для интернета
Dropbox должен иметь доступ к Затем добавьте вебхук в Dropbox App Console, как описано на странице Toolkit.
${OVERLEAF_SITE_URL}/dropbox/webhook из интернета. Если ваш ingress или балансировщик нагрузки разрешает извне только некоторые пути или сети, разрешите этот путь; это единственный путь, который вызывает Dropbox. Проверьте его снаружи кластера:Несколько реплик
Ничего дополнительного, кроме общегоDROPBOX_TOKEN_CIPHER_PASSWORD, не требуется:
- Вебхук может прийти на любую реплику. Он лишь ставит изменение в очередь в Redis.
- Каждая реплика запускает third-party-datastore, и каждая работает с общей очередью. Очередь пользователя захватывается с блокировкой в Redis, поэтому изменения конкретного пользователя в каждый момент времени отправляет или получает только одна реплика.
- document-updater каждой реплики записывает неактивные проекты в фоновом режиме. Каждый проект берётся из общего списка в Redis, поэтому записывается один раз.

