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

# Memperbarui MongoDB

<Info>
  Setiap rilis baru Server CE/Server Pro akan menunjukkan perubahan apa pun pada versi MongoDB yang didukung dalam [catatan rilis](https://docs.overleaf.com/on-premises/release-notes)-nya.
</Info>

### Apakah saya perlu memperbarui MongoDB?

Anda **hanya** perlu mempertimbangkan untuk memperbarui versi MongoDB jika Anda berencana meningkatkan instans Server CE/Server Pro Anda.

Jika Anda menjalankan versi MongoDB yang lebih baru daripada yang direkomendasikan untuk versi Anda saat ini (atau versi target), tidak perlu melakukan perubahan apa pun.

<Warning>
  Anda tidak boleh menurunkan versi MongoDB Anda.
</Warning>

Jika Anda mengalami masalah tertentu yang menurut Anda mungkin terkait dengan versi MongoDB Anda saat ini, jangan ragu untuk [membuat issue](https://github.com/overleaf/overleaf/issues) jika Anda pengguna Server CE, atau hubungi Overleaf Support jika Anda pengguna Server Pro.

### Memeriksa versi MongoDB Anda

Membuka shell `mongo` akan langsung mencetak versi saat ini.

Pengguna Overleaf Toolkit:

```bash theme={null}
bin/docker-compose exec mongo mongod --version
db version v5.0.24
Build Info: {
    "version": "5.0.24",
    "gitVersion": "f034f0c51b3dffef4b8c9452d77ede9888f28f66",
    "openSSLVersion": "OpenSSL 1.1.1f  31 Mar 2020",
    "modules": [],
    "allocator": "tcmalloc",
    "environment": {
        "distmod": "ubuntu2004",
        "distarch": "x86_64",
        "target_arch": "x86_64"
    }
}
```

Pengguna Docker Compose:

```bash theme={null}
docker compose exec mongo mongod --version
db version v5.0.24
Build Info: {
    "version": "5.0.24",
    "gitVersion": "f034f0c51b3dffef4b8c9452d77ede9888f28f66",
    "openSSLVersion": "OpenSSL 1.1.1f  31 Mar 2020",
    "modules": [],
    "allocator": "tcmalloc",
    "environment": {
        "distmod": "ubuntu2004",
        "distarch": "x86_64",
        "target_arch": "x86_64"
    }
}

```

### Proses pembaruan

Memperbarui versi MongoDB selama peningkatan instans Server CE/Server Pro Anda dilakukan sebagai berikut:

1. Tentukan versi Server CE/Server Pro yang ingin Anda tingkatkan.
2. Temukan versi MongoDB yang direkomendasikan oleh rilis Overleaf Server CE/Server Pro tersebut.
3. Ikuti petunjuk untuk meningkatkan MongoDB ke versi target.
4. Tingkatkan versi image Server CE/Server Pro dan mulai ulang instans.

Rekomendasi kami adalah selalu meningkatkan **Server CE/Server Pro** ke versi terbaru yang tersedia, karena versi tersebut selalu dijamin didukung (khusus pengguna Server Pro).

<Danger>
  Saat melakukan peningkatan Server CE/Pro, kami menyarankan untuk meningkatkan ke rilis terbaru dari versi mayor yang sedang digunakan **sebelum** meningkatkan ke rilis terbaru dari versi mayor **berikutnya**. Jika penerapan Anda tertinggal lebih dari satu versi mayor dari versi terbaru, Anda akan diwajibkan melakukan peningkatan bertahap.

  Misalnya, jika Anda menjalankan 3.5.10, Anda perlu meningkatkan ke 3.5.13 -> Lakukan migrasi Full Project History -> 4.2.9 -> 5.5.4.

  Anda **tidak boleh** melewati versi mayor (3.5.10 -> 5.5.4). Jika Anda menggunakan Toolkit dan tertinggal lebih dari satu versi mayor dari versi terbaru, Anda **tidak boleh** menggunakan skrip `bin/upgrade` karena Anda perlu melakukan peningkatan bertahap secara manual.
</Danger>

<Warning>
  Penting untuk memastikan bahwa Anda membuat [cadangan yang konsisten](/id/on-premises/maintenance/data-and-backups#performing-a-consistent-backup) **sebelum** setiap peningkatan versi mayor agar Anda dapat melakukan rollback jika diperlukan.
</Warning>

#### Informasi dukungan versi

Jika Anda memutuskan untuk menggunakan versi yang lebih lama, tabel ini menunjukkan versi MongoDB yang direkomendasikan untuk rilis Server CE/Server Pro sebelumnya, tetapi Anda **tidak boleh** menurunkan versi MongoDB Anda.

<div style={{ overflowX: "auto" }}><table style={{ display: "table", width: "100%" }}><thead><tr><th width="175">Server CE/Server Pro</th><th width="139" style={{ textAlign: "center" }}>Versi MongoDB</th><th style={{ textAlign: "center" }}>Versi Kompatibilitas Fitur Minimum</th><th style={{ textAlign: "center" }}>Versi Maksimum yang Didukung oleh Driver Node.js</th></tr></thead><tbody><tr><td>2.0.x</td><td style={{ textAlign: "center" }}>3.4</td><td style={{ textAlign: "center" }}>-</td><td style={{ textAlign: "center" }}>-</td></tr><tr><td>2.1.x hingga 2.4.x</td><td style={{ textAlign: "center" }}>3.6</td><td style={{ textAlign: "center" }}>-</td><td style={{ textAlign: "center" }}>-</td></tr><tr><td>>=2.5.0</td><td style={{ textAlign: "center" }}>4.0</td><td style={{ textAlign: "center" }}>-</td><td style={{ textAlign: "center" }}>-</td></tr><tr><td>>=3.1.0</td><td style={{ textAlign: "center" }}>4.2</td><td style={{ textAlign: "center" }}>-</td><td style={{ textAlign: "center" }}>-</td></tr><tr><td>>=3.2.0</td><td style={{ textAlign: "center" }}>4.4</td><td style={{ textAlign: "center" }}>-</td><td style={{ textAlign: "center" }}>-</td></tr><tr><td>>=4.2.0</td><td style={{ textAlign: "center" }}>5.0</td><td style={{ textAlign: "center" }}>-</td><td style={{ textAlign: "center" }}>-</td></tr><tr><td>>=5.1.0</td><td style={{ textAlign: "center" }}>6.0</td><td style={{ textAlign: "center" }}>-</td><td style={{ textAlign: "center" }}>-</td></tr><tr><td>>=5.3.1</td><td style={{ textAlign: "center" }}>6.0</td><td style={{ textAlign: "center" }}>5.0</td><td style={{ textAlign: "center" }}>8.0</td></tr><tr><td>>=5.5.0</td><td style={{ textAlign: "center" }}>6.0</td><td style={{ textAlign: "center" }}>6.0</td><td style={{ textAlign: "center" }}>8.0</td></tr><tr><td>6.0.0</td><td style={{ textAlign: "center" }}>8.0</td><td style={{ textAlign: "center" }}>8.0</td><td style={{ textAlign: "center" }}>8.0</td></tr></tbody></table></div>

<Danger>
  Versi kompatibilitas fitur minimum di atas didasarkan pada versi MongoDB terkait yang direkomendasikan untuk digunakan dengan versi Overleaf yang ditampilkan. Jika Anda berencana menggunakan versi yang lebih tinggi, MongoDB akan memiliki persyaratan minimumnya sendiri.
</Danger>

Anda dapat melihat tabel kompatibilitas yang menentukan versi driver Node.js MongoDB yang didukung untuk digunakan dengan MongoDB [di sini](https://www.mongodb.com/docs/drivers/node/current/reference/compatibility/).

Anda dapat melihat status akhir masa pakai (end-of-life) untuk setiap versi MongoDB [di sini](https://endoflife.date/mongodb).

#### Meningkatkan MongoDB

MongoDB memerlukan **peningkatan bertahap**. Artinya, Anda tidak dapat langsung beralih dari, misalnya, `4.0` ke `5.0`. Anda perlu terlebih dahulu memperbarui `4.2` ke `4.4`, lalu ke `5.0`.

<Info>
  MongoDB menggunakan angka genap untuk versi stabilnya.
</Info>

#### **Petunjuk pembaruan saat menjalankan MongoDB di luar Docker**

Berikut adalah tautan ke petunjuk pembaruan dari mongodb.com saat meningkatkan MongoDB.

* [Catatan rilis MongoDB - meningkatkan MongoDB dari `4.2` ke `4.4`](https://www.mongodb.com/docs/v4.4/release-notes/4.4-upgrade-standalone/)
* [Catatan rilis MongoDB - meningkatkan MongoDB dari `4.4` ke `5.0`](https://www.mongodb.com/docs/v5.0/release-notes/5.0-upgrade-replica-set/)
* [Catatan rilis MongoDB - meningkatkan MongoDB dari `5.0` ke `6.0`](https://www.mongodb.com/docs/v6.0/release-notes/6.0-upgrade-replica-set/)
* [Catatan rilis MongoDB - meningkatkan MongoDB dari `6.0` ke `7.0`](https://www.mongodb.com/docs/manual/release-notes/7.0-upgrade-replica-set/#std-label-7.0-upgrade-replica-set)
* [Catatan rilis MongoDB - meningkatkan MongoDB dari `7.0` ke `8.0`](https://www.mongodb.com/docs/manual/release-notes/8.0-upgrade-replica-set/#std-label-8.0-upgrade-replica-set)

<Info>
  Petunjuk untuk `5.0` dan yang lebih tinggi mengarah ke instalasi replica set, bukan standalone. Karena Server Pro/CE 4.0.1+ menggunakan transaksi, MongoDB perlu dijalankan sebagai replica set.
</Info>

<Warning>
  Dokumentasi untuk MongoDB 3.2 hingga 4.2 kini tersedia melalui [https://www.mongodb.com/docs/legacy/](https://www.mongodb.com/docs/legacy/)
</Warning>

**Petunjuk Dasar**

Dalam sebagian besar kasus, pembaruan memerlukan pengaturan flag kompatibilitas sebelum benar-benar memperbarui versi mongo. Langkah-langkahnya adalah sebagai berikut:

1. Atur flag kompatibilitas seperti yang dijelaskan dalam catatan rilis MongoDB (lihat contoh di bawah).
2. Kemudian perbarui image mongo:
   1. **Pengguna Toolkit** Perbarui `MONGO_VERSION`, misalnya `MONGO_VERSION=6.0`
   2. **Pengguna Docker Compose** Perbarui versi tag image `mongo`,\
      misalnya `services -> mongo -> image: mongo:6.0`;

**Contoh: Meningkatkan MongoDB dari `5.0` ke `6.0`**

Mari kita mulai dengan memastikan bahwa kita menjalankan MongoDB `6.0`:

Pengguna Overleaf Toolkit:

```bash theme={null}
bin/docker-compose exec mongo mongod --version
# db version v5.0.24
```

Pengguna Docker Compose:

```bash theme={null}
docker compose exec mongo mongod --version
# db version v5.0.24
```

Menurut [petunjuk peningkatan](https://docs.mongodb.com/manual/release-notes/3.6-upgrade-standalone/#upgrade-version-path), satu-satunya persyaratan adalah `featureCompatibilityVersion` diatur ke `5.0`. Kita melakukannya dengan membuka shell MongoDB dan menjalankan perintah yang ditunjukkan:

Pengguna Overleaf Toolkit:

```bash theme={null}
bin/mongo
# MongoDB shell version v5.0.24
# ...
# overleaf:PRIMARY> db.adminCommand( { setFeatureCompatibilityVersion: "5.0" } )
# { 
# "ok" : 1,
# ...
# }
overleaf:PRIMARY> exit
# bye
```

<Info>
  Pengguna Docker Compose dapat menjalankan `docker compose exec mongo mongosh` untuk mendapatkan shell dan menjalankan perintah yang sama seperti pengguna Toolkit.
</Info>

Pengguna Overleaf Toolkit:

Kemudian kita akan menghentikan instans Server CE/Server Pro dan MongoDB menggunakan perintah `bin/stop`, mengatur `MONGO_VERSION=6.0` di `config/overleaf.rc`, lalu memulai ulang layanan `mongo` menggunakan `bin/up mongo`) untuk memverifikasi bahwa pembaruan berjalan lancar.

Terakhir, kita akan memperbarui versi image Server CE/Server Pro ke versi target dan membuat ulang semua layanan menggunakan perintah `bin/up -d`.

Pengguna Docker Compose:

Kemudian kita akan menghentikan instans Server CE/Server Pro dan MongoDB menggunakan perintah `docker compose stop`, memperbarui file [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) agar menggunakan `image: mongo:6.0`, lalu memulai ulang layanan `mongo` menggunakan perintah `docker compose up mongo` untuk memverifikasi bahwa pembaruan berjalan lancar.

Terakhir, kita akan memperbarui versi image Server CE/Server Pro ke versi target dan membuat ulang semua layanan menggunakan perintah `docker compose up`.

<strong>Contoh: Meningkatkan MongoDB dari `6.0` ke `7.0` (pengguna toolkit)</strong>

Mulailah dengan memastikan bahwa Anda menjalankan MongoDB `6.0` menggunakan perintah `mongod --version` di atas.

Menurut [petunjuk peningkatan](https://www.mongodb.com/docs/manual/release-notes/7.0-upgrade-replica-set/#std-label-7.0-upgrade-replica-set), satu-satunya persyaratan adalah `featureCompatibilityVersion` diatur ke `6.0`. Kita melakukannya dengan membuka shell MongoDB dan menjalankan perintah `db.adminCommand({ setFeatureCompatibilityVersion: "6.0" })` .

Pengguna Overleaf Toolkit:

```bash theme={null}
bin/mongo
# ...
# overleaf:PRIMARY> db.adminCommand( { setFeatureCompatibilityVersion: "6.0" } )
# { 
# "ok" : 1,
# ...
# }
overleaf:PRIMARY> exit
# bye
```

Kemudian kita akan menghentikan instans Server CE/Server Pro dan MongoDB menggunakan perintah `bin/stop`, mengatur `MONGO_VERSION=7.0` di `config/overleaf.rc`, lalu memulai ulang layanan `mongo` menggunakan `bin/up mongo`) untuk memverifikasi bahwa pembaruan berjalan lancar.

Terakhir, kita akan memperbarui versi image Server CE/Server Pro ke versi target dan membuat ulang semua layanan menggunakan perintah `bin/up -d`.

<strong>Contoh: Meningkatkan MongoDB dari `7.0` ke `8.0` (pengguna toolkit)</strong>

Mulailah dengan memastikan bahwa Anda menjalankan MongoDB `7.0` menggunakan perintah `mongod --version` di atas.

Menurut [petunjuk peningkatan](https://www.mongodb.com/docs/manual/release-notes/8.0-upgrade-replica-set/#std-label-8.0-upgrade-replica-set), satu-satunya persyaratan adalah `featureCompatibilityVersion` diatur ke `7.0`. Kita melakukannya dengan membuka shell MongoDB dan menjalankan perintah `db.adminCommand({ setFeatureCompatibilityVersion: "7.0", confirm: true })`. Perhatikan bahwa perintah ini sekarang memerlukan parameter tambahan `confirm: true`.

```bash theme={null}
bin/mongo
# ...
# overleaf:PRIMARY> db.adminCommand( { setFeatureCompatibilityVersion: "7.0", confirm: true } )
# { 
# "ok" : 1,
# ...
# }
overleaf:PRIMARY> exit
# bye
```

Kemudian kita akan menghentikan instans Server CE/Server Pro dan MongoDB menggunakan perintah `bin/stop`, mengatur `MONGO_VERSION=8.0` di `config/overleaf.rc`, lalu memulai ulang layanan `mongo` menggunakan `bin/up mongo`) untuk memverifikasi bahwa pembaruan berjalan lancar.

Terakhir, kita akan memperbarui versi image Server CE/Server Pro ke versi target dan membuat ulang semua layanan menggunakan perintah `bin/up -d`.

#### Perintah yang setara untuk pengguna docker compose

Untuk pengguna docker compose, perintah yang setara adalah:

* `docker compose exec mongo mongod --version` untuk menampilkan versi mongo
* `docker compose exec mongo mongosh` untuk memulai shell mongo untuk perintah admin
* Perintah `docker compose stop` untuk menghentikan server
* Edit file [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) agar menggunakan `image: mongo:6.0` untuk meningkatkan versi mongo
* `docker compose up mongo` untuk memulai ulang layanan mongo dan memverifikasi bahwa pembaruan berjalan lancar
* Edit file [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) agar menggunakan `image: sharelatex:VERSION` untuk meningkatkan versi image
* `docker compose up` untuk membuat ulang semua layanan.

### Membuat role kustom

Pada versi `5.5.1`, kami memperkenalkan pemeriksaan saat startup untuk memverifikasi versi kompatibilitas fitur MongoDB. Jika database MongoDB Anda menggunakan autentikasi (misalnya, autentikasi dasar), kontainer `sharelatex` mungkin tidak dapat dimulai dan menampilkan error izin "*not authorized on admin to execute command*".

Untuk mengatasinya, Anda dapat membuat role baru di MongoDB dan menetapkannya ke akun pengguna yang digunakan untuk mengakses database menggunakan petunjuk di bawah, atau mengatur `ALLOW_MONGO_ADMIN_CHECK_FAILURES=true` agar pemeriksaan dapat gagal tanpa mencegah penerapan dimulai.

<Check>
  Role baru ini **hanya** memberikan izin untuk membaca parameter server MongoDB tingkat cluster dan dapat digunakan kembali untuk keperluan pemantauan,
</Check>

```bash wrap theme={null}
# Toolkit users
$ bin/docker-compose exec -it mongo mongosh -u {{YOUR-ADMIN-USERNAME}} -p

# Switch to the "admin" database using
overleaf [direct: primary] sharelatex> use admin
switched to db admin
overleaf [direct: primary] admin> 

# Create a new role with permission to use "getParamter". Copy and paste the function below into the shell and press the return key

db.createRole(
  {
    role: "clusterParameterReader",
    privileges: [
      {
        resource: { cluster: true },
        actions: ["getParameter"]    
      }
    ],
    roles: [] 
  }
);

# Switch back to the "sharelatex" database 
use sharelatex
switched to db sharelatex
overleaf [direct: primary] sharelatex> 

# Assign the new "clusterParameterReader" role to your database user by copy and pasting the function below into the shell and press the return key 
db.grantRolesToUser(
  "{{YOUR-DATABASE-USER}}",
  [
    { role: "clusterParameterReader", db: "admin" }
  ]
);

# Type exit then return to exit the MongoDB shell
# Run bin/up -d to start the deployment stack
$ bin/up -d
```


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