Apps/<your Dropbox app>/, изменения в Overleaf отправляются в Dropbox, а изменения, внесённые в Dropbox, возвращаются в Overleaf.
Настройка синхронизации с Dropbox
Создайте приложение в Dropbox App Console, войдя под учётной записью Dropbox, которой будет принадлежать приложение:- Нажмите 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.
- На вкладке Permissions в разделе Files and folders отметьте
files.metadata.write,files.content.writeиfiles.content.read. Вместе с ними отмечаютсяaccount_info.readиfiles.metadata.read, снять отметку с которых нельзя. Не отмечайте другие разрешения. - Нажмите Submit на панели внизу вкладки Permissions. Без нажатия Submit разрешения не сохраняются, и Dropbox отказывается синхронизировать файлы пользователей, которые привязывают свою учётную запись.

Dropbox App Console: разрешения, которые нужно отметить и сохранить кнопкой Submit
- На вкладке Settings в разделе OAuth 2 введите
${OVERLEAF_SITE_URL}/user/dropbox/oauth/callbackв поле Redirect URIs, затем нажмите Add. Просто ввести URI недостаточно: он сохраняется только после того, как появится в списке над полем.

Dropbox App Console: введите Redirect URI и нажмите Add
- На вкладке Settings в разделе Webhooks введите
${OVERLEAF_SITE_URL}/dropbox/webhookв поле Webhook URIs, затем также нажмите Add. Dropbox сразу обращается к этому адресу для проверки, поэтому Overleaf к этому моменту уже должен работать с приведёнными ниже настройками и быть доступен из интернета (см. Webhook). После успешной проверки отображается статус Enabled.
DROPBOX_SYNC_PROXY_URL=http://10.0.0.1:10808. Это должен быть стандартный прямой HTTP/HTTPS-прокси, и он не должен использовать 127.0.0.1.
Создание индексов базы данных
Выполните это один раз, до того как пользователи привяжут свои учётные записи Dropbox. Индексы, которые использует синхронизация с Dropbox, не создаются автоматически, поэтому без них каждый поиск при синхронизации сканирует всю коллекцию. Пользователи Toolkit: выполнитеbin/mongo. Пользователи Docker Compose: выполните docker compose exec mongo mongosh sharelatex. Затем вставьте:
dropboxEntities из tools/migrations: 20220825160708_recreate_dropboxEntities удаляет коллекцию, а вместе с ней и состояние синхронизации всех пользователей.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
Почему пользователь не может привязать свою учётную запись Dropbox?
Почему пользователь не может привязать свою учётную запись Dropbox?
- Папка Dropbox, которая ещё неизвестна Overleaf, сопоставляется с проектом по имени, поэтому пользователю, у которого есть проекты с одинаковыми именами, предлагается сначала их переименовать. Имена сравниваются без учёта регистра, и архивированные проекты, а также проекты в корзине тоже учитываются.
- Учётную запись Dropbox можно привязать только к одной учётной записи Overleaf.
Почему учётная запись Dropbox была отвязана?
Почему учётная запись Dropbox была отвязана?
Можно ли переименовать папку проекта в Dropbox?
Можно ли переименовать папку проекта в Dropbox?
Почему некоторые папки проектов пронумерованы, например «Thesis (1)»?
Почему некоторые папки проектов пронумерованы, например «Thesis (1)»?
Что произойдёт, если удалить папку проекта в Dropbox?
Что произойдёт, если удалить папку проекта в Dropbox?
- Если ни у какого другого проекта нет имени этой папки, проект помечается в Overleaf как удалённый. Его файлы и история сохраняются.
- Если это имя есть у нескольких проектов, Overleaf не может определить, какому из них принадлежала папка. Он отвязывает учётную запись Dropbox и показывает уведомление с просьбой переименовать проекты. Дайте проектам разные имена, прежде чем удалять их папки в Dropbox.
- Пронумерованная папка, например «Thesis (1)», не совпадает ни с одним именем проекта, поэтому её удаление не изменяет проект в Overleaf. Нажмите sync this project now в диалоге Dropbox в редакторе, чтобы снова отправить проект в Dropbox.
Что произойдёт в Dropbox, если удалить проект в Overleaf?
Что произойдёт в Dropbox, если удалить проект в Overleaf?
Что происходит с изменениями в Dropbox, пока проект находится в архиве или в корзине?
Что происходит с изменениями в Dropbox, пока проект находится в архиве или в корзине?
Почему ссылка на Dropbox в редакторе открывает главную страницу Dropbox?
Почему ссылка на Dropbox в редакторе открывает главную страницу Dropbox?
Apps/<app folder>/<project> на dropbox.com, как в Overleaf Cloud. Если Dropbox показывает свою папку Apps под переведённым именем, например 应用 на китайском, ссылка не находит папку, и Dropbox вместо этого открывает свою главную страницу. Откройте папку проекта из переведённой папки Apps в Dropbox.Почему некоторые файлы проекта отсутствуют в Dropbox?
Почему некоторые файлы проекта отсутствуют в Dropbox?

