Skip to main content
Dropbox 同期は、各 Ayakaleaf Pro Pod の 3 つの部分を使用します。3 つとも DROPBOX_ENABLED: "true" の場合にのみ起動します。
  • web(dropbox モジュール):リンク、プロジェクトの Dropbox ダイアログ、Dropbox が呼び出す Webhook。
  • third-party-datastore:Pod 内の独立したサービスで、Dropbox に送信する変更や Dropbox から取得する変更のキューを処理します。
  • document-updater:Dropbox が有効な場合、全員がプロジェクトを離れてから数分後に、エディターでの変更をバックグラウンドで MongoDB に書き込みます。その時点で初めて変更が Dropbox に送られます。
Dropbox アプリの作成方法と同期の仕組みは Dropbox 同期 を参照してください。このページでは、それを Kubernetes に設定する方法を説明します。

設定

1

ConfigMap

30-config.yaml (additions)
GIT_BRIDGE_ENABLED: "true" と、Git 連携 の git-bridge StatefulSet が用意されている必要があります。これらがないと、アカウント設定にプロジェクト同期のセクションが表示されません。
2

Secret

DROPBOX_TOKEN_CIPHER_PASSWORD は、MongoDB 内のユーザーの Dropbox トークンを暗号化します。すべてのレプリカで同じ値を使用する必要があり、後から変更するとすべてのユーザーが Dropbox を再リンクすることになります。
3

データベースのインデックスを作成する

データベースのインデックスを作成する のインデックス作成コマンドを、レプリカセットのプライマリで 1 回実行します。
4

適用して再起動する

third-party-datastore.log は、DROPBOX_ENABLED が "true" の場合にのみ存在します。
5

Webhook をインターネットに公開する

Dropbox はインターネットから ${OVERLEAF_SITE_URL}/dropbox/webhook に到達できる必要があります。Ingress やロードバランサーが外部から一部のパスやネットワークしか許可していない場合は、このパスを許可してください。Dropbox が呼び出すパスはこれだけです。クラスターの外部から確認します。
その後、Toolkit のページの説明に従って Dropbox App Console で Webhook を追加します。

複数のレプリカ

共有の DROPBOX_TOKEN_CIPHER_PASSWORD 以外に追加の作業は不要です。
  • Webhook はどのレプリカに届いても構いません。変更を Redis のキューに入れるだけです。
  • すべてのレプリカが third-party-datastore を実行し、それぞれが共有キューを処理します。ユーザーのキューは Redis のロックで取得されるため、特定のユーザーの変更を送信または取得するのは一度に 1 つのレプリカだけです。
  • すべてのレプリカの document-updater が、アイドル状態のプロジェクトをバックグラウンドで書き込みます。各プロジェクトは Redis の共有リストから取り出されるため、書き込みは 1 回だけです。

Kubernetes でのテスト結果

Dropbox API のモックに対して、Kubernetes 1.37 上で HAProxy の背後に 3 つのレプリカを配置した構成で、Dropbox 同期のエンドツーエンドテストに合格しました(59 ケース)。対象は、リンクとリンク解除、プロジェクト・編集・バイナリファイル・名前の変更・移動・削除の Dropbox への送信(プロジェクトを閉じた後のバックグラウンド書き込みで届くエディターでの編集を、コンパイルや “sync now” なしで送信することを含む)、Webhook(検証チャレンジと署名チェック)を通じた Dropbox での変更の適用、新しいフォルダーからの新規プロジェクト、削除されたプロジェクトフォルダー、同じ名前のプロジェクト、エディターの Dropbox ダイアログとレート制限付きの “sync now”、Dropbox のリトライ・レート制限・タイムアウト、Dropbox の容量不足・トークンの拒否・アカウント停止時のアカウントのリンク解除、停止された Overleaf アカウント、そして third-party-datastore が停止しているときの Webhook の応答です。
最終更新日 2026年11月2日