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

# Sinkronisasi Dropbox

<Info>
  Fitur ini dikembangkan oleh [ayaka-notes/ayakaleaf-pro](https://github.com/ayaka-notes/ayakaleaf-pro). Fitur ini diperkenalkan sejak v6.4.0 dan versi selanjutnya, dan masih berstatus beta. Kami membutuhkan masukan Anda jika Anda mengalami masalah.
</Info>

Sinkronisasi Dropbox menjaga proyek-proyek milik pengguna tetap tersinkron dengan Dropbox mereka, seperti di Overleaf Cloud: setelah pengguna menautkan akun Dropbox mereka, setiap proyek mereka muncul sebagai folder di `Apps/<your Dropbox app>/`, perubahan di Overleaf dikirim ke Dropbox, dan perubahan yang dibuat di Dropbox kembali ke Overleaf.

### Menyiapkan Sinkronisasi Dropbox

<Warning>
  Anda perlu mengaktifkan [git-bridge](/id/on-premises/configuration/overleaf-toolkit/git-integration) terlebih dahulu: tanpanya, pengaturan akun akan menyembunyikan bagian sinkronisasi proyek.

  ```dotenv title="config/overleaf.rc" theme={null}
  GIT_BRIDGE_ENABLED=true
  ```
</Warning>

Buat aplikasi di [Dropbox App Console](https://www.dropbox.com/developers/apps), dengan masuk menggunakan akun Dropbox yang akan menjadi pemilik aplikasi:

1. Klik **Create app**, lalu isi halaman tersebut:
   * **1. Choose an API**: pilih **Scoped access**.
   * **2. Choose the type of access you need**: pilih **App folder**, bukan **Full Dropbox**. Overleaf hanya melakukan sinkronisasi di dalam folder aplikasi.
   * **3. Name your app**: masukkan nama, misalnya `Overleaf`. Nama ini harus unik di Dropbox. Proyek setiap pengguna muncul di `Apps/<name of your app>/` di Dropbox mereka, dan nama ini adalah `DROPBOX_APP_NAME` di bawah.
   * Klik **Create app**. Aplikasi akan terbuka pada tab **Settings**.
2. Pada tab **Permissions**, di bawah **Files and folders**, centang `files.metadata.write`, `files.content.write`, dan `files.content.read`. `account_info.read` dan `files.metadata.read` ikut tercentang bersamanya dan tidak dapat dihapus centangnya. Jangan centang izin lainnya.
3. Klik **Submit** di bilah bagian bawah tab **Permissions**. **Tanpa Submit, izin tidak akan tersimpan**, dan Dropbox akan menolak menyinkronkan file bagi pengguna yang menautkan akun mereka.

<Frame caption="Dropbox App Console: izin yang harus dicentang, disimpan dengan Submit">
  <img src="https://mintcdn.com/ayakaleaf-pro/34P8O6kHo91beEvQ/images/on-premises/dropbox-app-permissions.png?fit=max&auto=format&n=34P8O6kHo91beEvQ&q=85&s=8e99711b1fcf03d3d1655f65fea3a6b8" alt="" width="2302" height="1444" data-path="images/on-premises/dropbox-app-permissions.png" />
</Frame>

4. Pada tab **Settings**, di bawah **OAuth 2**, masukkan `${OVERLEAF_SITE_URL}/user/dropbox/oauth/callback` di **Redirect URIs**, lalu **klik Add**. Mengetik URI saja tidak cukup: URI baru tersimpan setelah muncul di daftar di atas kolom tersebut.

<Frame caption="Dropbox App Console: masukkan redirect URI, lalu klik Add">
  <img src="https://mintcdn.com/ayakaleaf-pro/34P8O6kHo91beEvQ/images/on-premises/dropbox-app-redirect-uri.png?fit=max&auto=format&n=34P8O6kHo91beEvQ&q=85&s=d980dc4dec22a90b5bf1f7e147cfc7c0" alt="" width="2788" height="1450" data-path="images/on-premises/dropbox-app-redirect-uri.png" />
</Frame>

5. Pada tab **Settings**, di bawah **Webhooks**, masukkan `${OVERLEAF_SITE_URL}/dropbox/webhook` di **Webhook URIs**, lalu **klik Add** juga. Dropbox langsung memanggilnya untuk memeriksa, sehingga Overleaf harus sudah berjalan dengan pengaturan di bawah dan dapat dijangkau dari internet (lihat [Webhook](#webhook)). Statusnya akan menampilkan **Enabled** setelah pemeriksaan berhasil.

Salin **App key** dan **App secret** (klik **Show**) dari tab **Settings**, lalu tambahkan pengaturan berikut ke file variabel lingkungan Overleaf Anda. Anda dapat menambahkan webhook (langkah 5) setelah Overleaf berjalan dengan pengaturan tersebut.

```dotenv title="config/variables.env" wrap theme={null}
# used to encrypt the user's Dropbox refresh token.
# How to generate: `openssl rand -hex 32`
DROPBOX_TOKEN_CIPHER_PASSWORD=0123456789ABCDEFG # changed to yours

# Dropbox Sync Settings
DROPBOX_ENABLED=true
DROPBOX_APP_KEY=
DROPBOX_APP_SECRET=
# the name of your Dropbox app (step 1), which is the folder name in Apps/
DROPBOX_APP_NAME=Overleaf

# OAuth callback is: ${OVERLEAF_SITE_URL}/user/dropbox/oauth/callback
# Webhook is: ${OVERLEAF_SITE_URL}/dropbox/webhook
# (Optional) DROPBOX_SYNC_PROXY_URL=http://10.0.0.1:10808
```

<Warning>
  * Sebelum mengonfigurasi redirect URI dan webhook, pastikan `OVERLEAF_SITE_URL` sudah diatur dengan benar.
  * Dropbox menetapkan izin sebuah token saat pengguna menautkan akunnya: mengirimkan izin tidak mengubah token yang sudah ada. Pengguna yang menautkan akun sebelum izin dikirimkan, atau sebelum Anda mengubahnya, harus memutuskan tautan lalu menautkan akun Dropbox mereka kembali.
  * Aplikasi baru berstatus **Development**. Jika **Development users** pada tab **Settings** menampilkan **Only you**, hanya akun Dropbox Anda yang dapat ditautkan: klik **Enable additional users** agar pengguna lain dapat menautkan akun mereka. Setelah itu, akan ditampilkan jumlah pengguna yang telah menautkan akun, misalnya `1 / 500`: **aplikasi Development menampung paling banyak 500 pengguna**. Untuk lebih banyak pengguna, klik **Apply for production**, dan Dropbox akan meninjau aplikasi tersebut.
</Warning>

Jika Anda berada di wilayah dengan akses jaringan yang dibatasi, Anda mungkin perlu mengonfigurasi proxy untuk mengakses Dropbox. Atur variabel lingkungan berikut: `DROPBOX_SYNC_PROXY_URL=http://10.0.0.1:10808`. Proxy tersebut harus berupa forward proxy HTTP/HTTPS standar, dan tidak boleh menggunakan `127.0.0.1`.

### Webhook

Dropbox memberi tahu Overleaf tentang perubahan di Dropbox melalui webhook, sehingga perubahan tersebut muncul di Overleaf dalam hitungan detik. Webhook mengarah ke alamat situs Anda, `${OVERLEAF_SITE_URL}/dropbox/webhook`, tanpa memerlukan port tambahan, tetapi **Dropbox harus dapat menjangkaunya dari internet**. Saat Anda menambahkannya di App Console, Dropbox langsung memeriksanya.

Tanpa webhook, misalnya pada server yang tidak dapat dijangkau Dropbox, perubahan di Overleaf tetap dikirim ke Dropbox, tetapi perubahan di Dropbox hanya kembali saat pengguna mengklik *sync this project now* di dialog Dropbox pada editor.

### Cara kerja sinkronisasi

* **Penautan**: saat pengguna menautkan akun Dropbox mereka, proyek yang mereka miliki dikirim ke Dropbox. Proyek yang dibagikan kepada mereka muncul di Dropbox pada perubahan berikutnya.
* **Overleaf ke Dropbox**: file baru, penggantian nama, pemindahan, penghapusan, dan penggantian nama proyek langsung dikirim. Suntingan di editor dikirim setelah Overleaf menyimpannya ke penyimpanannya, beberapa menit setelah semua orang meninggalkan proyek. Untuk mengirimnya lebih awal, klik *sync this project now* di dialog Dropbox pada editor (sekali per menit).
* **Dropbox ke Overleaf**: file baru dan yang diubah, folder baru, serta penghapusan di dalam folder proyek diterapkan ke proyek. Folder baru di tingkat teratas folder aplikasi menjadi proyek baru. Menghapus folder proyek di Dropbox akan menandai proyek tersebut sebagai terhapus di Overleaf.
* **Konflik**: jika sebuah file berubah di kedua tempat pada saat yang sama, perubahan terakhir yang berlaku. Dropbox mungkin menyimpan versi lainnya sebagai *conflicted copy*.
* **Kolaborator**: kolaborator yang menautkan Dropbox mereka mendapatkan proyek yang dibagikan kepada mereka. Peninjau dan pengguna dengan akses hanya-lihat mendapatkan proyek tersebut, tetapi perubahan mereka di Dropbox tidak disinkronkan kembali ke Overleaf.
* **File yang diabaikan**: file yang tidak disinkronkan Overleaf, seperti hasil build (`.aux`, `.log`, …), `.DS_Store`, atau virtual environment Python, hanya tetap berada di Dropbox.

### Q\&A

<Accordion title="Mengapa pengguna tidak dapat menautkan akun Dropbox mereka?">
  <strong>Jawaban:</strong>

  * Proyek dicocokkan dengan folder Dropbox berdasarkan nama, sehingga pengguna yang memiliki dua proyek dengan nama yang sama akan diminta untuk mengganti nama salah satunya terlebih dahulu.
  * Satu akun Dropbox hanya dapat ditautkan ke satu akun Overleaf.
</Accordion>

<Accordion title="Mengapa tautan akun Dropbox diputus?">
  <strong>Jawaban:</strong> Overleaf memutuskan tautan akun Dropbox ketika Dropbox menolak tokennya (misalnya setelah pengguna menghapus aplikasi di Dropbox), ketika Dropbox penuh, atau ketika Dropbox menangguhkan akun tersebut. Pengguna dapat menautkannya kembali setelah masalah teratasi.
</Accordion>

<Accordion title="Bisakah saya mengganti nama folder proyek di Dropbox?">
  <strong>Jawaban:</strong> Sebaiknya ganti nama proyek di Overleaf. Bagi Overleaf, mengganti nama folder di Dropbox berarti menghapus folder proyek dan membuat folder baru, sehingga proyek lama ditandai sebagai terhapus dan proyek baru dibuat dari file-file tersebut.
</Accordion>


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