> 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/on-premises-no/vedlikehold/updating-mongodb.md).

# Oppdatering av MongoDB

{% hint style="info" %}
Enhver ny utgivelse av Server CE/Server Pro vil angi eventuelle endringer i den støttede versjonen av MongoDB i sine [utgivelsesnotatene](https://docs.overleaf.com/on-premises/release-notes).
{% endhint %}

### Bør jeg oppdatere MongoDB?

Du bør **bare** vurdere å oppdatere MongoDB-versjonen din hvis du planlegger å oppgradere instansen din av Server CE/Server Pro.

Hvis du kjører en MongoDB-versjon som er nyere enn den som anbefales for din nåværende (eller mål-)versjon, trenger du ikke å gjøre noen endringer.

{% hint style="warning" %}
Du bør aldri nedgradere MongoDB-versjonen din.
{% endhint %}

Hvis du opplever et spesifikt problem som du tror kan være knyttet til din nåværende versjon av MongoDB, kan du gjerne [opprette en sak](https://github.com/overleaf/overleaf/issues) hvis du bruker Server CE, eller kontakte Overleaf Support hvis du bruker Server Pro.

### Kontrollerer MongoDB-versjonen din

Åpning av `mongo` skallet skal umiddelbart skrive ut gjeldende versjon.

Overleaf Toolkit-brukere:

```bash
bin/docker-compose exec mongo mongod --version
db-versjon 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"
    }
}
```

Docker Compose-brukere:

```bash
docker compose exec mongo mongod --version
db-versjon 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"
    }
}

```

### Oppdateringsprosess

Oppdatering av MongoDB-versjonen under en oppgradering av Server CE/Server Pro-instansen din gjøres slik:

1. Bestem hvilken versjon av Server CE/Server Pro du planlegger å oppgradere til.
2. Finn MongoDB-versjonen som anbefales av den spesifikke Overleaf Server CE/Server Pro-utgivelsen.
3. Følg instruksjonene for å oppgradere MongoDB til målversjonen.
4. Oppgrader image-versjonen for Server CE/Server Pro og start instansen på nytt.

Vår anbefaling er alltid å oppgradere **Server CE/Server Pro** til den nyeste tilgjengelige versjonen, siden den alltid er garantert å være støttet (kun for Server Pro-brukere).

{% hint style="danger" %}
Når du oppgraderer Server CE/Pro, anbefaler vi å oppgradere til den nyeste utgivelsen av den installerte hovedversjonen **før** du oppgraderer til den nyeste utgivelsen av den **neste** hovedversjonen. Hvis installasjonen din er mer enn én hovedversjon bak den nyeste, må du utføre en flertrinns oppgradering.

For eksempel, hvis du kjører 3.5.10, må du oppgradere til 3.5.13 -> Utfør Full Project History-migreringen -> 4.2.9 -> 5.5.4.

Du bør **aldri** hoppe over hovedversjoner (3.5.10 -> 5.5.4). Hvis du bruker Toolkit, og er mer enn én hovedversjon bak den nyeste, må du **ikke** bruke `bin/upgrade` skriptet, ettersom du må utføre en manuell flertrinns oppgradering.
{% endhint %}

{% hint style="warning" %}
Det er viktig å sørge for at du tar en [konsistent sikkerhetskopi](/on-premises/on-premises-no/vedlikehold/data-and-backups.md#performing-a-consistent-backup) **før** ved hver oppgradering av hovedversjonen, slik at du kan rulle tilbake hvis du skulle trenge det.
{% endhint %}

#### Informasjon om versjonsstøtte

Hvis du bestemmer deg for å gå tilbake til en tidligere versjon, viser denne tabellen den anbefalte MongoDB-versjonen for tidligere utgivelser av Server CE/Server Pro, men du bør **aldri** nedgradere MongoDB-versjonen din.

<table><thead><tr><th width="175">Server CE/Server Pro</th><th width="139" align="center">MongoDB-versjon</th><th align="center">Minimum versjon for funksjonskompatibilitet</th><th align="center">Maksimal versjon støttet av Node.js-driveren</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 til 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" %}
Minimumsversjonen for funksjonskompatibilitet ovenfor er basert på den tilsvarende MongoDB-versjonen som anbefales for bruk med den viste versjonen av Overleaf. Hvis du planlegger å bruke en høyere versjon, vil MongoDB ha sitt eget minimumskrav.
{% endhint %}

Du kan se kompatibilitetstabellen som angir hvilke versjoner av MongoDB Node.js-driveren som støttes for bruk med MongoDB [her](https://www.mongodb.com/docs/drivers/node/current/reference/compatibility/).

Du kan se status for slutten av levetiden for hver versjon av MongoDB [her](https://endoflife.date/mongodb).

#### Oppgradering av MongoDB

MongoDB krever **trinnvise oppgraderinger**. Det betyr at du ikke kan gå direkte fra, la oss si `4.0` til `5.0`. Du må først oppdatere `4.2` til `4.4`, og deretter `5.0`.

{% hint style="info" %}
MongoDB bruker partall for de stabile versjonene sine.
{% endhint %}

#### **Oppdateringsinstruksjoner når du kjører MongoDB utenfor Docker**

Her er lenker til oppdateringsinstruksjonene fra mongodb.com når du oppgraderer MongoDB.

* [MongoDB utgivelsesnotater - oppgradering av MongoDB fra `4.2` til `4.4`](https://www.mongodb.com/docs/v4.4/release-notes/4.4-upgrade-standalone/)
* [MongoDB utgivelsesnotater - oppgradering av MongoDB fra `4.4` til `5.0`](https://www.mongodb.com/docs/v5.0/release-notes/5.0-upgrade-replica-set/)
* [MongoDB utgivelsesnotater - oppgradering av MongoDB fra `5.0` til `6.0`](https://www.mongodb.com/docs/v6.0/release-notes/6.0-upgrade-replica-set/)
* [MongoDB utgivelsesnotater - oppgradering av MongoDB fra `6.0` til `7.0`](https://www.mongodb.com/docs/manual/release-notes/7.0-upgrade-replica-set/#std-label-7.0-upgrade-replica-set)
* [MongoDB utgivelsesnotater - oppgradering av MongoDB fra `7.0` til `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" %}
Instruksjoner for `5.0` og høyere peker til en installasjon med replika-sett, i stedet for frittstående. Siden Server Pro/CE 4.0.1+ bruker transaksjoner, må MongoDB kjøres som et replika-sett.
{% endhint %}

{% hint style="warning" %}
Dokumentasjon for MongoDB 3.2 til 4.2 er nå tilgjengelig via <https://www.mongodb.com/docs/legacy/>
{% endhint %}

**Grunnleggende instruksjoner**

I de fleste tilfeller krever oppdateringen at du setter opp en kompatibilitetsflagg før du faktisk oppdaterer mongo-versjonen. Stegene er som følger:

1. Sett kompatibilitetsflagget som beskrevet i MongoDBs utgivelsesnotater (se eksemplene nedenfor).
2. Deretter oppdaterer du mongo-imaget:
   1. **Toolkit-brukere** Oppdater `MONGO_VERSION`, f.eks. `MONGO_VERSION=6.0`
   2. **Docker Compose-brukere** Oppdater versjonen av `mongo` image-tagen,\
      f.eks. `services -> mongo -> image: mongo:6.0`;

**Eksempel: Oppgradering av MongoDB fra `5.0` til `6.0`**

La oss starte med å sørge for at vi kjører MongoDB `6.0`:

Overleaf Toolkit-brukere:

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

Docker Compose-brukere:

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

I henhold til [oppgraderingsinstruksjonene](https://docs.mongodb.com/manual/release-notes/3.6-upgrade-standalone/#upgrade-version-path), er det eneste kravet å ha `featureCompatibilityVersion` satt til `5.0`. Vi gjør dette ved å åpne et MongoDB-skall og kjøre den angitte kommandoen:

Overleaf Toolkit-brukere:

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

{% hint style="info" %}
Docker Compose-brukere kan kjøre `docker compose exec mongo mongosh` for å få et skall og kjøre de samme kommandoene som Toolkit-brukere.
{% endhint %}

Overleaf Toolkit-brukere:

Deretter stopper vi Server CE/Server Pro- og MongoDB-instansene ved å bruke `bin/stop` kommandoen, sette `MONGO_VERSION=6.0` i `config/overleaf.rc`, og deretter starte `mongo` tjenesten på nytt ved å bruke `bin/up mongo`) for å bekrefte at oppdateringen gikk knirkefritt.

Til slutt oppdaterer vi image-versjonen for Server CE/Server Pro til målversjonen vår og oppretter alle tjenestene på nytt ved å bruke `bin/up -d` kommandoen.

Docker Compose-brukere:

Deretter stopper vi Server CE/Server Pro- og MongoDB-instansene ved å bruke `docker compose stop` kommandoen, oppdater [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) filen til å bruke `image: mongo:6.0`, og deretter starte `mongo` tjenesten ved å bruke `docker compose up mongo` kommandoen for å bekrefte at oppdateringen gikk knirkefritt.

Til slutt oppdaterer vi image-versjonen for Server CE/Server Pro til målversjonen vår og oppretter alle tjenestene på nytt ved å bruke `docker compose up` kommandoen.

**Eksempel: Oppgradering av MongoDB fra `6.0` til `7.0` (Toolkit-brukere)**

Start med å sørge for at du kjører MongoDB `6.0` ved å bruke `mongod --version` kommandoene ovenfor.

I henhold til [oppgraderingsinstruksjonene](https://www.mongodb.com/docs/manual/release-notes/7.0-upgrade-replica-set/#std-label-7.0-upgrade-replica-set), er det eneste kravet å ha `featureCompatibilityVersion` satt til `6.0`. Vi gjør dette ved å åpne et MongoDB-skall og kjøre kommandoen `db.adminCommand({ setFeatureCompatibilityVersion: "6.0" })` .

Overleaf Toolkit-brukere:

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

Deretter stopper vi Server CE/Server Pro- og MongoDB-instansene ved å bruke `bin/stop` kommandoen, sette `MONGO_VERSION=7.0` i `config/overleaf.rc`, og deretter starte `mongo` tjenesten på nytt ved å bruke `bin/up mongo`) for å bekrefte at oppdateringen gikk knirkefritt.

Til slutt oppdaterer vi image-versjonen for Server CE/Server Pro til målversjonen vår og oppretter alle tjenestene på nytt ved å bruke `bin/up -d` kommandoen.

**Eksempel: Oppgradering av MongoDB fra `7.0` til `8.0` (Toolkit-brukere)**

Start med å sørge for at du kjører MongoDB `7.0` ved å bruke `mongod --version` kommandoene ovenfor.

I henhold til [oppgraderingsinstruksjonene](https://www.mongodb.com/docs/manual/release-notes/8.0-upgrade-replica-set/#std-label-8.0-upgrade-replica-set), er det eneste kravet å ha `featureCompatibilityVersion` satt til `7.0`. Vi gjør dette ved å åpne et MongoDB-skall og kjøre kommandoen `db.adminCommand({ setFeatureCompatibilityVersion: "7.0", confirm: true })`. Merk at dette nå krever en ekstra `confirm: true` parameter.

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

Deretter stopper vi Server CE/Server Pro- og MongoDB-instansene ved å bruke `bin/stop` kommandoen, sette `MONGO_VERSION=8.0` i `config/overleaf.rc`, og deretter starte `mongo` tjenesten på nytt ved å bruke `bin/up mongo`) for å bekrefte at oppdateringen gikk knirkefritt.

Til slutt oppdaterer vi image-versjonen for Server CE/Server Pro til målversjonen vår og oppretter alle tjenestene på nytt ved å bruke `bin/up -d` kommandoen.

#### Tilsvarende kommandoer for docker compose-brukere

For Docker Compose-brukere er de tilsvarende kommandoene:

* `docker compose exec mongo mongod --version` for å vise mongo-versjonen
* `docker compose exec mongo mongosh` for å starte et mongo-skall for admin-kommandoer
* `docker compose stop` kommandoen for å stoppe serveren
* Rediger [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) filen til å bruke `image: mongo:6.0` for å oppgradere mongo-versjonen
* `docker compose up mongo` for å starte mongo-tjenesten på nytt og bekrefte at oppdateringen gikk knirkefritt
* Rediger [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) filen til å bruke `image: sharelatex:VERSION` for å oppgradere image-versjonen
* `docker compose up` for å opprette alle tjenestene på nytt.

### Opprette en egendefinert rolle

I versjon `5.5.1`, innførte vi en oppstartssjekk for å verifisere versjonen for funksjonskompatibilitet for MongoDB. Hvis MongoDB-databasen din bruker autentisering (f.eks. grunnleggende autentisering), kan `sharelatex` containeren kanskje ikke starte, og vise en "*not authorized on admin to execute command*" tillatelsesfeil.

For å løse dette kan du enten opprette en ny rolle i MongoDB og tildele den til brukerkontoen som brukes til å få tilgang til databasen, ved å bruke instruksjonene nedenfor, eller sette `ALLOW_MONGO_ADMIN_CHECK_FAILURES=true` for å la sjekken feile uten å hindre at utrullingen starter.

{% hint style="success" %}
Denne nye rollen **bare** gir tillatelse til å lese MongoDB-serverparametere på klyngenivå og kan gjenbrukes til overvåkingsformål,
{% endhint %}

{% code overflow="wrap" %}

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

# Bytt til "admin"-databasen ved å bruke
overleaf [direct: primary] sharelatex> use admin
byttet til db admin
overleaf [direct: primary] admin> 

# Opprett en ny rolle med tillatelse til å bruke "getParamter". Kopier og lim inn funksjonen nedenfor i skallet, og trykk retur-tasten

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

# Bytt tilbake til "sharelatex"-databasen 
use sharelatex
byttet til db sharelatex
overleaf [direct: primary] sharelatex> 

# Tildel den nye rollen "clusterParameterReader" til databasebrukeren din ved å kopiere og lime inn funksjonen nedenfor i skallet, og trykke retur-tasten 
db.grantRolesToUser(
  "{{YOUR-DATABASE-USER}}",
  [
    { role: "clusterParameterReader", db: "admin" }
  ]
);

# Skriv exit og trykk deretter retur for å avslutte MongoDB-skallet
# Kjør bin/up -d for å starte utrullingsstakken
$ 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/on-premises-no/vedlikehold/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.
