Предварительные требования
Overleaf — типичный проект с открытым исходным кодом на микросервисной архитектуре, все сервисы которого работают в Docker.- Исходный код официальной Community Edition доступен на GitHub Overleaf Official.
- Исходный код Overleaf-CEP доступен на GitHub Yu-i-i/Overleaf.
- Overleaf Pro Edition доступна на GitHub Ayaka-notes/overleaf-pro.
Поскольку серверы с 8 и более ядрами CPU обычно стоят дорого, настоятельно рекомендуется вести разработку на локальном компьютере.
- Мощный сервер или настольный компьютер для разработки
- Актуальная стабильная версия Ubuntu LTS (например, Ubuntu 24.04)
- Среда Docker и Git
Руководство по настройке
Здесь в качестве примера мы используем overleaf-cep, чтобы показать, как настроить среду разработки Overleaf.1
Получите исходный код
Прежде всего клонируйте репозиторий:
bash
2
Синхронизируйте package-lock.json
Поскольку Overleaf разрабатывается во внутреннем репозитории, файл Если Node.js не установлен, не беспокойтесь: ту же команду можно выполнить напрямую через
package-lock.json с большой вероятностью может оказаться рассинхронизированным из-за особенностей процесса разработки. Чтобы синхронизировать его, выполните следующую команду (если у вас есть локальная среда Node.js):bash
docker. Запускайте её из корня репозитория Overleaf:bash
3
Соберите образ для разработки
Overleaf предоставляет специальный каталог
/develop для хранения скриптов разработки. Просто соберите сервисы:bash
Если Docker не хватает оперативной памяти при параллельной сборке сервисов, создайте в этом каталоге файл
.env, содержащий COMPOSE_PARALLEL_LIMIT=1.4
Запустите все микросервисы
Затем запустите сервисы:После запуска сервисов откройте http://localhost/launchpad, чтобы создать первую учётную запись администратора.
bash
Необходимо выполнить
bin/up перед запуском команды bin/dev. В противном случае вы можете столкнуться с рядом проблем с правами доступа.По умолчанию права администратора недоступны. Добавьте следующую строку в
develop/dev.env, после чего вы получите доступ к панели администратора.TeX Live
Для компиляции PDF необходимо собрать образ TeX Live, который будет выполнять компиляцию внутри Docker:.env, содержащий DOCKER_SOCKET_PATH=/var/run/docker.sock.raw
Также вы можете использовать ayaka-notes/texlive-full; можно взять тег base — это минимальная версия TeX Live.
Разработка
Чтобы не выполнятьbin/build && bin/up после каждого изменения кода, можно запустить Overleaf Community Edition в режиме разработки, в котором сервисы автоматически обновляются при изменении кода.
Для этого используйте прилагаемый скрипт bin/dev:
node --watch, который автоматически отслеживает код и при необходимости перезапускает сервисы.
Для повышения производительности можно запустить в режиме разработки только часть сервисов, передав скрипту bin/dev их список через пробел:
Запуск сервиса
web в режиме разработки обновляет сервис web только при изменении бэкенд-кода. Чтобы автоматически обновлялся и фронтенд-код, также запустите в режиме разработки сервис webpack.Отладка
При запуске в режиме разработки большинство сервисов открывают отладочный порт, к которому можно подключить отладчик, например инспектор в Chrome Dev Tools или отладчик, встроенный в IDE. В следующей таблице показан порт, открытый на хост-машине для каждого сервиса:
Чтобы подключиться к сервису с помощью удалённой отладки Chrome, перейдите на chrome://inspect/ и убедитесь, что флажок Discover network targets установлен. Затем нажмите Configure… и добавьте запись
localhost:[service port] для каждого сервиса, к которому хотите подключить отладчик.
После добавления записи сервис появится как Remote Target, который можно инспектировать и отлаживать.
Журналирование
В среде разработки Overleaf предоставляет скриптbin/logs, однако для него нужно установить некоторые зависимости:

