> 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/it/manutenzione/updating-mongodb.md).

# Aggiornamento di MongoDB

{% hint style="info" %}
Qualsiasi nuova release di Server CE/Server Pro indicherà qualsiasi modifica alla versione supportata di MongoDB nelle sue [note di rilascio](https://docs.overleaf.com/on-premises/release-notes).
{% endhint %}

### Dovrei aggiornare MongoDB?

Dovresti **solo** considerare di aggiornare la tua versione di MongoDB se hai in programma di aggiornare la tua istanza di Server CE/Server Pro.

Se stai eseguendo una versione di MongoDB più recente di quella consigliata per la tua versione attuale (o di destinazione), non è necessario apportare modifiche.

{% hint style="warning" %}
Non dovresti mai eseguire il downgrade della tua versione di MongoDB.
{% endhint %}

Se riscontri un problema specifico che ritieni possa essere مرتبطato alla tua versione attuale di MongoDB, sentiti libero di [segnalare un problema](https://github.com/overleaf/overleaf/issues) se sei un utente Server CE oppure contatta il Supporto Overleaf se sei un utente Server Pro.

### Verifica della tua versione di MongoDB

Aprendo la `mongo` shell dovrebbe stampare immediatamente la versione corrente.

Utenti di 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"
    }
}
```

Utenti di 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"
    }
}

```

### Processo di aggiornamento

L'aggiornamento della versione di MongoDB durante l'aggiornamento della tua istanza Server CE/Server Pro è il seguente:

1. Decidi a quale versione di Server CE/Server Pro prevedi di aggiornare.
2. Trova la versione di MongoDB consigliata da quella specifica release di Overleaf Server CE/Server Pro.
3. Segui le istruzioni per aggiornare MongoDB alla versione di destinazione.
4. Aggiorna la versione dell'immagine di Server CE/Server Pro e riavvia l'istanza.

La nostra raccomandazione è di aggiornare sempre **Server CE/Server Pro** alla versione più recente disponibile, poiché è sempre garantito che sia supportata (solo utenti Server Pro).

{% hint style="danger" %}
Quando esegui un aggiornamento di Server CE/Pro, consigliamo di aggiornare all'ultima release della versione major distribuita **prima** di aggiornare all'ultima release della **successiva** versione major. Se la tua distribuzione è indietro di più di una versione major rispetto all'ultima, sarà necessario eseguire un aggiornamento in più fasi.

Ad esempio, se stai eseguendo 3.5.10, dovrai aggiornare a 3.5.13 -> eseguire la migrazione completa della cronologia del progetto -> 4.2.9 -> 5.5.4.

Dovresti **mai** saltare versioni major (3.5.10 -> 5.5.4). Se stai usando il Toolkit e sei indietro di più di una versione major rispetto all'ultima, non devi **non** usare lo `bin/upgrade` script, perché dovrai eseguire un aggiornamento manuale in più fasi.
{% endhint %}

{% hint style="warning" %}
È importante assicurarti di eseguire un [backup consistente](/on-premises/it/manutenzione/data-and-backups.md#performing-a-consistent-backup) **prima** a ogni aggiornamento di versione major, per poterti consentire un rollback se necessario.
{% endhint %}

#### Informazioni sul supporto delle versioni

Nel caso decidessi di passare a una versione precedente, questa tabella mostra la versione consigliata di MongoDB per le release precedenti di Server CE/Server Pro, ma dovresti **mai** eseguire il downgrade della tua versione di MongoDB.

<table><thead><tr><th width="175">Server CE/Server Pro</th><th width="139" align="center">Versione di MongoDB</th><th align="center">Versione minima di compatibilità delle funzionalità</th><th align="center">Versione massima supportata dal driver 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>da 2.1.x a 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 versione minima di compatibilità delle funzionalità sopra indicata si basa sulla corrispondente versione di MongoDB consigliata per l'uso con la versione di Overleaf mostrata. Se prevedi di usare una versione superiore, MongoDB avrà il proprio requisito minimo.
{% endhint %}

Puoi visualizzare la tabella di compatibilità che specifica le versioni supportate del driver Node.js di MongoDB per l'uso con MongoDB [qui](https://www.mongodb.com/docs/drivers/node/current/reference/compatibility/).

Puoi visualizzare lo stato di fine vita di ciascuna versione di MongoDB [qui](https://endoflife.date/mongodb).

#### Aggiornamento di MongoDB

MongoDB richiede **aggiornamenti passo dopo passo**. Ciò significa che non puoi passare direttamente, ad esempio `4.0` a `5.0`. Devi prima aggiornare `4.2` a `4.4`, e poi `5.0`.

{% hint style="info" %}
MongoDB usa numeri pari per le sue versioni stabili.
{% endhint %}

#### **Istruzioni di aggiornamento quando si esegue MongoDB fuori da Docker**

Ecco i link alle istruzioni di aggiornamento di mongodb.com per l'aggiornamento di MongoDB.

* [Note di rilascio di MongoDB - aggiornamento di MongoDB da `4.2` a `4.4`](https://www.mongodb.com/docs/v4.4/release-notes/4.4-upgrade-standalone/)
* [Note di rilascio di MongoDB - aggiornamento di MongoDB da `4.4` a `5.0`](https://www.mongodb.com/docs/v5.0/release-notes/5.0-upgrade-replica-set/)
* [Note di rilascio di MongoDB - aggiornamento di MongoDB da `5.0` a `6.0`](https://www.mongodb.com/docs/v6.0/release-notes/6.0-upgrade-replica-set/)
* [Note di rilascio di MongoDB - aggiornamento di MongoDB da `6.0` a `7.0`](https://www.mongodb.com/docs/manual/release-notes/7.0-upgrade-replica-set/#std-label-7.0-upgrade-replica-set)
* [Note di rilascio di MongoDB - aggiornamento di MongoDB da `7.0` a `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" %}
Istruzioni per `5.0` e superiori indicano un'installazione come replica set, invece che standalone. Poiché Server Pro/CE 4.0.1+ utilizza transazioni, MongoDB deve essere eseguito come replica set.
{% endhint %}

{% hint style="warning" %}
La documentazione per MongoDB da 3.2 a 4.2 è ora disponibile tramite <https://www.mongodb.com/docs/legacy/>
{% endhint %}

**Istruzioni di base**

Nella maggior parte dei casi l'aggiornamento richiede di impostare un flag di compatibilità prima di aggiornare effettivamente la versione di mongo. I passaggi sono i seguenti:

1. Imposta il flag di compatibilità come descritto nelle note di rilascio di MongoDB (vedi gli esempi sotto).
2. Quindi aggiorna l'immagine mongo:
   1. **Utenti Toolkit** Aggiorna `MONGO_VERSION`, ad es. `MONGO_VERSION=6.0`
   2. **Utenti Docker Compose** Aggiorna la versione del `mongo` tag dell'immagine,\nad es. `services -> mongo -> image: mongo:6.0`;

**Esempio: aggiornamento di MongoDB da `5.0` a `6.0`**

Iniziamo assicurandoci di eseguire MongoDB `6.0`:

Utenti di Overleaf Toolkit:

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

Utenti di Docker Compose:

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

Secondo le [istruzioni di aggiornamento](https://docs.mongodb.com/manual/release-notes/3.6-upgrade-standalone/#upgrade-version-path), l'unico requisito è avere `featureCompatibilityVersion` impostato su `5.0`. Lo facciamo aprendo una shell MongoDB ed eseguendo il comando indicato:

Utenti di 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" %}
Gli utenti di Docker Compose possono eseguire `docker compose exec mongo mongosh` per ottenere una shell ed eseguire gli stessi comandi degli utenti Toolkit.
{% endhint %}

Utenti di Overleaf Toolkit:

Quindi fermeremo le istanze di Server CE/Server Pro e MongoDB usando il `bin/stop` comando, imposta `MONGO_VERSION=6.0` in `config/overleaf.rc`, e poi riavviare il `mongo` servizio usando `bin/up mongo`) per verificare che l'aggiornamento sia andato a buon fine.

Infine, aggiorneremo la versione dell'immagine di Server CE/Server Pro alla nostra versione di destinazione e ricreeremo tutti i servizi usando il `bin/up -d` comando.

Utenti di Docker Compose:

Quindi fermeremo le istanze di Server CE/Server Pro e MongoDB usando il `docker compose stop` comando, aggiorna [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) il file per usare `image: mongo:6.0`, e poi riavviare il `mongo` il servizio usando il `docker compose up mongo` comando per verificare che l'aggiornamento sia andato a buon fine.

Infine, aggiorneremo la versione dell'immagine di Server CE/Server Pro alla nostra versione di destinazione e ricreeremo tutti i servizi usando il `docker compose up` comando.

**Esempio: aggiornamento di MongoDB da `6.0` a `7.0` (utenti Toolkit)**

Inizia assicurandoti di eseguire MongoDB `6.0` usando i `mongod --version` comandi sopra.

Secondo le [istruzioni di aggiornamento](https://www.mongodb.com/docs/manual/release-notes/7.0-upgrade-replica-set/#std-label-7.0-upgrade-replica-set), l'unico requisito è avere `featureCompatibilityVersion` impostato su `6.0`. Lo facciamo aprendo una shell MongoDB ed eseguendo il comando `db.adminCommand({ setFeatureCompatibilityVersion: "6.0" })` .

Utenti di Overleaf Toolkit:

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

Quindi fermeremo le istanze di Server CE/Server Pro e MongoDB usando il `bin/stop` comando, imposta `MONGO_VERSION=7.0` in `config/overleaf.rc`, e poi riavviare il `mongo` servizio usando `bin/up mongo`) per verificare che l'aggiornamento sia andato a buon fine.

Infine, aggiorneremo la versione dell'immagine di Server CE/Server Pro alla nostra versione di destinazione e ricreeremo tutti i servizi usando il `bin/up -d` comando.

**Esempio: aggiornamento di MongoDB da `7.0` a `8.0` (utenti Toolkit)**

Inizia assicurandoti di eseguire MongoDB `7.0` usando i `mongod --version` comandi sopra.

Secondo le [istruzioni di aggiornamento](https://www.mongodb.com/docs/manual/release-notes/8.0-upgrade-replica-set/#std-label-8.0-upgrade-replica-set), l'unico requisito è avere `featureCompatibilityVersion` impostato su `7.0`. Lo facciamo aprendo una shell MongoDB ed eseguendo il comando `db.adminCommand({ setFeatureCompatibilityVersion: "7.0", confirm: true })`. Nota che ora richiede un ulteriore `confirm: true` parametro.

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

Quindi fermeremo le istanze di Server CE/Server Pro e MongoDB usando il `bin/stop` comando, imposta `MONGO_VERSION=8.0` in `config/overleaf.rc`, e poi riavviare il `mongo` servizio usando `bin/up mongo`) per verificare che l'aggiornamento sia andato a buon fine.

Infine, aggiorneremo la versione dell'immagine di Server CE/Server Pro alla nostra versione di destinazione e ricreeremo tutti i servizi usando il `bin/up -d` comando.

#### Comandi equivalenti per gli utenti di docker compose

Per gli utenti di docker compose, i comandi equivalenti sono:

* `docker compose exec mongo mongod --version` per visualizzare la versione di mongo
* `docker compose exec mongo mongosh` per avviare una shell mongo per i comandi amministrativi
* `docker compose stop` comando per fermare il server
* Modifica il [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) il file per usare `image: mongo:6.0` per aggiornare la versione di mongo
* `docker compose up mongo` per riavviare il servizio mongo e verificare che l'aggiornamento sia andato a buon fine
* Modifica il [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) il file per usare `image: sharelatex:VERSION` per aggiornare la versione dell'immagine
* `docker compose up` per ricreare tutti i servizi.

### Creazione di un ruolo personalizzato

Nella versione `5.5.1`, abbiamo introdotto un controllo all'avvio per verificare la versione di compatibilità delle funzionalità per MongoDB. Se il tuo database MongoDB usa l'autenticazione (ad esempio, autenticazione di base), il `sharelatex` container potrebbe non avviarsi, mostrando un errore di autorizzazione "*not authorized on admin to execute command*".

Per risolvere il problema, puoi creare un nuovo ruolo in MongoDB e assegnarlo all'account utente usato per accedere al database seguendo le istruzioni sotto, oppure impostare `ALLOW_MONGO_ADMIN_CHECK_FAILURES=true` per consentire al controllo di fallire senza impedire l'avvio del deployment.

{% hint style="success" %}
Questo nuovo ruolo **solo** concede l'autorizzazione a leggere i parametri del server MongoDB a livello di cluster e potrebbe essere riutilizzato per scopi di monitoraggio,
{% endhint %}

{% code overflow="wrap" %}

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

# Passa al database "admin" usando
overleaf [direct: primary] sharelatex> use admin
passato al db admin
overleaf [direct: primary] admin> 

# Crea un nuovo ruolo con il permesso di usare "getParamter". Copia e incolla la funzione seguente nella shell e premi il tasto Invio

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

# Torna al database "sharelatex" 
use sharelatex
passato al db sharelatex
overleaf [direct: primary] sharelatex> 

# Assegna il nuovo ruolo "clusterParameterReader" al tuo utente del database copiando e incollando la funzione seguente nella shell e premi il tasto Invio 
db.grantRolesToUser(
  "{{YOUR-DATABASE-USER}}",
  [
    { role: "clusterParameterReader", db: "admin" }
  ]
);

# Digita exit e poi premi Invio per uscire dalla shell di MongoDB
# Esegui bin/up -d per avviare lo stack di deployment
$ 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/it/manutenzione/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.
