Передумови
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 розробляється у внутрішньому репозиторії, файл Якщо nodejs не встановлено, не хвилюйтеся: ту саму команду можна виконати безпосередньо за допомогою
package-lock.json дуже ймовірно розсинхронізується через певні особливості розробки. Щоб синхронізувати його, потрібно виконати наведену нижче команду (якщо у вас є локальне середовище nodejs).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, який є мінімальною версією texlive.
Розробка
Щоб не виконувати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, однак для нього потрібно встановити деякі залежності:

