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

# Menyiapkan Lingkungan Pengembangan (Lokal)

> Siapkan lingkungan pengembangan Anda dengan server lokal atau desktop Anda.

## Prasyarat

Overleaf adalah proyek open source khas dengan arsitektur microservice, di mana semua layanan berjalan di Docker.

* Kode sumber resmi Community Edition tersedia di [GitHub Overleaf Official](https://github.com/overleaf/overleaf/tree).
* Kode sumber Overleaf-CEP tersedia di [GitHub Yu-i-i/Overleaf](https://github.com/yu-i-i/overleaf-cep).
* Overleaf Pro Edition tersedia di [GitHub Ayaka-notes/overleaf-pro](https://github.com/ayaka-notes/overleaf-pro).

Untuk menyiapkan lingkungan pengembangan Overleaf, Anda memerlukan server yang bertenaga; konfigurasi minimal 8 core dan RAM 16GB disarankan, karena Anda perlu menjalankan lebih dari 20 kontainer secara bersamaan.

<Info>
  Karena server dengan 8 core CPU atau lebih biasanya mahal, sangat disarankan untuk menggunakan komputer lokal Anda untuk pengembangan.
</Info>

Selain itu, sebagai pengembang, kami yakin Anda sudah familier dengan [instalasi Docker](https://docs.docker.com/engine/install/ubuntu/). Kami sangat menyarankan penggunaan Ubuntu LTS yang terbaru dan stabil (misalnya Ubuntu 24.04 pada 2025–2026) serta Docker versi terbaru untuk pengembangan, karena hal ini mengurangi kemungkinan menemui error yang tidak terduga.

Singkatnya, Anda akan membutuhkan:

* [x] Server/desktop yang bertenaga untuk pengembangan
* [x] Ubuntu LTS yang terbaru dan stabil (misalnya Ubuntu 24.04)
* [x] Lingkungan Docker dan Git

## Tutorial Konfigurasi

Di sini, kami akan menggunakan overleaf-cep sebagai contoh untuk mendemonstrasikan cara mengonfigurasi lingkungan pengembangan Overleaf.

<Steps>
  <Step title="Tarik Kode Sumber">
    Pertama-tama, mari kita clone repositorinya:

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

  <Step title="Sinkronkan `package-lock.json`">
    Karena Overleaf dikembangkan di [repositori internal](http://github.com/overleaf/internal), file `package-lock.json` sangat mungkin tidak sinkron akibat beberapa masalah pengembangan. Kita perlu menjalankan perintah berikut untuk menyinkronkannya. (jika Anda memiliki lingkungan nodejs lokal)

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

    Jika Anda belum menginstal nodejs, jangan khawatir, Anda dapat langsung menggunakan `docker` untuk menjalankan perintah yang sama. Jalankan <strong>dari root repositori 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="Build Image Pengembangan">
    Overleaf menyediakan direktori khusus `/develop` untuk menyimpan skrip pengembangan. Cukup build layanannya:

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

    <Info>
      Jika Docker kehabisan RAM saat mem-build layanan secara paralel, buat file `.env` di direktori ini yang berisi `COMPOSE_PARALLEL_LIMIT=1`.
    </Info>
  </Step>

  <Step title="Jalankan Semua Microservice">
    Kemudian jalankan layanannya:

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

    Setelah layanan berjalan, buka [http://localhost/launchpad](http://localhost/launchpad) untuk membuat akun admin pertama.

    <Danger>
      Anda harus menjalankan `bin/up` sebelum menjalankan perintah `bin/dev`. Jika tidak, Anda mungkin akan mengalami serangkaian masalah izin.
    </Danger>
  </Step>
</Steps>

<Info>
  Secara default, hak akses admin tidak tersedia. Anda perlu menambahkan ini ke `develop/dev.env`. Setelah itu, Anda dapat mengakses panel Admin.

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

### TeX Live

Mengompilasi PDF memerlukan build image TeX Live untuk menangani kompilasi di dalam Docker:

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

Untuk mengompilasi di host macOS, Anda mungkin perlu menimpa path ke socket Docker dengan membuat file `.env` di direktori ini, yang berisi `DOCKER_SOCKET_PATH=/var/run/docker.sock.raw`

Anda juga dipersilakan menggunakan [ayaka-notes/texlive-full](https://github.com/ayaka-notes/texlive-full), tetapi Anda dapat menggunakan tag base, yang merupakan versi minimum dari texlive.

### Pengembangan

Agar tidak perlu menjalankan `bin/build && bin/up` setiap kali kode berubah, Anda dapat menjalankan Overleaf Community Edition dalam *mode pengembangan*, di mana layanan akan diperbarui secara otomatis saat kode berubah.

Untuk melakukannya, gunakan skrip `bin/dev` yang disertakan:

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

Ini akan menjalankan semua layanan menggunakan `node --watch`, yang akan memantau kode secara otomatis dan memulai ulang layanan bila diperlukan.

Untuk meningkatkan performa, Anda dapat menjalankan hanya sebagian layanan dalam mode pengembangan dengan memberikan daftar yang dipisahkan spasi ke skrip `bin/dev`:

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

<Info>
  Menjalankan layanan `web` dalam *mode pengembangan* hanya akan memperbarui layanan `web` saat kode backend berubah. Agar kode frontend juga diperbarui secara otomatis, pastikan untuk menjalankan layanan `webpack` dalam *mode pengembangan* juga.
</Info>

Jika tidak ada layanan yang disebutkan, semua layanan akan berjalan dalam mode pengembangan.

### Debugging

Saat dijalankan dalam *mode pengembangan*, sebagian besar layanan mengekspos port debugging yang dapat Anda hubungkan dengan debugger seperti inspector di Chrome Dev Tools atau debugger yang terintegrasi di IDE. Tabel berikut menunjukkan port yang diekspos pada **mesin host** untuk setiap layanan:

| Layanan | Port |
| - | - |
| `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 |

Untuk terhubung ke layanan menggunakan *remote debugging* Chrome, buka chrome://inspect/ dan pastikan *Discover network targets* dicentang. Selanjutnya klik *Configure...* dan tambahkan entri `localhost:[service port]` untuk setiap layanan yang ingin Anda hubungkan dengan debugger.

Setelah menambahkan entri, layanan akan muncul sebagai *Remote Target* yang dapat Anda inspeksi dan debug.

### Logging

Di lingkungan pengembangan, Overleaf menyediakan skrip `bin/logs`, namun Anda perlu menginstal beberapa dependensi:

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

Atau, Anda dapat langsung menjalankan:

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

### Alat Lainnya

Setelah semuanya selesai, Anda dapat merujuk ke [bagian berikutnya](/id/dev/environment/setup-develop-tools) untuk menambahkan beberapa alat debug ke pengembangan Overleaf Anda.


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