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

# Opdatering af MongoDB

<Info>
  Enhver ny udgivelse af Server CE/Server Pro angiver eventuelle ændringer i den understøttede version af MongoDB i sine [udgivelsesnoter](https://docs.overleaf.com/on-premises/release-notes).
</Info>

### Bør jeg opdatere MongoDB?

Du bør **kun** overveje at opdatere din MongoDB-version, hvis du planlægger at opgradere din instans af Server CE/Server Pro.

Hvis du kører en MongoDB-version, der er nyere end den anbefalede for din nuværende (eller ønskede) version, er der ingen grund til at foretage ændringer.

<Warning>
  Du bør aldrig nedgradere din MongoDB-version.
</Warning>

Hvis du oplever et specifikt problem, som du tror kan hænge sammen med din nuværende version af MongoDB, er du velkommen til at [oprette et issue](https://github.com/overleaf/overleaf/issues), hvis du er Server CE-bruger, eller kontakte Overleaf Support, hvis du er Server Pro-bruger.

### Kontrol af din MongoDB-version

Når du åbner `mongo`-shellen, bør den aktuelle version blive vist med det samme.

Brugere af 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"
    }
}
```

Brugere af 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"
    }
}

```

### Opdateringsprocessen

Opdatering af MongoDB-versionen i forbindelse med en opgradering af din Server CE/Server Pro-instans foregår således:

1. Beslut, hvilken version af Server CE/Server Pro du vil opgradere til.
2. Find den version af MongoDB, som den pågældende udgivelse af Overleaf Server CE/Server Pro anbefaler.
3. Følg instruktionerne for at opgradere MongoDB til den ønskede version.
4. Opgrader Server CE/Server Pro-imagets version, og genstart instansen.

Vores anbefaling er altid at opgradere **Server CE/Server Pro** til den nyeste tilgængelige version, da den altid er garanteret understøttet (kun Server Pro-brugere).

<Danger>
  Når du opgraderer Server CE/Pro, anbefaler vi at opgradere til den nyeste udgivelse af den installerede hovedversion, **før** du opgraderer til den nyeste udgivelse af den **næste** hovedversion. Hvis din installation er mere end én hovedversion bagud i forhold til den nyeste, skal du udføre en opgradering i flere trin.

  Hvis du for eksempel kører 3.5.10, skal du opgradere til 3.5.13 -> udføre migreringen af Full Project History -> 4.2.9 -> 5.5.4.

  Du bør **aldrig** springe hovedversioner over (3.5.10 -> 5.5.4). Hvis du bruger Toolkit og er mere end én hovedversion bagud, må du **ikke** bruge scriptet `bin/upgrade`, da du skal udføre en manuel opgradering i flere trin.
</Danger>

<Warning>
  Det er vigtigt, at du tager en [konsistent sikkerhedskopi](/da/on-premises/maintenance/data-and-backups#performing-a-consistent-backup) **før** hver opgradering af hovedversion, så du kan rulle tilbage, hvis det bliver nødvendigt.
</Warning>

#### Oplysninger om versionsunderstøttelse

Hvis du beslutter dig for at gå til en tidligere version, viser denne tabel den anbefalede version af MongoDB for tidligere udgivelser af Server CE/Server Pro, men du bør **aldrig** nedgradere 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" }}>Mindste funktionskompatibilitetsversion</th><th style={{ textAlign: "center" }}>Højeste version understøttet af Node.js-driveren</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 til 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 mindste funktionskompatibilitetsversion ovenfor er baseret på den tilsvarende MongoDB-version, der anbefales til brug med den viste version af Overleaf. Hvis du planlægger at bruge en højere version, har MongoDB sit eget minimumskrav.
</Danger>

Du kan se kompatibilitetstabellen, der angiver de understøttede versioner af MongoDB Node.js-driveren til brug med MongoDB, [her](https://www.mongodb.com/docs/drivers/node/current/reference/compatibility/).

Du kan se end-of-life-status for hver version af MongoDB [her](https://endoflife.date/mongodb).

#### Opgradering af MongoDB

MongoDB kræver **trinvise opgraderinger**. Det betyder, at du ikke kan gå direkte fra f.eks. `4.0` til `5.0`. Du skal først opdatere `4.2` til `4.4` og derefter til `5.0`.

<Info>
  MongoDB bruger lige tal til sine stabile versioner.
</Info>

#### **Opdateringsinstruktioner, når MongoDB kører uden for Docker**

Her er links til opdateringsinstruktionerne fra mongodb.com til opgradering af MongoDB.

* [MongoDB-udgivelsesnoter - opgradering af MongoDB fra `4.2` til `4.4`](https://www.mongodb.com/docs/v4.4/release-notes/4.4-upgrade-standalone/)
* [MongoDB-udgivelsesnoter - opgradering af MongoDB fra `4.4` til `5.0`](https://www.mongodb.com/docs/v5.0/release-notes/5.0-upgrade-replica-set/)
* [MongoDB-udgivelsesnoter - opgradering af MongoDB fra `5.0` til `6.0`](https://www.mongodb.com/docs/v6.0/release-notes/6.0-upgrade-replica-set/)
* [MongoDB-udgivelsesnoter - opgradering af 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-udgivelsesnoter - opgradering af 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)

<Info>
  Instruktionerne for `5.0` og nyere henviser til en installation som replica set i stedet for standalone. Da Server Pro/CE 4.0.1+ bruger transaktioner, skal MongoDB køres som et replica set.
</Info>

<Warning>
  Dokumentationen til MongoDB 3.2 til 4.2 er nu tilgængelig via [https://www.mongodb.com/docs/legacy/](https://www.mongodb.com/docs/legacy/)
</Warning>

**Grundlæggende instruktioner**

I de fleste tilfælde kræver opdateringen, at der sættes et kompatibilitetsflag, før mongo-versionen faktisk opdateres. Trinene er som følger:

1. Sæt kompatibilitetsflaget som beskrevet i MongoDB-udgivelsesnoterne (se eksemplerne nedenfor).
2. Opdater derefter mongo-imaget:
   1. **Toolkit-brugere** Opdater `MONGO_VERSION`, f.eks. `MONGO_VERSION=6.0`
   2. **Docker Compose-brugere** Opdater versionen i `mongo`-imagets tag,\
      f.eks. `services -> mongo -> image: mongo:6.0`;

**Eksempel: Opgradering af MongoDB fra `5.0` til `6.0`**

Lad os starte med at sikre os, at vi kører MongoDB `6.0`:

Brugere af Overleaf Toolkit:

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

Brugere af Docker Compose:

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

Ifølge [opgraderingsinstruktionerne](https://docs.mongodb.com/manual/release-notes/3.6-upgrade-standalone/#upgrade-version-path) er det eneste krav, at `featureCompatibilityVersion` er sat til `5.0`. Det gør vi ved at åbne en MongoDB-shell og køre den angivne kommando:

Brugere af 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-brugere kan køre `docker compose exec mongo mongosh` for at få en shell og køre de samme kommandoer som Toolkit-brugere.
</Info>

Brugere af Overleaf Toolkit:

Derefter stopper vi Server CE/Server Pro- og MongoDB-instanserne med kommandoen `bin/stop`, sætter `MONGO_VERSION=6.0` i `config/overleaf.rc` og genstarter derefter `mongo`-tjenesten med `bin/up mongo`) for at kontrollere, at opdateringen gik glat.

Til sidst opdaterer vi Server CE/Server Pro-imagets version til vores ønskede version og genopretter alle tjenesterne med kommandoen `bin/up -d`.

Brugere af Docker Compose:

Derefter stopper vi Server CE/Server Pro- og MongoDB-instanserne med kommandoen `docker compose stop`, opdaterer filen [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) til at bruge `image: mongo:6.0` og genstarter derefter `mongo`-tjenesten med kommandoen `docker compose up mongo` for at kontrollere, at opdateringen gik glat.

Til sidst opdaterer vi Server CE/Server Pro-imagets version til vores ønskede version og genopretter alle tjenester med kommandoen `docker compose up`.

<strong>Eksempel: Opgradering af MongoDB fra `6.0` til `7.0` (Toolkit-brugere)</strong>

Start med at sikre dig, at du kører MongoDB `6.0`, ved hjælp af `mongod --version`-kommandoerne ovenfor.

Ifølge [opgraderingsinstruktionerne](https://www.mongodb.com/docs/manual/release-notes/7.0-upgrade-replica-set/#std-label-7.0-upgrade-replica-set) er det eneste krav, at `featureCompatibilityVersion` er sat til `6.0`. Det gør vi ved at åbne en MongoDB-shell og køre kommandoen `db.adminCommand({ setFeatureCompatibilityVersion: "6.0" })`.

Brugere af Overleaf Toolkit:

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

Derefter stopper vi Server CE/Server Pro- og MongoDB-instanserne med kommandoen `bin/stop`, sætter `MONGO_VERSION=7.0` i `config/overleaf.rc` og genstarter derefter `mongo`-tjenesten med `bin/up mongo`) for at kontrollere, at opdateringen gik glat.

Til sidst opdaterer vi Server CE/Server Pro-imagets version til vores ønskede version og genopretter alle tjenesterne med kommandoen `bin/up -d`.

<strong>Eksempel: Opgradering af MongoDB fra `7.0` til `8.0` (Toolkit-brugere)</strong>

Start med at sikre dig, at du kører MongoDB `7.0`, ved hjælp af `mongod --version`-kommandoerne ovenfor.

Ifølge [opgraderingsinstruktionerne](https://www.mongodb.com/docs/manual/release-notes/8.0-upgrade-replica-set/#std-label-8.0-upgrade-replica-set) er det eneste krav, at `featureCompatibilityVersion` er sat til `7.0`. Det gør vi ved at åbne en MongoDB-shell og køre kommandoen `db.adminCommand({ setFeatureCompatibilityVersion: "7.0", confirm: true })`. Bemærk, at dette nu kræver en ekstra parameter, `confirm: true`.

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

Derefter stopper vi Server CE/Server Pro- og MongoDB-instanserne med kommandoen `bin/stop`, sætter `MONGO_VERSION=8.0` i `config/overleaf.rc` og genstarter derefter `mongo`-tjenesten med `bin/up mongo`) for at kontrollere, at opdateringen gik glat.

Til sidst opdaterer vi Server CE/Server Pro-imagets version til vores ønskede version og genopretter alle tjenesterne med kommandoen `bin/up -d`.

#### Tilsvarende kommandoer for Docker Compose-brugere

For Docker Compose-brugere er de tilsvarende kommandoer:

* `docker compose exec mongo mongod --version` for at vise mongo-versionen
* `docker compose exec mongo mongosh` for at starte en mongo-shell til administratorkommandoer
* Kommandoen `docker compose stop` for at stoppe serveren
* Rediger filen [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) til at bruge `image: mongo:6.0` for at opgradere mongo-versionen
* `docker compose up mongo` for at genstarte mongo-tjenesten og kontrollere, at opdateringen gik glat
* Rediger filen [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) til at bruge `image: sharelatex:VERSION` for at opgradere imagets version
* `docker compose up` for at genoprette alle tjenester.

### Oprettelse af en brugerdefineret rolle

I version `5.5.1` introducerede vi en kontrol ved opstart, der verificerer MongoDB's funktionskompatibilitetsversion. Hvis din MongoDB-database bruger godkendelse (f.eks. basic authentication), starter `sharelatex`-containeren muligvis ikke og viser en rettighedsfejl af typen "*not authorized on admin to execute command*".

For at løse dette kan du enten oprette en ny rolle i MongoDB og tildele den til den brugerkonto, der bruges til at tilgå databasen, ved hjælp af instruktionerne nedenfor, eller sætte `ALLOW_MONGO_ADMIN_CHECK_FAILURES=true` for at tillade, at kontrollen mislykkes, uden at det forhindrer installationen i at starte.

<Check>
  Denne nye rolle giver **kun** tilladelse til at læse klyngedækkende MongoDB-serverparametre og kan genbruges til overvågningsformå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.