> ## 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.

# Настройка среды разработки (локально)

> Настройте среду разработки на локальном сервере или настольном компьютере.

## Предварительные требования

Overleaf — типичный проект с открытым исходным кодом на микросервисной архитектуре, все сервисы которого работают в Docker.

* Исходный код официальной Community Edition доступен на [GitHub Overleaf Official](https://github.com/overleaf/overleaf/tree).
* Исходный код Overleaf-CEP доступен на [GitHub Yu-i-i/Overleaf](https://github.com/yu-i-i/overleaf-cep).
* Overleaf Pro Edition доступна на [GitHub Ayaka-notes/overleaf-pro](https://github.com/ayaka-notes/overleaf-pro).

Для настройки среды разработки Overleaf вам понадобится мощный сервер; рекомендуется конфигурация не менее 8 ядер и 16 ГБ ОЗУ, так как одновременно потребуется запускать более 20 контейнеров.

<Info>
  Поскольку серверы с 8 и более ядрами CPU обычно стоят дорого, настоятельно рекомендуется вести разработку на локальном компьютере.
</Info>

Кроме того, мы полагаем, что как разработчик вы уже знакомы с [установкой Docker](https://docs.docker.com/engine/install/ubuntu/). Мы настоятельно рекомендуем использовать для разработки актуальную стабильную версию Ubuntu LTS (например, Ubuntu 24.04 в 2025–2026 годах) и последнюю версию Docker — это снижает вероятность неожиданных ошибок.

Итак, вам понадобятся:

* [x] Мощный сервер или настольный компьютер для разработки
* [x] Актуальная стабильная версия Ubuntu LTS (например, Ubuntu 24.04)
* [x] Среда Docker и Git

## Руководство по настройке

Здесь в качестве примера мы используем overleaf-cep, чтобы показать, как настроить среду разработки Overleaf.

<Steps>
  <Step title="Получите исходный код">
    Прежде всего клонируйте репозиторий:

    ```bash title="bash" theme={null}
    git clone https://github.com/ayaka-notes/overleaf-pro.git
    cd overleaf-pro
    ```
  </Step>

  <Step title="Синхронизируйте `package-lock.json`">
    Поскольку Overleaf разрабатывается во [внутреннем репозитории](http://github.com/overleaf/internal), файл `package-lock.json` с большой вероятностью может оказаться рассинхронизированным из-за особенностей процесса разработки. Чтобы синхронизировать его, выполните следующую команду (если у вас есть локальная среда Node.js):

    ```bash title="bash" theme={null}
    npm install --package-lock-only --ignore-scripts
    ```

    Если Node.js не установлен, не беспокойтесь: ту же команду можно выполнить напрямую через `docker`. Запускайте её <strong>из корня репозитория Overleaf:</strong>

    ```bash title="bash" theme={null}
    docker run --rm \
      -v "$(pwd)":/workspace \
      -w /workspace \
      node:22.18.0 \
      npm install --package-lock-only --ignore-scripts
    ```
  </Step>

  <Step title="Соберите образ для разработки">
    Overleaf предоставляет специальный каталог `/develop` для хранения скриптов разработки. Просто соберите сервисы:

    ```bash title="bash" theme={null}
    cd ./develop
    bin/build
    ```

    <Info>
      Если Docker не хватает оперативной памяти при параллельной сборке сервисов, создайте в этом каталоге файл `.env`, содержащий `COMPOSE_PARALLEL_LIMIT=1`.
    </Info>
  </Step>

  <Step title="Запустите все микросервисы">
    Затем запустите сервисы:

    ```bash title="bash" theme={null}
    bin/up
    ```

    После запуска сервисов откройте [http://localhost/launchpad](http://localhost/launchpad), чтобы создать первую учётную запись администратора.

    <Danger>
      Необходимо выполнить `bin/up` перед запуском команды `bin/dev`. В противном случае вы можете столкнуться с рядом проблем с правами доступа.
    </Danger>
  </Step>
</Steps>

<Info>
  По умолчанию права администратора недоступны. Добавьте следующую строку в `develop/dev.env`, после чего вы получите доступ к панели администратора.

  ```text theme={null}
  ADMIN_PRIVILEGE_AVAILABLE=true
  ```
</Info>

### TeX Live

Для компиляции PDF необходимо собрать образ TeX Live, который будет выполнять компиляцию внутри Docker:

```text theme={null}
docker build texlive -t texlive-full
```

Для компиляции на хосте macOS может потребоваться переопределить путь к сокету Docker, создав в этом каталоге файл `.env`, содержащий `DOCKER_SOCKET_PATH=/var/run/docker.sock.raw`

Также вы можете использовать [ayaka-notes/texlive-full](https://github.com/ayaka-notes/texlive-full); можно взять тег base — это минимальная версия TeX Live.

### Разработка

Чтобы не выполнять `bin/build && bin/up` после каждого изменения кода, можно запустить Overleaf Community Edition в *режиме разработки*, в котором сервисы автоматически обновляются при изменении кода.

Для этого используйте прилагаемый скрипт `bin/dev`:

```text theme={null}
bin/dev
```

Он запустит все сервисы с помощью `node --watch`, который автоматически отслеживает код и при необходимости перезапускает сервисы.

Для повышения производительности можно запустить в режиме разработки только часть сервисов, передав скрипту `bin/dev` их список через пробел:

```text theme={null}
bin/dev [service1] [service2] ... [serviceN]
```

<Info>
  Запуск сервиса `web` в *режиме разработки* обновляет сервис `web` только при изменении бэкенд-кода. Чтобы автоматически обновлялся и фронтенд-код, также запустите в *режиме разработки* сервис `webpack`.
</Info>

Если сервисы не указаны, все сервисы будут запущены в режиме разработки.

### Отладка

При запуске в *режиме разработки* большинство сервисов открывают отладочный порт, к которому можно подключить отладчик, например инспектор в Chrome Dev Tools или отладчик, встроенный в IDE. В следующей таблице показан порт, открытый на **хост-машине** для каждого сервиса:

| Сервис | Порт |
| - | - |
| `web` | 9229 |
| `clsi` | 9230 |
| `chat` | 9231 |
| `contacts` | 9232 |
| `docstore` | 9233 |
| `document-updater` | 9234 |
| `filestore` | 9235 |
| `notifications` | 9236 |
| `real-time` | 9237 |
| `references` | 9238 |
| `history-v1` | 9239 |
| `project-history` | 9240 |
| `linked-url-proxy` | 9241 |

Чтобы подключиться к сервису с помощью *удалённой отладки* Chrome, перейдите на chrome://inspect/ и убедитесь, что флажок *Discover network targets* установлен. Затем нажмите *Configure...* и добавьте запись `localhost:[service port]` для каждого сервиса, к которому хотите подключить отладчик.

После добавления записи сервис появится как *Remote Target*, который можно инспектировать и отлаживать.

### Журналирование

В среде разработки Overleaf предоставляет скрипт `bin/logs`, однако для него нужно установить некоторые зависимости:

```bash theme={null}
sudo npm install -g bunyan
# Or sudo apt install node-bunyan 
```

Или можно выполнить напрямую:

```text theme={null}
docker compose logs -f [service name]
```

### Другие инструменты

Завершив все шаги, вы можете обратиться к [следующему разделу](/ru/dev/environment/setup-develop-tools), чтобы добавить инструменты отладки в вашу среду разработки Overleaf.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.