> ## 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](/ko/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는 즉시 이 주소를 호출하여 확인하므로, Overleaf가 아래 설정으로 이미 실행 중이어야 하며 인터넷에서 접근할 수 있어야 합니다([Webhook](#webhook) 참조). 확인을 통과하면 상태가 **Enabled**로 표시됩니다.

**Settings** 탭에서 **App key**와 **App secret**(**Show** 클릭)을 복사한 다음 overleaf 환경 변수 파일에 다음 설정을 추가하세요. 웹훅(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와 웹훅을 구성하기 전에 `OVERLEAF_SITE_URL`이 올바르게 설정되어 있는지 확인하세요.
  * Dropbox는 사용자가 계정을 연결할 때 토큰의 권한을 고정합니다. 권한을 제출해도 기존 토큰은 변경되지 않습니다. 권한을 제출하기 전에, 또는 권한을 변경하기 전에 연결한 사용자는 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는 웹훅을 통해 Dropbox의 변경 사항을 Overleaf에 알리므로, 변경 사항이 몇 초 안에 Overleaf에 나타납니다. 웹훅은 사이트 주소인 `${OVERLEAF_SITE_URL}/dropbox/webhook`으로 전송되므로 추가 포트는 필요 없지만, **Dropbox가 인터넷에서 이 주소에 접근할 수 있어야 합니다**. App Console에서 웹훅을 추가하면 Dropbox가 즉시 확인합니다.

웹훅이 없는 경우(예: Dropbox가 접근할 수 없는 서버), Overleaf의 변경 사항은 여전히 Dropbox로 전송되지만, Dropbox의 변경 사항은 사용자가 편집기의 Dropbox 대화 상자에서 \_sync this project now\_를 클릭할 때만 반영됩니다.

### 동기화 방식

* **연결**: 사용자가 Dropbox 계정을 연결하면 사용자가 소유한 프로젝트가 Dropbox로 전송됩니다. 사용자와 공유된 프로젝트는 다음 변경 시 Dropbox에 나타납니다.
* **Overleaf에서 Dropbox로**: 새 파일, 이름 변경, 이동, 삭제, 프로젝트 이름 변경은 즉시 전송됩니다. 편집기에서 수정한 내용은 모든 사용자가 프로젝트를 떠나고 몇 분 후 Overleaf가 저장소에 저장하면 전송됩니다. 더 빨리 전송하려면 편집기의 Dropbox 대화 상자에서 \_sync this project now\_를 클릭하세요(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 폴더와 매칭되므로, 같은 이름의 프로젝트가 두 개 있는 사용자는 먼저 그중 하나의 이름을 변경하라는 안내를 받습니다.
  * 하나의 Dropbox 계정은 하나의 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.