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

# Uppdatera MongoDB

<Info>
  Varje ny version av Server CE/Server Pro anger eventuella ändringar av vilken MongoDB-version som stöds i sina [versionsinformationer](https://docs.overleaf.com/on-premises/release-notes).
</Info>

### Bör jag uppdatera MongoDB?

Du bör **endast** överväga att uppdatera din MongoDB-version om du planerar att uppgradera din instans av Server CE/Server Pro.

Om du kör en MongoDB-version som är nyare än den som rekommenderas för din nuvarande (eller planerade) version behöver du inte göra några ändringar.

<Warning>
  Du bör aldrig nedgradera din MongoDB-version.
</Warning>

Om du upplever ett specifikt problem som du tror kan bero på din nuvarande version av MongoDB får du gärna [skapa ett ärende](https://github.com/overleaf/overleaf/issues) om du använder Server CE, eller kontakta Overleaf Support om du använder Server Pro.

### Kontrollera din MongoDB-version

När du öppnar `mongo`-skalet bör den aktuella versionen skrivas ut direkt.

Användare av 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"
    }
}
```

Användare av 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"
    }
}

```

### Uppdateringsprocess

Så här uppdaterar du MongoDB-versionen i samband med en uppgradering av din Server CE/Server Pro-instans:

1. Bestäm vilken version av Server CE/Server Pro du planerar att uppgradera till.
2. Ta reda på vilken MongoDB-version som rekommenderas för just den versionen av Overleaf Server CE/Server Pro.
3. Följ instruktionerna för att uppgradera MongoDB till målversionen.
4. Uppgradera avbildningsversionen av Server CE/Server Pro och starta om instansen.

Vår rekommendation är att alltid uppgradera **Server CE/Server Pro** till den senaste tillgängliga versionen, eftersom den alltid garanterat stöds (gäller endast Server Pro-användare).

<Danger>
  När du uppgraderar Server CE/Pro rekommenderar vi att du uppgraderar till den senaste versionen av den installerade huvudversionen **innan** du uppgraderar till den senaste versionen av **nästa** huvudversion. Om din installation ligger mer än en huvudversion efter den senaste måste du utföra en uppgradering i flera steg.

  Om du till exempel kör 3.5.10 behöver du uppgradera till 3.5.13 -> utföra migreringen av Full Project History -> 4.2.9 -> 5.5.4.

  Du bör **aldrig** hoppa över huvudversioner (3.5.10 -> 5.5.4). Om du använder Toolkit och ligger mer än en huvudversion efter den senaste får du **inte** använda skriptet `bin/upgrade`, eftersom du måste utföra en manuell uppgradering i flera steg.
</Danger>

<Warning>
  Det är viktigt att du tar en [konsekvent säkerhetskopia](/sv/on-premises/maintenance/data-and-backups#performing-a-consistent-backup) **före** varje uppgradering av huvudversion, så att du kan återgå om det skulle behövas.
</Warning>

#### Information om versionsstöd

Om du väljer att gå till en tidigare version visar den här tabellen vilken MongoDB-version som rekommenderas för tidigare versioner av Server CE/Server Pro, men du bör **aldrig** nedgradera din MongoDB-version.

<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" }}>MongoDB-version</th><th style={{ textAlign: "center" }}>Minsta funktionskompatibilitetsversion</th><th style={{ textAlign: "center" }}>Högsta version som stöds av Node.js-drivrutinen</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 till 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>
  Den minsta funktionskompatibilitetsversionen ovan baseras på den MongoDB-version som rekommenderas för användning med den angivna versionen av Overleaf. Om du planerar att använda en högre version har MongoDB sina egna minimikrav.
</Danger>

Du kan se kompatibilitetstabellen som anger vilka versioner av MongoDB Node.js-drivrutinen som stöds för användning med MongoDB [här](https://www.mongodb.com/docs/drivers/node/current/reference/compatibility/).

Du kan se end-of-life-status för varje version av MongoDB [här](https://endoflife.date/mongodb).

#### Uppgradera MongoDB

MongoDB kräver **stegvisa uppgraderingar**. Det innebär att du inte kan gå direkt från, säg, `4.0` till `5.0`. Du måste först uppdatera från `4.2` till `4.4` och sedan till `5.0`.

<Info>
  MongoDB använder jämna nummer för sina stabila versioner.
</Info>

#### **Uppdateringsinstruktioner när MongoDB körs utanför Docker**

Här är länkar till uppdateringsinstruktionerna från mongodb.com för uppgradering av MongoDB.

* [MongoDB versionsinformation - uppgradera MongoDB från `4.2` till `4.4`](https://www.mongodb.com/docs/v4.4/release-notes/4.4-upgrade-standalone/)
* [MongoDB versionsinformation - uppgradera MongoDB från `4.4` till `5.0`](https://www.mongodb.com/docs/v5.0/release-notes/5.0-upgrade-replica-set/)
* [MongoDB versionsinformation - uppgradera MongoDB från `5.0` till `6.0`](https://www.mongodb.com/docs/v6.0/release-notes/6.0-upgrade-replica-set/)
* [MongoDB versionsinformation - uppgradera MongoDB från `6.0` till `7.0`](https://www.mongodb.com/docs/manual/release-notes/7.0-upgrade-replica-set/#std-label-7.0-upgrade-replica-set)
* [MongoDB versionsinformation - uppgradera MongoDB från `7.0` till `8.0`](https://www.mongodb.com/docs/manual/release-notes/8.0-upgrade-replica-set/#std-label-8.0-upgrade-replica-set)

<Info>
  Instruktionerna för `5.0` och senare avser en installation med replikuppsättning (replica set) i stället för en fristående installation. Eftersom Server Pro/CE 4.0.1+ använder transaktioner måste MongoDB köras som en replikuppsättning.
</Info>

<Warning>
  Dokumentationen för MongoDB 3.2 till 4.2 finns nu tillgänglig via [https://www.mongodb.com/docs/legacy/](https://www.mongodb.com/docs/legacy/)
</Warning>

**Grundläggande instruktioner**

I de flesta fall kräver uppdateringen att en kompatibilitetsflagga sätts innan mongo-versionen faktiskt uppdateras. Stegen är följande:

1. Sätt kompatibilitetsflaggan enligt beskrivningen i MongoDB:s versionsinformation (se exemplen nedan).
2. Uppdatera sedan mongo-avbildningen:
   1. **Toolkit-användare** Uppdatera `MONGO_VERSION`, t.ex. `MONGO_VERSION=6.0`
   2. **Docker Compose-användare** Uppdatera versionen i taggen för avbildningen `mongo`,\
      t.ex. `services -> mongo -> image: mongo:6.0`;

**Exempel: Uppgradera MongoDB från `5.0` till `6.0`**

Vi börjar med att kontrollera att vi kör MongoDB `6.0`:

Användare av Overleaf Toolkit:

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

Användare av Docker Compose:

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

Enligt [uppgraderingsinstruktionerna](https://docs.mongodb.com/manual/release-notes/3.6-upgrade-standalone/#upgrade-version-path) är det enda kravet att `featureCompatibilityVersion` är satt till `5.0`. Det gör vi genom att öppna ett MongoDB-skal och köra det angivna kommandot:

Användare av 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>
  Docker Compose-användare kan köra `docker compose exec mongo mongosh` för att få ett skal och köra samma kommandon som Toolkit-användare.
</Info>

Användare av Overleaf Toolkit:

Därefter stoppar vi Server CE/Server Pro- och MongoDB-instanserna med kommandot `bin/stop`, sätter `MONGO_VERSION=6.0` i `config/overleaf.rc` och startar sedan om tjänsten `mongo` med `bin/up mongo`) för att kontrollera att uppdateringen gick smidigt.

Slutligen uppdaterar vi avbildningsversionen av Server CE/Server Pro till vår målversion och återskapar alla tjänster med kommandot `bin/up -d`.

Användare av Docker Compose:

Därefter stoppar vi Server CE/Server Pro- och MongoDB-instanserna med kommandot `docker compose stop`, uppdaterar filen [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) så att den använder `image: mongo:6.0` och startar sedan om tjänsten `mongo` med kommandot `docker compose up mongo` för att kontrollera att uppdateringen gick smidigt.

Slutligen uppdaterar vi avbildningsversionen av Server CE/Server Pro till vår målversion och återskapar alla tjänster med kommandot `docker compose up`.

<strong>Exempel: Uppgradera MongoDB från `6.0` till `7.0` (Toolkit-användare)</strong>

Börja med att kontrollera att du kör MongoDB `6.0` med kommandona `mongod --version` ovan.

Enligt [uppgraderingsinstruktionerna](https://www.mongodb.com/docs/manual/release-notes/7.0-upgrade-replica-set/#std-label-7.0-upgrade-replica-set) är det enda kravet att `featureCompatibilityVersion` är satt till `6.0`. Det gör vi genom att öppna ett MongoDB-skal och köra kommandot `db.adminCommand({ setFeatureCompatibilityVersion: "6.0" })` .

Användare av Overleaf Toolkit:

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

Därefter stoppar vi Server CE/Server Pro- och MongoDB-instanserna med kommandot `bin/stop`, sätter `MONGO_VERSION=7.0` i `config/overleaf.rc` och startar sedan om tjänsten `mongo` med `bin/up mongo`) för att kontrollera att uppdateringen gick smidigt.

Slutligen uppdaterar vi avbildningsversionen av Server CE/Server Pro till vår målversion och återskapar alla tjänster med kommandot `bin/up -d`.

<strong>Exempel: Uppgradera MongoDB från `7.0` till `8.0` (Toolkit-användare)</strong>

Börja med att kontrollera att du kör MongoDB `7.0` med kommandona `mongod --version` ovan.

Enligt [uppgraderingsinstruktionerna](https://www.mongodb.com/docs/manual/release-notes/8.0-upgrade-replica-set/#std-label-8.0-upgrade-replica-set) är det enda kravet att `featureCompatibilityVersion` är satt till `7.0`. Det gör vi genom att öppna ett MongoDB-skal och köra kommandot `db.adminCommand({ setFeatureCompatibilityVersion: "7.0", confirm: true })`. Observera att detta nu kräver den extra parametern `confirm: true`.

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

Därefter stoppar vi Server CE/Server Pro- och MongoDB-instanserna med kommandot `bin/stop`, sätter `MONGO_VERSION=8.0` i `config/overleaf.rc` och startar sedan om tjänsten `mongo` med `bin/up mongo`) för att kontrollera att uppdateringen gick smidigt.

Slutligen uppdaterar vi avbildningsversionen av Server CE/Server Pro till vår målversion och återskapar alla tjänster med kommandot `bin/up -d`.

#### Motsvarande kommandon för Docker Compose-användare

För Docker Compose-användare är motsvarande kommandon:

* `docker compose exec mongo mongod --version` för att visa mongo-versionen
* `docker compose exec mongo mongosh` för att starta ett mongo-skal för administrationskommandon
* kommandot `docker compose stop` för att stoppa servern
* Redigera filen [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) så att den använder `image: mongo:6.0` för att uppgradera mongo-versionen
* `docker compose up mongo` för att starta om mongo-tjänsten och kontrollera att uppdateringen gick smidigt
* Redigera filen [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) så att den använder `image: sharelatex:VERSION` för att uppgradera avbildningsversionen
* `docker compose up` för att återskapa alla tjänster.

### Skapa en anpassad roll

I version `5.5.1` införde vi en kontroll vid uppstart som verifierar funktionskompatibilitetsversionen för MongoDB. Om din MongoDB-databas använder autentisering (t.ex. grundläggande autentisering) kan det hända att containern `sharelatex` inte startar och visar behörighetsfelet "*not authorized on admin to execute command*".

För att lösa detta kan du antingen skapa en ny roll i MongoDB och tilldela den till användarkontot som används för att komma åt databasen enligt instruktionerna nedan, eller sätta `ALLOW_MONGO_ADMIN_CHECK_FAILURES=true` så att kontrollen kan misslyckas utan att installationen hindras från att starta.

<Check>
  Den nya rollen ger **endast** behörighet att läsa klusteromfattande serverparametrar i MongoDB och kan även återanvändas för övervakningsändamål,
</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.