> For the complete documentation index, see [llms.txt](https://ayakaleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ayakaleaf-pro.ayaka.space/on-premises/fr/maintenance/updating-mongodb.md).

# Mise à jour de MongoDB

{% hint style="info" %}
Toute nouvelle version de Server CE/Server Pro indiquera tout changement concernant la version prise en charge de MongoDB dans ses [notes de version](https://docs.overleaf.com/on-premises/release-notes).
{% endhint %}

### Dois-je mettre à jour MongoDB ?

Vous devriez **uniquement** envisager de mettre à jour votre version de MongoDB si vous prévoyez de mettre à niveau votre instance de Server CE/Server Pro.

Si vous utilisez une version de MongoDB plus récente que celle recommandée pour votre version actuelle (ou cible), il n'est pas nécessaire d'effectuer de modifications.

{% hint style="warning" %}
Vous ne devez jamais rétrograder votre version de MongoDB.
{% endhint %}

Si vous rencontrez un problème spécifique que vous pensez lié à votre version actuelle de MongoDB, n'hésitez pas à [signaler un problème](https://github.com/overleaf/overleaf/issues) si vous êtes un utilisateur de Server CE, ou à contacter le support Overleaf si vous êtes un utilisateur de Server Pro.

### Vérifier votre version de MongoDB

L'ouverture du `mongo` shell devrait immédiatement afficher la version actuelle.

Utilisateurs d'Overleaf Toolkit :

```bash
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"
    }
}
```

Utilisateurs de Docker Compose :

```bash
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"
    }
}

```

### Processus de mise à jour

La mise à jour de la version de MongoDB lors de la mise à niveau de votre instance Server CE/Server Pro se fait comme suit :

1. Décidez de la version de Server CE/Server Pro vers laquelle vous prévoyez de mettre à niveau.
2. Trouvez la version de MongoDB recommandée par cette version spécifique de Overleaf Server CE/Server Pro.
3. Suivez les instructions pour mettre à niveau MongoDB vers la version cible.
4. Mettez à niveau la version de l'image Server CE/Server Pro et redémarrez l'instance.

Notre recommandation est de toujours mettre à niveau **Server CE/Server Pro** vers la dernière version disponible, car elle est toujours garantie comme prise en charge (utilisateurs de Server Pro uniquement).

{% hint style="danger" %}
Lors d'une mise à niveau de Server CE/Pro, nous recommandons de mettre à niveau vers la dernière version publiée de la version majeure déployée **avant** de mettre à niveau vers la dernière version de la **prochaine** version majeure. Si votre déploiement a plus d'une version majeure de retard par rapport à la dernière version, vous devrez effectuer une mise à niveau en plusieurs étapes.

Par exemple, si vous utilisez la version 3.5.10, vous devrez mettre à niveau vers 3.5.13 -> effectuer la migration complète de l'historique du projet -> 4.2.9 -> 5.5.4.

Vous devriez **jamais** sauter des versions majeures (3.5.10 -> 5.5.4). Si vous utilisez Toolkit et que vous avez plus d'une version majeure de retard par rapport à la dernière version, vous devez **ne pas** utiliser le `bin/upgrade` script, car vous devrez effectuer une mise à niveau manuelle en plusieurs étapes.
{% endhint %}

{% hint style="warning" %}
Il est important de vous assurer de prendre une [sauvegarde cohérente](/on-premises/fr/maintenance/data-and-backups.md#performing-a-consistent-backup) **avant** à chaque mise à niveau d'une version majeure afin de pouvoir revenir en arrière si nécessaire.
{% endhint %}

#### Informations sur la prise en charge des versions

Si vous décidez de revenir à une version antérieure, ce tableau indique la version de MongoDB recommandée pour les versions antérieures de Server CE/Server Pro, mais vous devriez **jamais** rétrograder votre version de MongoDB.

<table><thead><tr><th width="175">Server CE/Server Pro</th><th width="139" align="center">Version de MongoDB</th><th align="center">Version minimale de compatibilité des fonctionnalités</th><th align="center">Version maximale prise en charge par le pilote Node.js</th></tr></thead><tbody><tr><td>2.0.x</td><td align="center">3.4</td><td align="center">-</td><td align="center">-</td></tr><tr><td>2.1.x à 2.4.x</td><td align="center">3.6</td><td align="center">-</td><td align="center">-</td></tr><tr><td>>=2.5.0</td><td align="center">4.0</td><td align="center">-</td><td align="center">-</td></tr><tr><td>>=3.1.0</td><td align="center">4.2</td><td align="center">-</td><td align="center">-</td></tr><tr><td>>=3.2.0</td><td align="center">4.4</td><td align="center">-</td><td align="center">-</td></tr><tr><td>>=4.2.0</td><td align="center">5.0</td><td align="center">-</td><td align="center">-</td></tr><tr><td>>=5.1.0</td><td align="center">6.0</td><td align="center">-</td><td align="center">-</td></tr><tr><td>>=5.3.1</td><td align="center">6.0</td><td align="center">5.0</td><td align="center">8.0</td></tr><tr><td>>=5.5.0</td><td align="center">6.0</td><td align="center">6.0</td><td align="center">8.0</td></tr><tr><td>6.0.0</td><td align="center">8.0</td><td align="center">8.0</td><td align="center">8.0</td></tr></tbody></table>

{% hint style="danger" %}
La version minimale de compatibilité des fonctionnalités ci-dessus est basée sur la version de MongoDB correspondante recommandée pour l'utilisation avec la version d'Overleaf indiquée. Si vous prévoyez d'utiliser une version plus élevée, MongoDB aura sa propre exigence minimale.
{% endhint %}

Vous pouvez consulter le tableau de compatibilité qui précise les versions prises en charge du pilote MongoDB Node.js pour une utilisation avec MongoDB [ici](https://www.mongodb.com/docs/drivers/node/current/reference/compatibility/).

Vous pouvez consulter le statut de fin de vie de chaque version de MongoDB [ici](https://endoflife.date/mongodb).

#### Mettre à niveau MongoDB

MongoDB nécessite **des mises à niveau étape par étape**. Cela signifie que vous ne pouvez pas passer directement, par exemple `4.0` à `5.0`. Vous devez d'abord mettre à jour `4.2` à `4.4`, puis `5.0`.

{% hint style="info" %}
MongoDB utilise des nombres pairs pour ses versions stables.
{% endhint %}

#### **Instructions de mise à jour lorsque MongoDB s'exécute hors de Docker**

Voici des liens vers les instructions de mise à jour de mongodb.com pour mettre à niveau MongoDB.

* [Notes de version de MongoDB - mise à niveau de MongoDB de `4.2` à `4.4`](https://www.mongodb.com/docs/v4.4/release-notes/4.4-upgrade-standalone/)
* [Notes de version de MongoDB - mise à niveau de MongoDB de `4.4` à `5.0`](https://www.mongodb.com/docs/v5.0/release-notes/5.0-upgrade-replica-set/)
* [Notes de version de MongoDB - mise à niveau de MongoDB de `5.0` à `6.0`](https://www.mongodb.com/docs/v6.0/release-notes/6.0-upgrade-replica-set/)
* [Notes de version de MongoDB - mise à niveau de MongoDB de `6.0` à `7.0`](https://www.mongodb.com/docs/manual/release-notes/7.0-upgrade-replica-set/#std-label-7.0-upgrade-replica-set)
* [Notes de version de MongoDB - mise à niveau de MongoDB de `7.0` à `8.0`](https://www.mongodb.com/docs/manual/release-notes/8.0-upgrade-replica-set/#std-label-8.0-upgrade-replica-set)

{% hint style="info" %}
Les instructions pour `5.0` et versions ultérieures indiquent une installation en jeu de répliques, au lieu d'une instance autonome. Comme Server Pro/CE 4.0.1+ utilise des transactions, MongoDB doit être exécuté en tant que jeu de répliques.
{% endhint %}

{% hint style="warning" %}
La documentation pour MongoDB 3.2 à 4.2 est désormais disponible via <https://www.mongodb.com/docs/legacy/>
{% endhint %}

**Instructions de base**

Dans la plupart des cas, la mise à jour nécessite de définir un indicateur de compatibilité avant de mettre réellement à jour la version de mongo. Les étapes sont les suivantes :

1. Définissez l'indicateur de compatibilité comme décrit dans les notes de version de MongoDB (voir les exemples ci-dessous).
2. Puis mettez à jour l'image mongo :
   1. **Utilisateurs de Toolkit** Mettre à jour `MONGO_VERSION`, par exemple `MONGO_VERSION=6.0`
   2. **Utilisateurs de Docker Compose** Mettez à jour la version du `mongo` tag de l'image,\
      par ex. `services -> mongo -> image: mongo:6.0`;

**Exemple : mise à niveau de MongoDB de `5.0` à `6.0`**

Commençons par nous assurer que nous exécutons MongoDB `6.0`:

Utilisateurs d'Overleaf Toolkit :

```bash
bin/docker-compose exec mongo mongod --version
# db version v5.0.24
```

Utilisateurs de Docker Compose :

```bash
docker compose exec mongo mongod --version
# db version v5.0.24
```

Selon les [instructions de mise à niveau](https://docs.mongodb.com/manual/release-notes/3.6-upgrade-standalone/#upgrade-version-path), la seule exigence est d'avoir `featureCompatibilityVersion` défini sur `5.0`. Nous le faisons en ouvrant un shell MongoDB et en exécutant la commande indiquée :

Utilisateurs d'Overleaf Toolkit :

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

{% hint style="info" %}
Les utilisateurs de Docker Compose peuvent exécuter `docker compose exec mongo mongosh` pour obtenir un shell et exécuter les mêmes commandes que les utilisateurs de Toolkit.
{% endhint %}

Utilisateurs d'Overleaf Toolkit :

Nous arrêterons ensuite les instances de Server CE/Server Pro et de MongoDB à l'aide de la `bin/stop` commande, définissez `MONGO_VERSION=6.0` dans `config/overleaf.rc`, puis redémarrez le `mongo` service à l'aide de `bin/up mongo`) pour vérifier que la mise à jour s'est déroulée correctement.

Enfin, nous mettrons à jour la version de l'image Server CE/Server Pro vers notre version cible et recréerons tous les services à l'aide de la `bin/up -d` commande.

Utilisateurs de Docker Compose :

Nous arrêterons ensuite les instances de Server CE/Server Pro et de MongoDB à l'aide de la `docker compose stop` commande, mettez à jour [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) fichier pour utiliser `image: mongo:6.0`, puis redémarrez le `mongo` service à l'aide de la `docker compose up mongo` commande pour vérifier que la mise à jour s'est déroulée correctement.

Enfin, nous mettrons à jour la version de l'image Server CE/Server Pro vers notre version cible et recréerons tous les services à l'aide de la `docker compose up` commande.

**Exemple : mise à niveau de MongoDB de `6.0` à `7.0` (utilisateurs Toolkit)**

Commencez par vous assurer que vous exécutez MongoDB `6.0` à l'aide des `commandes mongod --version` ci-dessus.

Selon les [instructions de mise à niveau](https://www.mongodb.com/docs/manual/release-notes/7.0-upgrade-replica-set/#std-label-7.0-upgrade-replica-set), la seule exigence est d'avoir `featureCompatibilityVersion` défini sur `6.0`. Nous le faisons en ouvrant un shell MongoDB et en exécutant la commande `db.adminCommand({ setFeatureCompatibilityVersion: "6.0" })` .

Utilisateurs d'Overleaf Toolkit :

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

Nous arrêterons ensuite les instances de Server CE/Server Pro et de MongoDB à l'aide de la `bin/stop` commande, définissez `MONGO_VERSION=7.0` dans `config/overleaf.rc`, puis redémarrez le `mongo` service à l'aide de `bin/up mongo`) pour vérifier que la mise à jour s'est déroulée correctement.

Enfin, nous mettrons à jour la version de l'image Server CE/Server Pro vers notre version cible et recréerons tous les services à l'aide de la `bin/up -d` commande.

**Exemple : mise à niveau de MongoDB de `7.0` à `8.0` (utilisateurs Toolkit)**

Commencez par vous assurer que vous exécutez MongoDB `7.0` à l'aide des `commandes mongod --version` ci-dessus.

Selon les [instructions de mise à niveau](https://www.mongodb.com/docs/manual/release-notes/8.0-upgrade-replica-set/#std-label-8.0-upgrade-replica-set), la seule exigence est d'avoir `featureCompatibilityVersion` défini sur `7.0`. Nous le faisons en ouvrant un shell MongoDB et en exécutant la commande `db.adminCommand({ setFeatureCompatibilityVersion: "7.0", confirm: true })`. Notez que cela nécessite désormais un `confirm: true` supplémentaire.

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

Nous arrêterons ensuite les instances de Server CE/Server Pro et de MongoDB à l'aide de la `bin/stop` commande, définissez `MONGO_VERSION=8.0` dans `config/overleaf.rc`, puis redémarrez le `mongo` service à l'aide de `bin/up mongo`) pour vérifier que la mise à jour s'est déroulée correctement.

Enfin, nous mettrons à jour la version de l'image Server CE/Server Pro vers notre version cible et recréerons tous les services à l'aide de la `bin/up -d` commande.

#### Commandes équivalentes pour les utilisateurs de docker compose

Pour les utilisateurs de docker compose, les commandes équivalentes sont :

* `docker compose exec mongo mongod --version` pour afficher la version de mongo
* `docker compose exec mongo mongosh` pour démarrer un shell mongo pour les commandes d'administration
* `docker compose stop` commande pour arrêter le serveur
* Modifiez le [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) fichier pour utiliser `image: mongo:6.0` pour mettre à niveau la version de mongo
* `docker compose up mongo` pour redémarrer le service mongo et vérifier que la mise à jour s'est déroulée correctement
* Modifiez le [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) fichier pour utiliser `image: sharelatex:VERSION` pour mettre à niveau la version de l'image
* `docker compose up` pour recréer tous les services.

### Créer un rôle personnalisé

Dans la version `5.5.1`, nous avons introduit une vérification au démarrage pour valider la version de compatibilité des fonctionnalités pour MongoDB. Si votre base de données MongoDB utilise l'authentification (par exemple, l'authentification de base), le `sharelatex` conteneur pourrait ne pas démarrer, affichant une erreur d'autorisation "*not authorized on admin to execute command*".

Pour résoudre ce problème, vous pouvez soit créer un nouveau rôle dans MongoDB et l'attribuer au compte utilisateur utilisé pour accéder à la base de données en suivant les instructions ci-dessous, soit définir `ALLOW_MONGO_ADMIN_CHECK_FAILURES=true` pour autoriser l'échec de la vérification sans empêcher le démarrage du déploiement.

{% hint style="success" %}
Ce nouveau rôle **uniquement** accorde l'autorisation de lire les paramètres du serveur MongoDB à l'échelle du cluster et pourrait être réutilisé à des fins de surveillance,
{% endhint %}

{% code overflow="wrap" %}

```bash
# Utilisateurs de Toolkit
$ bin/docker-compose exec -it mongo mongosh -u {{YOUR-ADMIN-USERNAME}} -p

# Passez à la base de données "admin" à l'aide de
overleaf [direct: primary] sharelatex> use admin
passé à la base admin
overleaf [direct: primary] admin> 

# Créez un nouveau rôle avec l'autorisation d'utiliser "getParamter". Copiez et collez la fonction ci-dessous dans le shell et appuyez sur la touche Entrée

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

# Revenez à la base de données "sharelatex" 
use sharelatex
passé à la base sharelatex
overleaf [direct: primary] sharelatex> 

# Assignez le nouveau rôle "clusterParameterReader" à votre utilisateur de base de données en copiant et collant la fonction ci-dessous dans le shell et en appuyant sur la touche Entrée 
db.grantRolesToUser(
  "{{YOUR-DATABASE-USER}}",
  [
    { role: "clusterParameterReader", db: "admin" }
  ]
);

# Tapez exit puis Entrée pour quitter le shell MongoDB
# Exécutez bin/up -d pour démarrer la pile de déploiement
$ bin/up -d
```

{% endcode %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://ayakaleaf-pro.ayaka.space/on-premises/fr/maintenance/updating-mongodb.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
