이 기능은 ayaka-notes/ayakaleaf-pro에서 개발했습니다. 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는 즉시 이 주소를 호출하여 확인하므로, Overleaf가 아래 설정으로 이미 실행 중이어야 하며 인터넷에서 접근할 수 있어야 합니다(Webhook 참조). 확인을 통과하면 상태가 Enabled로 표시됩니다.
config/variables.env
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
사용자가 Dropbox 계정을 연결할 수 없는 이유는 무엇인가요?
사용자가 Dropbox 계정을 연결할 수 없는 이유는 무엇인가요?
- 프로젝트는 이름으로 Dropbox 폴더와 매칭되므로, 같은 이름의 프로젝트가 두 개 있는 사용자는 먼저 그중 하나의 이름을 변경하라는 안내를 받습니다.
- 하나의 Dropbox 계정은 하나의 Overleaf 계정에만 연결할 수 있습니다.
Dropbox 계정의 연결이 해제된 이유는 무엇인가요?
Dropbox 계정의 연결이 해제된 이유는 무엇인가요?
답변: Overleaf는 Dropbox가 토큰을 거부하는 경우(예: 사용자가 Dropbox에서 앱을 제거한 후), Dropbox 용량이 가득 찬 경우, 또는 Dropbox가 계정을 정지한 경우 Dropbox 계정의 연결을 해제합니다. 문제가 해결되면 사용자는 다시 연결할 수 있습니다.
Dropbox에서 프로젝트 폴더의 이름을 변경할 수 있나요?
Dropbox에서 프로젝트 폴더의 이름을 변경할 수 있나요?
답변: 대신 Overleaf에서 프로젝트 이름을 변경하세요. Overleaf 입장에서 Dropbox에서 폴더 이름을 변경하는 것은 프로젝트 폴더를 삭제하고 새 폴더를 만드는 것과 같으므로, 기존 프로젝트는 삭제된 것으로 표시되고 해당 파일로 새 프로젝트가 생성됩니다.

