> ## Documentation Index
> Fetch the complete documentation index at: https://ayakaleaf-pro.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Dropbox 同期

<Info>
  この機能は [ayaka-notes/ayakaleaf-pro](https://github.com/ayaka-notes/ayakaleaf-pro) によって開発されたものです。v6.4.0 以降で導入されています。まだベータ版のため、問題があればぜひフィードバックをお寄せください。
</Info>

Dropbox 同期は、Overleaf Cloud と同様に、ユーザーのプロジェクトをその Dropbox と同期した状態に保ちます。ユーザーが Dropbox アカウントを連携すると、各プロジェクトが `Apps/<your Dropbox app>/` 内のフォルダーとして表示され、Overleaf での変更は Dropbox に送信され、Dropbox で行った変更は Overleaf に反映されます。

### Dropbox 同期のセットアップ

<Warning>
  まず [git-bridge](/ja/on-premises/configuration/overleaf-toolkit/git-integration) を有効にする必要があります。有効にしないと、アカウント設定にプロジェクト同期のセクションが表示されません。

  ```dotenv title="config/overleaf.rc" theme={null}
  GIT_BRIDGE_ENABLED=true
  ```
</Warning>

アプリを所有する Dropbox アカウントでサインインし、[Dropbox App Console](https://www.dropbox.com/developers/apps) でアプリを作成します。

1. **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** タブで開きます。
2. **Permissions** タブの **Files and folders** で、`files.metadata.write`、`files.content.write`、`files.content.read` にチェックを入れます。`account_info.read` と `files.metadata.read` は同時にチェックされ、チェックを外すことはできません。その他の権限にはチェックを入れないでください。
3. **Permissions** タブ下部のバーにある **Submit** をクリックします。**Submit をクリックしないと権限は保存されず**、アカウントを連携したユーザーのファイル同期を Dropbox が拒否します。

<Frame caption="Dropbox App Console: チェックする権限と Submit による保存">
  <img src="https://mintcdn.com/ayakaleaf-pro/34P8O6kHo91beEvQ/images/on-premises/dropbox-app-permissions.png?fit=max&auto=format&n=34P8O6kHo91beEvQ&q=85&s=8e99711b1fcf03d3d1655f65fea3a6b8" alt="" width="2302" height="1444" data-path="images/on-premises/dropbox-app-permissions.png" />
</Frame>

4. **Settings** タブの **OAuth 2** で、**Redirect URIs** に `${OVERLEAF_SITE_URL}/user/dropbox/oauth/callback` を入力し、**Add をクリックします**。URI を入力するだけでは不十分で、入力欄の上のリストに表示されて初めて保存されます。

<Frame caption="Dropbox App Console: リダイレクト URI を入力して Add をクリック">
  <img src="https://mintcdn.com/ayakaleaf-pro/34P8O6kHo91beEvQ/images/on-premises/dropbox-app-redirect-uri.png?fit=max&auto=format&n=34P8O6kHo91beEvQ&q=85&s=d980dc4dec22a90b5bf1f7e147cfc7c0" alt="" width="2788" height="1450" data-path="images/on-premises/dropbox-app-redirect-uri.png" />
</Frame>

5. **Settings** タブの **Webhooks** で、**Webhook URIs** に `${OVERLEAF_SITE_URL}/dropbox/webhook` を入力し、同様に **Add をクリックします**。Dropbox はすぐにこの URI を呼び出して確認するため、Overleaf が以下の設定で起動済みで、インターネットから到達可能である必要があります（[Webhook](#webhook) を参照）。確認に成功すると、ステータスが **Enabled** と表示されます。

**Settings** タブから **App key** と **App secret**（**Show** をクリック）をコピーし、Overleaf の環境変数ファイルに以下の設定を追加します。Webhook（手順 5）は、これらの設定で Overleaf を起動した後に追加できます。

```dotenv title="config/variables.env" wrap theme={null}
# used to encrypt the user's Dropbox refresh token.
# How to generate: `openssl rand -hex 32`
DROPBOX_TOKEN_CIPHER_PASSWORD=0123456789ABCDEFG # changed to yours

# Dropbox Sync Settings
DROPBOX_ENABLED=true
DROPBOX_APP_KEY=
DROPBOX_APP_SECRET=
# the name of your Dropbox app (step 1), which is the folder name in Apps/
DROPBOX_APP_NAME=Overleaf

# OAuth callback is: ${OVERLEAF_SITE_URL}/user/dropbox/oauth/callback
# Webhook is: ${OVERLEAF_SITE_URL}/dropbox/webhook
# (Optional) DROPBOX_SYNC_PROXY_URL=http://10.0.0.1:10808
```

<Warning>
  * リダイレクト URI と Webhook を設定する前に、`OVERLEAF_SITE_URL` が正しく設定されていることを確認してください。
  * Dropbox は、ユーザーがアカウントを連携した時点でトークンの権限を確定します。権限を Submit しても既存のトークンは変わりません。権限を Submit する前、または権限を変更する前に連携したユーザーは、Dropbox アカウントの連携を解除してから再度連携する必要があります。
  * 新しいアプリは **Development** ステータスです。**Settings** タブの **Development users** に **Only you** と表示されている場合、連携できるのはあなたの Dropbox アカウントのみです。他のユーザーが連携できるようにするには、**Enable additional users** をクリックしてください。その後、連携したユーザー数が `1 / 500` のように表示されます。**Development ステータスのアプリは最大 500 ユーザーまでです**。それ以上のユーザーに対応するには、**Apply for production** をクリックすると、Dropbox がアプリを審査します。
</Warning>

ネットワークアクセスが制限されている地域にいる場合は、Dropbox にアクセスするためにプロキシの設定が必要になることがあります。次の環境変数を設定してください: `DROPBOX_SYNC_PROXY_URL=http://10.0.0.1:10808`。プロキシは標準的な HTTP/HTTPS フォワードプロキシである必要があり、`127.0.0.1` を使用してはいけません。

### 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

<Accordion title="ユーザーが Dropbox アカウントを連携できないのはなぜですか？">
  <strong>回答：</strong>

  * プロジェクトと Dropbox フォルダーは名前で対応付けられるため、同じ名前のプロジェクトを 2 つ持っているユーザーは、まずそのうちの 1 つの名前を変更するよう求められます。
  * 1 つの Dropbox アカウントは、1 つの Overleaf アカウントにしか連携できません。
</Accordion>

<Accordion title="Dropbox アカウントの連携が解除されたのはなぜですか？">
  <strong>回答：</strong> Overleaf は、Dropbox がトークンを拒否した場合（ユーザーが Dropbox でアプリを削除した後など）、Dropbox の容量がいっぱいになった場合、または Dropbox がアカウントを停止した場合に、Dropbox アカウントの連携を解除します。問題が解決すれば、ユーザーは再度連携できます。
</Accordion>

<Accordion title="Dropbox でプロジェクトフォルダーの名前を変更できますか？">
  <strong>回答：</strong> 代わりに Overleaf でプロジェクト名を変更してください。Overleaf にとって、Dropbox でフォルダー名を変更することは、プロジェクトフォルダーを削除して新しいフォルダーを作成することと同じです。そのため、元のプロジェクトは削除済みとしてマークされ、ファイルから新しいプロジェクトが作成されます。
</Accordion>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.