この機能は ayaka-notes/ayakaleaf-pro によって開発されたものです。v6.3.1 でアーリープレビューとして導入され、v6.4.0 で正式リリースされる予定です。そのため、設定や動作が今後変更される可能性があります。問題があればぜひフィードバックをお寄せください。
Apps/<your Dropbox app>/ 内のフォルダーとして表示され、Overleaf での変更は Dropbox に送信され、Dropbox で行った変更は Overleaf に反映されます。
Dropbox 同期のセットアップ
アプリを所有する Dropbox アカウントでサインインし、Dropbox App Console でアプリを作成します。- Create app をクリックし、ページに入力します。
- 1. Choose an API: Scoped access を選択します。
- 2. Choose the type of access you need: Full Dropbox ではなく App folder を選択します。Overleaf はアプリのフォルダー内でのみ同期を行います。
- 3. Name your app: 名前(例:
Overleaf)を入力します。名前は Dropbox 上で一意である必要があります。各ユーザーのプロジェクトはその Dropbox 内のApps/<name of your app>/に表示され、この名前が後述のDROPBOX_APP_NAMEになります。 - Create app をクリックします。アプリが Settings タブで開きます。
- Permissions タブの Files and folders で、
files.metadata.write、files.content.write、files.content.readにチェックを入れます。account_info.readとfiles.metadata.readは同時にチェックされ、チェックを外すことはできません。その他の権限にはチェックを入れないでください。 - Permissions タブ下部のバーにある Submit をクリックします。Submit をクリックしないと権限は保存されず、アカウントを連携したユーザーのファイル同期を Dropbox が拒否します。

Dropbox App Console: チェックする権限と Submit による保存
- Settings タブの OAuth 2 で、Redirect URIs に
${OVERLEAF_SITE_URL}/user/dropbox/oauth/callbackを入力し、Add をクリックします。URI を入力するだけでは不十分で、入力欄の上のリストに表示されて初めて保存されます。

Dropbox App Console: リダイレクト URI を入力して Add をクリック
- Settings タブの Webhooks で、Webhook URIs に
${OVERLEAF_SITE_URL}/dropbox/webhookを入力し、同様に Add をクリックします。Dropbox はすぐにこの URI を呼び出して確認するため、Overleaf が以下の設定で起動済みで、インターネットから到達可能である必要があります(Webhook を参照)。確認に成功すると、ステータスが Enabled と表示されます。
config/variables.env
DROPBOX_SYNC_PROXY_URL=http://10.0.0.1:10808。プロキシは標準的な HTTP/HTTPS フォワードプロキシである必要があり、127.0.0.1 を使用してはいけません。
データベースインデックスの作成
ユーザーが Dropbox アカウントを連携する前に、これを一度実行してください。Dropbox 同期が使用するインデックスは自動的には作成されないため、インデックスがないと同期のたびにコレクション全体がスキャンされます。 Toolkit を使用している場合はbin/mongo を実行します。Docker Compose を使用している場合は docker compose exec mongo mongosh sharelatex を実行します。その後、次の内容を貼り付けてください:
代わりに
tools/migrations の dropboxEntities マイグレーションを実行しないでください。20220825160708_recreate_dropboxEntities はコレクションを削除するため、すべてのユーザーの同期状態が失われます。Webhook
Dropbox は Webhook を使って Dropbox での変更を Overleaf に通知するため、変更は数秒以内に Overleaf に反映されます。Webhook はサイトのアドレス${OVERLEAF_SITE_URL}/dropbox/webhook に送られるので追加のポートは不要ですが、Dropbox がインターネットからこのアドレスに到達できる必要があります。App Console で Webhook を追加すると、Dropbox はすぐにそれを確認します。
Webhook がない場合(たとえば Dropbox から到達できないサーバーの場合)でも、Overleaf での変更は Dropbox に送信されます。ただし、Dropbox での変更が Overleaf に反映されるのは、ユーザーがエディターの Dropbox ダイアログで sync this project now をクリックしたときのみです。
同期の仕組み
- 連携: ユーザーが Dropbox アカウントを連携すると、そのユーザーが所有するプロジェクトが Dropbox に送信されます。そのユーザーと共有されているプロジェクトは、次に変更があったときに Dropbox に表示されます。
- Overleaf から Dropbox へ: 新しいファイル、名前の変更、移動、削除、プロジェクト名の変更はすぐに送信されます。エディターでの編集は、全員がプロジェクトを離れてから数分後に Overleaf がストレージに保存した時点で送信されます。より早く送信するには、エディターの Dropbox ダイアログで sync this project now をクリックしてください(1 分に 1 回まで)。
- Dropbox から Overleaf へ: プロジェクトフォルダー内の新規ファイルや変更されたファイル、新しいフォルダー、削除はプロジェクトに反映されます。アプリフォルダーの最上位に作成した新しいフォルダーは、新しいプロジェクトになります。Dropbox でプロジェクトフォルダーを削除すると、Overleaf でそのプロジェクトは削除済みとしてマークされます。
- コンフリクト: 同じファイルが両方の場所で同時に変更された場合は、最後の変更が優先されます。Dropbox がもう一方のバージョンを conflicted copy として保持する場合があります。
- 共同編集者: Dropbox を連携した共同編集者は、自分と共有されているプロジェクトを受け取ります。閲覧のみの共同編集者とレビュアーもプロジェクトを受け取りますが、Dropbox での変更は Overleaf に同期されません。
- 無視されるファイル: ビルド出力(
.aux、.logなど)、.DS_Store、Python の仮想環境など、Overleaf が同期しないファイルは Dropbox にのみ残ります。
Q&A
ユーザーが Dropbox アカウントを連携できないのはなぜですか?
ユーザーが Dropbox アカウントを連携できないのはなぜですか?
- Overleaf がまだ認識していない Dropbox フォルダーは名前でプロジェクトと対応付けられるため、同じ名前のプロジェクトを持っているユーザーは、まずそれらの名前を変更するよう求められます。名前は大文字と小文字を区別せずに比較され、アーカイブ済みのプロジェクトやゴミ箱内のプロジェクトも対象になります。
- 1 つの Dropbox アカウントは、1 つの Overleaf アカウントにしか連携できません。
Dropbox アカウントの連携が解除されたのはなぜですか?
Dropbox アカウントの連携が解除されたのはなぜですか?
回答: Overleaf は、Dropbox がトークンを拒否した場合(ユーザーが Dropbox でアプリを削除した後など)、Dropbox の容量がいっぱいになった場合、または Dropbox がアカウントを停止した場合に、Dropbox アカウントの連携を解除します。ユーザーがアカウントを再度連携するまで、プロジェクト一覧の通知で、これらのうちどれが起きたかが表示されます。問題が解決すれば、ユーザーは再度連携できます。
Dropbox でプロジェクトフォルダーの名前を変更できますか?
Dropbox でプロジェクトフォルダーの名前を変更できますか?
回答: 代わりに Overleaf でプロジェクト名を変更してください。Dropbox 内のフォルダー名も変更されます。Overleaf にとって、Dropbox でフォルダー名を変更することは、プロジェクトフォルダーを削除して新しいフォルダーを作成することと同じです。そのため、元のプロジェクトは削除済みとしてマークされ、ファイルから新しいプロジェクトが作成されます。
「Thesis (1)」のように番号が付いたプロジェクトフォルダーがあるのはなぜですか?
「Thesis (1)」のように番号が付いたプロジェクトフォルダーがあるのはなぜですか?
回答: 2 つのプロジェクトが同じ名前を持つ場合でも、各プロジェクトには専用のフォルダーがあります。Dropbox は同じ名前のフォルダーを 2 つ保持できないため、後から作成されたフォルダーに番号を付けます。番号は、どちらのプロジェクトが古いかではなく、その時点で Dropbox 内でどの名前が空いていたかによって決まります。Overleaf は各プロジェクトのフォルダーを把握しているため、同じ名前を持つ別のプロジェクトのフォルダーに変更が送られることはありません。名前がすでに使われているプロジェクトをアップロードした場合は、Overleaf でも「Thesis (1)」のように番号付きの名前になります。
Dropbox でプロジェクトフォルダーを削除するとどうなりますか?
Dropbox でプロジェクトフォルダーを削除するとどうなりますか?
- そのフォルダーの名前を持つプロジェクトがほかにない場合、そのプロジェクトは Overleaf で削除済みとしてマークされます。ファイルと履歴は保持されます。
- その名前を持つプロジェクトが複数ある場合、Overleaf はフォルダーがどのプロジェクトのものかを判別できません。Dropbox アカウントの連携を解除し、プロジェクト名の変更を求める通知を表示します。Dropbox でフォルダーを削除する前に、プロジェクトに異なる名前を付けてください。
- 「Thesis (1)」のような番号付きフォルダーはどのプロジェクト名とも一致しないため、削除しても Overleaf のプロジェクトは変わりません。プロジェクトを再度 Dropbox に送信するには、エディターの Dropbox ダイアログで sync this project now をクリックしてください。
Overleaf でプロジェクトを削除すると、Dropbox ではどうなりますか?
Overleaf でプロジェクトを削除すると、Dropbox ではどうなりますか?
回答: 何も起こりません。フォルダーは Dropbox に残ります。不要になった場合は Dropbox でフォルダーを削除してください。
プロジェクトがアーカイブ済みまたはゴミ箱内にある間に Dropbox で行った変更はどうなりますか?
プロジェクトがアーカイブ済みまたはゴミ箱内にある間に Dropbox で行った変更はどうなりますか?
回答: 変更はプロジェクトに反映されず、プロジェクトを復元しても取り込まれません。復元後、Overleaf はその間に Dropbox で変更されたファイルについて、自身の変更を送信しなくなるため、両者の内容が異なる状態になります。そのようなファイルを再び同期させるには、Dropbox でもう一度保存してください。すると Overleaf は Dropbox のバージョンを採用します。復元後に Overleaf でそのファイルに加えた変更は置き換えられますが、プロジェクト履歴には残ります。Dropbox で変更する前にプロジェクトを復元してください。
エディターの Dropbox リンクを開くと Dropbox のホームページが表示されるのはなぜですか?
エディターの Dropbox リンクを開くと Dropbox のホームページが表示されるのはなぜですか?
回答: このリンクは、Overleaf Cloud と同様に dropbox.com 上の
Apps/<app folder>/<project> を指しています。Dropbox が Apps フォルダーを翻訳された名前(たとえば中国語の 应用)で表示している場合、リンクはフォルダーを見つけられず、代わりに Dropbox のホームページが開きます。Dropbox で翻訳された Apps フォルダーからプロジェクトフォルダーを開いてください。プロジェクトの一部のファイルが Dropbox にないのはなぜですか?
プロジェクトの一部のファイルが Dropbox にないのはなぜですか?
回答: 同期サービスが動作していなかった間(たとえば再起動中)に行われた変更は、後から Dropbox に送信されません。エディターの Dropbox ダイアログで sync this project now をクリックすると、プロジェクト全体が再送信されます。

