> For the complete documentation index, see [llms.txt](https://overleaf-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://overleaf-pro.ayaka.space/on-premises/it/manutenzione/updating-mongodb.md).

# Aggiornamento di MongoDB

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

### Devo aggiornare MongoDB?

Dovresti **solo** prendere in considerazione l'aggiornamento della tua versione di MongoDB solo se prevedi 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 alcuna modifica.

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

Se riscontri un problema specifico che pensi possa essere correlato alla tua versione attuale di MongoDB, sentiti libero di [aprire una segnalazione](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 versione di MongoDB

Aprendo la `mongo` shell verrà immediatamente stampata la versione corrente.

Utenti di Overleaf Toolkit:

```bash
bin/docker-compose exec mongo mongod --version
versione db v5.0.24
Info compilazione: {
    "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
versione db v5.0.24
Info compilazione: {
    "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"
    }
}

```

### Procedura 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 intendi eseguire l'aggiornamento.
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 principale distribuita **prima di** aggiornare all'ultima release della **successiva** versione principale. Se la tua distribuzione è indietro di più di una versione principale rispetto all'ultima, ti sarà richiesto di eseguire un aggiornamento in più passaggi.

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

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

{% hint style="warning" %}
È importante assicurarsi di eseguire un [backup coerente](/on-premises/it/manutenzione/data-and-backups.md#performing-a-consistent-backup) **prima di** a ogni aggiornamento di versione principale, per consentirti di tornare indietro se necessario.
{% endhint %}

#### Informazioni sul supporto delle versioni

Nel caso tu decida di passare a una versione precedente, questa tabella mostra la versione consigliata di MongoDB per le versioni precedenti di Server CE/Server Pro, ma dovresti **mai** non 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>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 intendi usare una versione più alta, MongoDB avrà il proprio requisito minimo.
{% endhint %}

Puoi visualizzare la tabella di compatibilità che specifica le versioni supportate del driver MongoDB Node.js da usare 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 passo**. Ciò significa che non puoi passare direttamente da, 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 esegui MongoDB al di fuori di Docker**

Ecco i collegamenti alle istruzioni di aggiornamento di mongodb.com quando aggiorni 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 versioni successive indicano un'installazione replica set, invece di standalone. Poiché Server Pro/CE 4.0.1+ usa 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 qui sotto).
2. Quindi aggiorna l'immagine di mongo:
   1. **Utenti di Toolkit** Aggiorna `MONGO_VERSION`, ad esempio `MONGO_VERSION=6.0`
   2. **Utenti di Docker Compose** Aggiorna la versione della `mongo` tag dell'immagine,\nad esempio `services -> mongo -> image: mongo:6.0`;

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

Cominciamo assicurandoci di eseguire MongoDB `6.0`:

Utenti di Overleaf Toolkit:

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

Utenti di Docker Compose:

```bash
docker compose exec mongo mongod --version
# versione db 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
# versione della shell MongoDB v5.0.24
# ...
# overleaf:PRIMARY> db.adminCommand( { setFeatureCompatibilityVersion: "5.0" } )
# { 
# "ok" : 1,
# ...
# }
overleaf:PRIMARY> exit
# ciao
```

{% 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 di Toolkit.
{% endhint %}

Utenti di Overleaf Toolkit:

Quindi arresteremo le istanze di Server CE/Server Pro e MongoDB usando il `bin/stop` comando, imposteremo `MONGO_VERSION=6.0` in `config/overleaf.rc`, e quindi riavvieremo il `mongo` servizio usando `bin/up mongo`) per verificare che l'aggiornamento sia avvenuto senza problemi.

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

Utenti di Docker Compose:

Quindi arresteremo 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) file per usare `image: mongo:6.0`, e quindi riavvieremo il `mongo` servizio usando il `docker compose up mongo` comando per verificare che l'aggiornamento sia avvenuto senza problemi.

Infine, aggiorneremo la versione dell'immagine di Server CE/Server Pro alla 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 di Toolkit)**

Inizia assicurandoti di eseguire MongoDB `6.0` usando il `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
# ciao
```

Quindi arresteremo le istanze di Server CE/Server Pro e MongoDB usando il `bin/stop` comando, imposteremo `MONGO_VERSION=7.0` in `config/overleaf.rc`, e quindi riavvieremo il `mongo` servizio usando `bin/up mongo`) per verificare che l'aggiornamento sia avvenuto senza problemi.

Infine, aggiorneremo la versione dell'immagine di Server CE/Server Pro alla 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 di Toolkit)**

Inizia assicurandoti di eseguire MongoDB `7.0` usando il `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
# ciao
```

Quindi arresteremo le istanze di Server CE/Server Pro e MongoDB usando il `bin/stop` comando, imposteremo `MONGO_VERSION=8.0` in `config/overleaf.rc`, e quindi riavvieremo il `mongo` servizio usando `bin/up mongo`) per verificare che l'aggiornamento sia avvenuto senza problemi.

Infine, aggiorneremo la versione dell'immagine di Server CE/Server Pro alla 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 di amministrazione
* `docker compose stop` comando per arrestare il server
* Modifica il [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) 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 avvenuto senza problemi
* Modifica il [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) 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à di MongoDB. Se il tuo database MongoDB usa l'autenticazione (ad es. autenticazione di base), il `sharelatex` contenitore potrebbe non avviarsi, mostrando un errore "*non autorizzato su admin per eseguire il comando*" di autorizzazione.

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

{% 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 di 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 l'autorizzazione a usare "getParamter". Copia e incolla la funzione qui sotto 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 qui sotto nella shell e premendo il tasto Invio 
db.grantRolesToUser(
  "{{YOUR-DATABASE-USER}}",
  [
    { role: "clusterParameterReader", db: "admin" }
  ]
);

# Digita exit, poi premi Invio per uscire dalla shell MongoDB
# Esegui bin/up -d per avviare lo stack di distribuzione
$ 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://overleaf-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.
