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

# MongoDB aktualisieren

<Info>
  Jede neue Version von Server CE/Server Pro weist in ihren [Release Notes](https://docs.overleaf.com/on-premises/release-notes) auf Änderungen der unterstützten MongoDB-Version hin.
</Info>

### Sollte ich MongoDB aktualisieren?

Sie sollten eine Aktualisierung Ihrer MongoDB-Version **nur** in Betracht ziehen, wenn Sie planen, Ihre Server CE/Server Pro-Instanz zu aktualisieren.

Wenn Sie eine MongoDB-Version verwenden, die neuer ist als die für Ihre aktuelle (oder angestrebte) Version empfohlene, sind keine Änderungen erforderlich.

<Warning>
  Sie sollten Ihre MongoDB-Version niemals herabstufen.
</Warning>

Wenn Sie ein bestimmtes Problem haben, das Ihrer Meinung nach mit Ihrer aktuellen MongoDB-Version zusammenhängt, können Sie gerne [ein Issue erstellen](https://github.com/overleaf/overleaf/issues), wenn Sie Server CE nutzen, oder sich an den Overleaf-Support wenden, wenn Sie Server Pro nutzen.

### Ihre MongoDB-Version prüfen

Beim Öffnen der `mongo`-Shell sollte sofort die aktuelle Version ausgegeben werden.

Nutzer des 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"
    }
}
```

Nutzer von 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"
    }
}

```

### Ablauf der Aktualisierung

Die Aktualisierung der MongoDB-Version im Rahmen eines Upgrades Ihrer Server CE/Server Pro-Instanz läuft wie folgt ab:

1. Legen Sie fest, auf welche Version von Server CE/Server Pro Sie upgraden möchten.
2. Ermitteln Sie die MongoDB-Version, die für dieses konkrete Overleaf Server CE/Server Pro-Release empfohlen wird.
3. Folgen Sie den Anweisungen, um MongoDB auf die Zielversion zu aktualisieren.
4. Aktualisieren Sie die Image-Version von Server CE/Server Pro und starten Sie die Instanz neu.

Wir empfehlen, **Server CE/Server Pro** immer auf die neueste verfügbare Version zu aktualisieren, da deren Unterstützung stets garantiert ist (nur für Server Pro-Nutzer).

<Danger>
  Bei einem Upgrade von Server CE/Pro empfehlen wir, zunächst auf das neueste Release der bereitgestellten Hauptversion zu aktualisieren, **bevor** Sie auf das neueste Release der **nächsten** Hauptversion upgraden. Liegt Ihre Bereitstellung mehr als eine Hauptversion hinter der neuesten zurück, müssen Sie ein mehrstufiges Upgrade durchführen.

  Wenn Sie beispielsweise 3.5.10 verwenden, müssen Sie auf 3.5.13 upgraden -> die Migration des vollständigen Projektverlaufs durchführen -> 4.2.9 -> 5.5.4.

  Sie sollten **niemals** Hauptversionen überspringen (3.5.10 -> 5.5.4). Wenn Sie das Toolkit verwenden und mehr als eine Hauptversion hinter der neuesten liegen, dürfen Sie das Skript `bin/upgrade` **nicht** verwenden, da Sie ein manuelles, mehrstufiges Upgrade durchführen müssen.
</Danger>

<Warning>
  Es ist wichtig, **vor** jedem Hauptversions-Upgrade ein [konsistentes Backup](/de/on-premises/maintenance/data-and-backups#performing-a-consistent-backup) zu erstellen, damit Sie bei Bedarf ein Rollback durchführen können.
</Warning>

#### Informationen zur Versionsunterstützung

Falls Sie sich für eine ältere Version entscheiden, zeigt diese Tabelle die empfohlene MongoDB-Version für frühere Releases von Server CE/Server Pro. Sie sollten Ihre MongoDB-Version jedoch **niemals** herabstufen.

<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" }}>Minimale Feature Compatibility Version</th><th style={{ textAlign: "center" }}>Maximal vom Node.js-Treiber unterstützte Version</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 bis 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>
  Die oben angegebene minimale Feature Compatibility Version basiert auf der MongoDB-Version, die für die jeweils gezeigte Overleaf-Version empfohlen wird. Wenn Sie eine höhere Version verwenden möchten, gelten die eigenen Mindestanforderungen von MongoDB.
</Danger>

Die Kompatibilitätstabelle mit den unterstützten Versionen des MongoDB-Node.js-Treibers für die Verwendung mit MongoDB finden Sie [hier](https://www.mongodb.com/docs/drivers/node/current/reference/compatibility/).

Den End-of-Life-Status der einzelnen MongoDB-Versionen finden Sie [hier](https://endoflife.date/mongodb).

#### MongoDB upgraden

MongoDB erfordert **schrittweise Upgrades**. Das bedeutet, dass Sie nicht direkt von beispielsweise `4.0` auf `5.0` wechseln können. Sie müssen zunächst von `4.2` auf `4.4` und anschließend auf `5.0` aktualisieren.

<Info>
  MongoDB verwendet gerade Versionsnummern für stabile Versionen.
</Info>

#### **Anweisungen zur Aktualisierung, wenn MongoDB außerhalb von Docker läuft**

Hier finden Sie Links zu den Aktualisierungsanweisungen von mongodb.com für das Upgrade von MongoDB.

* [MongoDB-Release-Notes – Upgrade von MongoDB `4.2` auf `4.4`](https://www.mongodb.com/docs/v4.4/release-notes/4.4-upgrade-standalone/)
* [MongoDB-Release-Notes – Upgrade von MongoDB `4.4` auf `5.0`](https://www.mongodb.com/docs/v5.0/release-notes/5.0-upgrade-replica-set/)
* [MongoDB-Release-Notes – Upgrade von MongoDB `5.0` auf `6.0`](https://www.mongodb.com/docs/v6.0/release-notes/6.0-upgrade-replica-set/)
* [MongoDB-Release-Notes – Upgrade von MongoDB `6.0` auf `7.0`](https://www.mongodb.com/docs/manual/release-notes/7.0-upgrade-replica-set/#std-label-7.0-upgrade-replica-set)
* [MongoDB-Release-Notes – Upgrade von MongoDB `7.0` auf `8.0`](https://www.mongodb.com/docs/manual/release-notes/8.0-upgrade-replica-set/#std-label-8.0-upgrade-replica-set)

<Info>
  Die Anweisungen für `5.0` und höher beziehen sich auf eine Replica-Set-Installation statt auf eine Standalone-Installation. Da Server Pro/CE ab 4.0.1 Transaktionen verwendet, muss MongoDB als Replica Set betrieben werden.
</Info>

<Warning>
  Die Dokumentation für MongoDB 3.2 bis 4.2 ist jetzt unter [https://www.mongodb.com/docs/legacy/](https://www.mongodb.com/docs/legacy/) verfügbar
</Warning>

**Grundlegende Anweisungen**

In den meisten Fällen erfordert die Aktualisierung das Setzen eines Kompatibilitäts-Flags, bevor die Mongo-Version tatsächlich aktualisiert wird. Die Schritte sind wie folgt:

1. Setzen Sie das Kompatibilitäts-Flag wie in den MongoDB-Release-Notes beschrieben (siehe Beispiele unten).
2. Aktualisieren Sie anschließend das Mongo-Image:
   1. **Toolkit-Nutzer** Aktualisieren Sie `MONGO_VERSION`, z. B. `MONGO_VERSION=6.0`
   2. **Docker Compose-Nutzer** Aktualisieren Sie die Version des `mongo`-Image-Tags,\
      z. B. `services -> mongo -> image: mongo:6.0`;

**Beispiel: Upgrade von MongoDB `5.0` auf `6.0`**

Stellen wir zunächst sicher, dass wir MongoDB `6.0` ausführen:

Nutzer des Overleaf Toolkit:

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

Nutzer von Docker Compose:

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

Laut den [Upgrade-Anweisungen](https://docs.mongodb.com/manual/release-notes/3.6-upgrade-standalone/#upgrade-version-path) besteht die einzige Voraussetzung darin, `featureCompatibilityVersion` auf `5.0` zu setzen. Dazu öffnen wir eine MongoDB-Shell und führen den angegebenen Befehl aus:

Nutzer des 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-Nutzer können `docker compose exec mongo mongosh` ausführen, um eine Shell zu öffnen, und dieselben Befehle wie Toolkit-Nutzer ausführen.
</Info>

Nutzer des Overleaf Toolkit:

Anschließend stoppen wir die Server CE/Server Pro- und MongoDB-Instanzen mit dem Befehl `bin/stop`, setzen `MONGO_VERSION=6.0` in `config/overleaf.rc` und starten dann den Dienst `mongo` mit `bin/up mongo` neu, um zu überprüfen, ob die Aktualisierung reibungslos verlaufen ist.

Abschließend aktualisieren wir die Image-Version von Server CE/Server Pro auf unsere Zielversion und erstellen alle Dienste mit dem Befehl `bin/up -d` neu.

Nutzer von Docker Compose:

Anschließend stoppen wir die Server CE/Server Pro- und MongoDB-Instanzen mit dem Befehl `docker compose stop`, passen die Datei [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) so an, dass `image: mongo:6.0` verwendet wird, und starten dann den Dienst `mongo` mit dem Befehl `docker compose up mongo` neu, um zu überprüfen, ob die Aktualisierung reibungslos verlaufen ist.

Abschließend aktualisieren wir die Image-Version von Server CE/Server Pro auf unsere Zielversion und erstellen alle Dienste mit dem Befehl `docker compose up` neu.

<strong>Beispiel: Upgrade von MongoDB `6.0` auf `7.0` (Toolkit-Nutzer)</strong>

Stellen Sie zunächst mit den oben genannten `mongod --version`-Befehlen sicher, dass Sie MongoDB `6.0` ausführen.

Laut den [Upgrade-Anweisungen](https://www.mongodb.com/docs/manual/release-notes/7.0-upgrade-replica-set/#std-label-7.0-upgrade-replica-set) besteht die einzige Voraussetzung darin, `featureCompatibilityVersion` auf `6.0` zu setzen. Dazu öffnen wir eine MongoDB-Shell und führen den Befehl `db.adminCommand({ setFeatureCompatibilityVersion: "6.0" })` aus.

Nutzer des Overleaf Toolkit:

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

Anschließend stoppen wir die Server CE/Server Pro- und MongoDB-Instanzen mit dem Befehl `bin/stop`, setzen `MONGO_VERSION=7.0` in `config/overleaf.rc` und starten dann den Dienst `mongo` mit `bin/up mongo` neu, um zu überprüfen, ob die Aktualisierung reibungslos verlaufen ist.

Abschließend aktualisieren wir die Image-Version von Server CE/Server Pro auf unsere Zielversion und erstellen alle Dienste mit dem Befehl `bin/up -d` neu.

<strong>Beispiel: Upgrade von MongoDB `7.0` auf `8.0` (Toolkit-Nutzer)</strong>

Stellen Sie zunächst mit den oben genannten `mongod --version`-Befehlen sicher, dass Sie MongoDB `7.0` ausführen.

Laut den [Upgrade-Anweisungen](https://www.mongodb.com/docs/manual/release-notes/8.0-upgrade-replica-set/#std-label-8.0-upgrade-replica-set) besteht die einzige Voraussetzung darin, `featureCompatibilityVersion` auf `7.0` zu setzen. Dazu öffnen wir eine MongoDB-Shell und führen den Befehl `db.adminCommand({ setFeatureCompatibilityVersion: "7.0", confirm: true })` aus. Beachten Sie, dass hierfür nun der zusätzliche Parameter `confirm: true` erforderlich ist.

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

Anschließend stoppen wir die Server CE/Server Pro- und MongoDB-Instanzen mit dem Befehl `bin/stop`, setzen `MONGO_VERSION=8.0` in `config/overleaf.rc` und starten dann den Dienst `mongo` mit `bin/up mongo` neu, um zu überprüfen, ob die Aktualisierung reibungslos verlaufen ist.

Abschließend aktualisieren wir die Image-Version von Server CE/Server Pro auf unsere Zielversion und erstellen alle Dienste mit dem Befehl `bin/up -d` neu.

#### Entsprechende Befehle für Docker Compose-Nutzer

Für Docker Compose-Nutzer lauten die entsprechenden Befehle:

* `docker compose exec mongo mongod --version`, um die Mongo-Version anzuzeigen
* `docker compose exec mongo mongosh`, um eine Mongo-Shell für Admin-Befehle zu starten
* `docker compose stop`, um den Server zu stoppen
* Bearbeiten Sie die Datei [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) so, dass `image: mongo:6.0` verwendet wird, um die Mongo-Version zu aktualisieren
* `docker compose up mongo`, um den Mongo-Dienst neu zu starten und zu überprüfen, ob die Aktualisierung reibungslos verlaufen ist
* Bearbeiten Sie die Datei [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) so, dass `image: sharelatex:VERSION` verwendet wird, um die Image-Version zu aktualisieren
* `docker compose up`, um alle Dienste neu zu erstellen.

### Eine benutzerdefinierte Rolle erstellen

In Version `5.5.1` haben wir eine Startprüfung eingeführt, die die Feature Compatibility Version von MongoDB überprüft. Wenn Ihre MongoDB-Datenbank Authentifizierung verwendet (z. B. Basic Authentication), startet der Container `sharelatex` möglicherweise nicht und zeigt den Berechtigungsfehler „*not authorized on admin to execute command*“ an.

Um dies zu beheben, können Sie entweder mithilfe der folgenden Anweisungen eine neue Rolle in MongoDB erstellen und sie dem Benutzerkonto zuweisen, das für den Datenbankzugriff verwendet wird, oder `ALLOW_MONGO_ADMIN_CHECK_FAILURES=true` setzen, damit die Prüfung fehlschlagen darf, ohne den Start der Bereitstellung zu verhindern.

<Check>
  Diese neue Rolle gewährt **ausschließlich** die Berechtigung, clusterweite MongoDB-Serverparameter zu lesen, und kann auch für Monitoring-Zwecke wiederverwendet werden.
</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.