> ## 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](/uk/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)). Після успішної перевірки його стан зміниться на **Enabled**.

Скопіюйте **App key** та **App secret** (натисніть **Show**) на вкладці **Settings**, а потім додайте наведені нижче налаштування до файлів змінних середовища 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>
  * Перш ніж налаштовувати redirect URI та вебхук, переконайтеся, що `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 через вебхук, тож вони з'являються в Overleaf за лічені секунди. Вебхук надходить на адресу вашого сайту, `${OVERLEAF_SITE_URL}/dropbox/webhook`, додатковий порт не потрібен, але **Dropbox має бути здатен звернутися до нього з інтернету**. Коли ви додаєте його в App Console, Dropbox одразу його перевіряє.

Без вебхука, наприклад на сервері, до якого 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.