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

# Mettre à jour MongoDB

<Info>
  Toute nouvelle version de Server CE/Server Pro signale dans ses [notes de version](https://docs.overleaf.com/on-premises/release-notes) tout changement concernant la version de MongoDB prise en charge.
</Info>

### Dois-je mettre à jour MongoDB ?

Vous ne devriez envisager de mettre à jour votre version de MongoDB **que** 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), aucune modification n'est nécessaire.

<Warning>
  Vous ne devez jamais rétrograder votre version de MongoDB.
</Warning>

Si vous rencontrez un problème spécifique qui pourrait selon vous être lié à votre version actuelle de MongoDB, n'hésitez pas à [ouvrir un ticket](https://github.com/overleaf/overleaf/issues) si vous utilisez Server CE, ou à contacter le support Overleaf si vous utilisez Server Pro.

### Vérifier votre version de MongoDB

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

Utilisateurs de l'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"
    }
}
```

Utilisateurs de 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"
    }
}

```

### Processus de mise à jour

La mise à jour de la version de MongoDB lors d'une mise à niveau de votre instance Server CE/Server Pro se déroule comme suit :

1. Choisissez la version de Server CE/Server Pro vers laquelle vous prévoyez de mettre à niveau.
2. Identifiez la version de MongoDB recommandée par cette version précise d'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.

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

<Danger>
  Lors d'une mise à niveau de Server CE/Pro, nous recommandons de passer à la dernière version de la version majeure déployée **avant** de passer à la dernière version de la version majeure **suivante**. Si votre déploiement a plus d'une version majeure de retard sur la dernière, vous devrez effectuer une mise à niveau en plusieurs étapes.

  Par exemple, si vous utilisez la 3.5.10, vous devrez passer à la 3.5.13 -> effectuer la migration vers l'historique complet des projets -> 4.2.9 -> 5.5.4.

  Vous ne devez **jamais** sauter de versions majeures (3.5.10 -> 5.5.4). Si vous utilisez le Toolkit et que vous avez plus d'une version majeure de retard, vous ne devez **pas** utiliser le script `bin/upgrade`, car vous devrez effectuer une mise à niveau manuelle en plusieurs étapes.
</Danger>

<Warning>
  Il est important d'effectuer une [sauvegarde cohérente](/fr/on-premises/maintenance/data-and-backups#performing-a-consistent-backup) **avant** chaque mise à niveau de version majeure afin de pouvoir revenir en arrière si nécessaire.
</Warning>

#### Informations sur les versions prises en charge

Si vous décidez de passer à 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 ne devez **jamais** rétrograder votre version de MongoDB.

<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" }}>Version de MongoDB</th><th style={{ textAlign: "center" }}>Version minimale de compatibilité des fonctionnalités</th><th style={{ textAlign: "center" }}>Version maximale prise en charge par le pilote 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 à 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>
  La version minimale de compatibilité des fonctionnalités ci-dessus correspond à la version de MongoDB recommandée pour la version d'Overleaf indiquée. Si vous prévoyez d'utiliser une version plus récente, MongoDB aura ses propres exigences minimales.
</Danger>

Vous pouvez consulter le tableau de compatibilité indiquant les versions du pilote Node.js de MongoDB prises en charge 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 exige des **mises à niveau étape par étape**. Cela signifie que vous ne pouvez pas passer directement, par exemple, de `4.0` à `5.0`. Vous devez d'abord passer de `4.2` à `4.4`, puis à `5.0`.

<Info>
  MongoDB utilise des nombres pairs pour ses versions stables.
</Info>

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

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

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

<Info>
  Les instructions à partir de `5.0` renvoient à une installation en replica set plutôt qu'en mode autonome. Comme Server Pro/CE 4.0.1+ utilise des transactions, MongoDB doit être exécuté en tant que replica set.
</Info>

<Warning>
  La documentation de MongoDB 3.2 à 4.2 est désormais disponible via [https://www.mongodb.com/docs/legacy/](https://www.mongodb.com/docs/legacy/)
</Warning>

**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. Mettez ensuite à jour l'image mongo :
   1. **Utilisateurs du Toolkit** : mettez à jour `MONGO_VERSION`, par exemple `MONGO_VERSION=6.0`
   2. **Utilisateurs de Docker Compose** : mettez à jour la version du tag de l'image `mongo`,\
      par exemple `services -> mongo -> image: mongo:6.0` ;

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

Commençons par vérifier que nous utilisons MongoDB `6.0` :

Utilisateurs de l'Overleaf Toolkit :

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

Utilisateurs de Docker Compose :

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

D'après les [instructions de mise à niveau](https://docs.mongodb.com/manual/release-notes/3.6-upgrade-standalone/#upgrade-version-path), la seule exigence est que `featureCompatibilityVersion` soit défini sur `5.0`. Pour cela, nous ouvrons un shell MongoDB et exécutons la commande indiquée :

Utilisateurs de l'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>
  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 du Toolkit.
</Info>

Utilisateurs de l'Overleaf Toolkit :

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

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

Utilisateurs de Docker Compose :

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

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

<strong>Exemple : mise à niveau de MongoDB de `6.0` vers `7.0` (utilisateurs du Toolkit)</strong>

Commencez par vérifier que vous utilisez MongoDB `6.0` à l'aide des commandes `mongod --version` ci-dessus.

D'après 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 que `featureCompatibilityVersion` soit défini sur `6.0`. Pour cela, nous ouvrons un shell MongoDB et exécutons la commande `db.adminCommand({ setFeatureCompatibilityVersion: "6.0" })`.

Utilisateurs de l'Overleaf Toolkit :

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

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

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

<strong>Exemple : mise à niveau de MongoDB de `7.0` vers `8.0` (utilisateurs du Toolkit)</strong>

Commencez par vérifier que vous utilisez MongoDB `7.0` à l'aide des commandes `mongod --version` ci-dessus.

D'après 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 que `featureCompatibilityVersion` soit défini sur `7.0`. Pour cela, nous ouvrons un shell MongoDB et exécutons la commande `db.adminCommand({ setFeatureCompatibilityVersion: "7.0", confirm: true })`. Notez que cela nécessite désormais un paramètre supplémentaire `confirm: true`.

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

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

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

#### 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
* La commande `docker compose stop` pour arrêter le serveur
* Modifiez le fichier [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) pour utiliser `image: mongo:6.0` afin de 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 bien déroulée
* Modifiez le fichier [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) pour utiliser `image: sharelatex:VERSION` afin de 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 de la version de compatibilité des fonctionnalités de MongoDB. Si votre base de données MongoDB utilise l'authentification (par exemple l'authentification basique), il se peut que le conteneur `sharelatex` ne démarre pas et affiche une erreur de permission « *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 que l'échec de la vérification n'empêche pas le démarrage du déploiement.

<Check>
  Ce nouveau rôle accorde **uniquement** la permission de lire les paramètres du serveur MongoDB à l'échelle du cluster et peut être réutilisé à des fins de supervision.
</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.