> ## 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 поддерживает проекты пользователя в синхронизированном состоянии с его Dropbox, как в Overleaf Cloud: после того как пользователь привяжет свою учётную запись Dropbox, каждый его проект появляется в виде папки в `Apps/<your Dropbox app>/`, изменения в Overleaf отправляются в Dropbox, а изменения, внесённые в Dropbox, возвращаются в Overleaf.

### Настройка синхронизации с Dropbox

<Warning>
  Сначала необходимо включить [git-bridge](/ru/on-premises/configuration/overleaf-toolkit/git-integration): без него раздел синхронизации проектов в настройках учётной записи скрыт.

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

Создайте приложение в [Dropbox App Console](https://www.dropbox.com/developers/apps), войдя под учётной записью Dropbox, которой будет принадлежать приложение:

1. Нажмите **Create app**, затем заполните страницу:
   * **1. Choose an API**: выберите **Scoped access**.
   * **2. Choose the type of access you need**: выберите **App folder**, а не **Full Dropbox**. Overleaf синхронизирует только содержимое папки приложения.
   * **3. Name your app**: введите имя, например `Overleaf`. Оно должно быть уникальным в Dropbox. Проекты каждого пользователя появляются в папке `Apps/<name of your app>/` в его Dropbox, и именно это имя указывается ниже в `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. Нажмите **Submit** на панели внизу вкладки **Permissions**. **Без нажатия 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** введите `${OVERLEAF_SITE_URL}/user/dropbox/oauth/callback` в поле **Redirect URIs**, затем **нажмите Add**. Просто ввести URI недостаточно: он сохраняется только после того, как появится в списке над полем.

<Frame caption="Dropbox App Console: введите Redirect 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** введите `${OVERLEAF_SITE_URL}/dropbox/webhook` в поле **Webhook URIs**, затем также **нажмите Add**. Dropbox сразу обращается к этому адресу для проверки, поэтому Overleaf к этому моменту уже должен работать с приведёнными ниже настройками и быть доступен из интернета (см. [Webhook](#webhook)). После успешной проверки отображается статус **Enabled**.

Скопируйте **App key** и **App secret** (нажмите **Show**) на вкладке **Settings**, затем добавьте следующие настройки в файлы переменных окружения 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>
  * Перед настройкой Redirect URI и webhook убедитесь, что `OVERLEAF_SITE_URL` задан правильно.
  * Dropbox фиксирует разрешения токена в момент привязки учётной записи пользователем: отправка разрешений не изменяет уже выданные токены. Пользователям, которые привязали учётную запись до отправки разрешений или до их изменения, необходимо отвязать и заново привязать свою учётную запись Dropbox.
  * Новое приложение находится в статусе **Development**. Если в поле **Development users** на вкладке **Settings** указано **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 сообщает Overleaf об изменениях в Dropbox через webhook, поэтому они появляются в Overleaf в течение нескольких секунд. Webhook направляется на адрес вашего сайта, `${OVERLEAF_SITE_URL}/dropbox/webhook`, дополнительный порт не нужен, но **Dropbox должен иметь к нему доступ из интернета**. Когда вы добавляете его в App Console, Dropbox сразу же его проверяет.

Без webhook, например на сервере, недоступном для Dropbox, изменения в Overleaf по-прежнему отправляются в Dropbox, но изменения в Dropbox возвращаются только тогда, когда пользователь нажимает *sync this project now* в диалоге Dropbox в редакторе.

### Как работает синхронизация

* **Привязка**: когда пользователь привязывает свою учётную запись Dropbox, принадлежащие ему проекты отправляются в Dropbox. Проекты, к которым ему предоставлен доступ, появляются в Dropbox при их следующем изменении.
* **Из Overleaf в Dropbox**: новые файлы, переименования, перемещения, удаления и переименования проектов отправляются сразу. Правки в редакторе отправляются после того, как Overleaf сохранит их в своё хранилище, через несколько минут после того, как все покинут проект. Чтобы отправить их раньше, нажмите *sync this project now* в диалоге Dropbox в редакторе (не чаще раза в минуту).
* **Из Dropbox в Overleaf**: новые и изменённые файлы, новые папки и удаления в папке проекта применяются к проекту. Новая папка на верхнем уровне папки приложения становится новым проектом. Удаление папки проекта в Dropbox помечает проект как удалённый в Overleaf.
* **Конфликты**: если файл одновременно изменяется в обоих местах, сохраняется последнее изменение. Dropbox может сохранить другую версию как *conflicted copy*.
* **Соавторы**: соавторы, которые привязали свой Dropbox, получают проекты, к которым им предоставлен доступ. Пользователи с правами только на просмотр и рецензенты получают проект, но их изменения в Dropbox не синхронизируются обратно в Overleaf.
* **Игнорируемые файлы**: файлы, которые Overleaf не синхронизирует, например результаты сборки (`.aux`, `.log`, …), `.DS_Store` или виртуальные окружения Python, остаются только в 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.