> 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/el/syntirisi/updating-mongodb.md).

# Ενημέρωση του MongoDB

{% hint style="info" %}
Κάθε νέα έκδοση του Server CE/Server Pro θα αναφέρει οποιαδήποτε αλλαγή στην υποστηριζόμενη έκδοση του MongoDB στις [σημειώσεις έκδοσης](https://docs.overleaf.com/on-premises/release-notes).
{% endhint %}

### Πρέπει να ενημερώσω το MongoDB;

Θα πρέπει **μόνο** να εξετάσετε την ενημέρωση της έκδοσης του MongoDB μόνο αν σκοπεύετε να αναβαθμίσετε το instance του Server CE/Server Pro.

Αν χρησιμοποιείτε μια έκδοση MongoDB που είναι νεότερη από την προτεινόμενη για την τρέχουσα (ή την έκδοση-στόχο) σας, δεν χρειάζεται να κάνετε καμία αλλαγή.

{% hint style="warning" %}
Δεν πρέπει ποτέ να υποβαθμίζετε την έκδοση του MongoDB.
{% endhint %}

Αν αντιμετωπίσετε ένα συγκεκριμένο πρόβλημα που πιστεύετε ότι μπορεί να σχετίζεται με την τρέχουσα έκδοσή σας του MongoDB, μη διστάσετε να [υποβάλετε ένα issue](https://github.com/overleaf/overleaf/issues) αν είστε χρήστης Server CE ή να επικοινωνήσετε με την Υποστήριξη του Overleaf αν είστε χρήστης Server Pro.

### Έλεγχος της έκδοσης του MongoDB

Ανοίγοντας το `mongo` shell θα εμφανίσει αμέσως την τρέχουσα έκδοση.

Χρήστες του Overleaf Toolkit:

```bash
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"
    }
}
```

Χρήστες του Docker Compose:

```bash
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"
    }
}

```

### Διαδικασία αναβάθμισης

Η ενημέρωση της έκδοσης του MongoDB κατά την αναβάθμιση του instance του Server CE/Server Pro γίνεται ως εξής:

1. Αποφασίστε σε ποια έκδοση του Server CE/Server Pro σκοπεύετε να αναβαθμίσετε.
2. Βρείτε την έκδοση του MongoDB που προτείνεται από τη συγκεκριμένη έκδοση του Overleaf Server CE/Server Pro.
3. Ακολουθήστε τις οδηγίες για να αναβαθμίσετε το MongoDB στην έκδοση-στόχο.
4. Αναβαθμίστε την έκδοση της εικόνας του Server CE/Server Pro και επανεκκινήστε το instance.

Η σύστασή μας είναι να αναβαθμίζετε πάντα **Server CE/Server Pro** στην πιο πρόσφατη διαθέσιμη έκδοση, καθώς είναι πάντα εγγυημένο ότι υποστηρίζεται (μόνο για χρήστες Server Pro).

{% hint style="danger" %}
Κατά την εκτέλεση αναβάθμισης του Server CE/Pro, συνιστούμε να αναβαθμίσετε στην πιο πρόσφατη έκδοση της εγκατεστημένης κύριας έκδοσης **πριν** αναβαθμίσετε στην πιο πρόσφατη έκδοση της **επόμενης** κύριας έκδοσης. Αν η εγκατάστασή σας απέχει πάνω από μία κύρια έκδοση από την πιο πρόσφατη, θα χρειαστεί να πραγματοποιήσετε αναβάθμιση σε πολλαπλά βήματα.

Για παράδειγμα, αν χρησιμοποιείτε την 3.5.10, θα χρειαστεί να αναβαθμίσετε σε 3.5.13 -> Εκτελέστε τη μετανάστευση Full Project History -> 4.2.9 -> 5.5.4.

Θα πρέπει **ποτέ** να παραλείπετε κύριες εκδόσεις (3.5.10 -> 5.5.4). Αν χρησιμοποιείτε το Toolkit και είστε πίσω πάνω από μία κύρια έκδοση από την πιο πρόσφατη, πρέπει να **μην** χρησιμοποιήσετε το `bin/upgrade` σενάριο, καθώς θα χρειαστεί να πραγματοποιήσετε μια χειροκίνητη αναβάθμιση σε πολλαπλά βήματα.
{% endhint %}

{% hint style="warning" %}
Είναι σημαντικό να βεβαιωθείτε ότι λαμβάνετε ένα [συνεπές αντίγραφο ασφαλείας](/on-premises/el/syntirisi/data-and-backups.md#performing-a-consistent-backup) **πριν** σε κάθε αναβάθμιση κύριας έκδοσης, ώστε να μπορείτε να επαναφέρετε αν χρειαστεί.
{% endhint %}

#### Πληροφορίες υποστήριξης εκδόσεων

Σε περίπτωση που αποφασίσετε να επιστρέψετε σε μια παλαιότερη έκδοση, αυτός ο πίνακας δείχνει την προτεινόμενη έκδοση του MongoDB για παλαιότερες εκδόσεις του Server CE/Server Pro, αλλά δεν θα πρέπει να **ποτέ** υποβαθμίσετε την έκδοση του MongoDB.

<table><thead><tr><th width="175">Server CE/Server Pro</th><th width="139" align="center">Έκδοση MongoDB</th><th align="center">Ελάχιστη Έκδοση Συμβατότητας Χαρακτηριστικών</th><th align="center">Μέγιστη Έκδοση που Υποστηρίζεται από το Node.js Driver</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 έως 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" %}
Η ελάχιστη έκδοση συμβατότητας χαρακτηριστικών παραπάνω βασίζεται στη σχετική έκδοση MongoDB που συνιστάται για χρήση με την έκδοση του Overleaf που εμφανίζεται. Αν σκοπεύετε να χρησιμοποιήσετε υψηλότερη έκδοση, το MongoDB θα έχει τη δική του ελάχιστη απαίτηση.
{% endhint %}

Μπορείτε να δείτε τον πίνακα συμβατότητας που καθορίζει τις υποστηριζόμενες εκδόσεις του MongoDB Node.js driver για χρήση με το MongoDB [εδώ](https://www.mongodb.com/docs/drivers/node/current/reference/compatibility/).

Μπορείτε να δείτε την κατάσταση λήξης υποστήριξης για κάθε έκδοση του MongoDB [εδώ](https://endoflife.date/mongodb).

#### Αναβάθμιση MongoDB

Το MongoDB απαιτεί **αναβαθμίσεις βήμα προς βήμα**. Αυτό σημαίνει ότι δεν μπορείτε να πάτε απευθείας από, ας πούμε `4.0` σε `5.0`. Πρέπει πρώτα να ενημερώσετε `4.2` σε `4.4`, και στη συνέχεια `5.0`.

{% hint style="info" %}
Το MongoDB χρησιμοποιεί ζυγούς αριθμούς για τις σταθερές εκδόσεις του.
{% endhint %}

#### **Οδηγίες ενημέρωσης όταν εκτελείτε το MongoDB εκτός Docker**

Ακολουθούν σύνδεσμοι προς τις οδηγίες ενημέρωσης από το mongodb.com κατά την αναβάθμιση του MongoDB.

* [Σημειώσεις έκδοσης MongoDB - αναβάθμιση του MongoDB από `4.2` σε `4.4`](https://www.mongodb.com/docs/v4.4/release-notes/4.4-upgrade-standalone/)
* [Σημειώσεις έκδοσης MongoDB - αναβάθμιση του MongoDB από `4.4` σε `5.0`](https://www.mongodb.com/docs/v5.0/release-notes/5.0-upgrade-replica-set/)
* [Σημειώσεις έκδοσης MongoDB - αναβάθμιση του MongoDB από `5.0` σε `6.0`](https://www.mongodb.com/docs/v6.0/release-notes/6.0-upgrade-replica-set/)
* [Σημειώσεις έκδοσης MongoDB - αναβάθμιση του MongoDB από `6.0` σε `7.0`](https://www.mongodb.com/docs/manual/release-notes/7.0-upgrade-replica-set/#std-label-7.0-upgrade-replica-set)
* [Σημειώσεις έκδοσης MongoDB - αναβάθμιση του MongoDB από `7.0` σε `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" %}
Οδηγίες για `5.0` και νεότερες παραπέμπουν σε εγκατάσταση replica set, αντί για standalone. Καθώς το Server Pro/CE 4.0.1+ χρησιμοποιεί συναλλαγές, το MongoDB πρέπει να εκτελείται ως replica set.
{% endhint %}

{% hint style="warning" %}
Η τεκμηρίωση για το MongoDB 3.2 έως 4.2 είναι πλέον διαθέσιμη μέσω <https://www.mongodb.com/docs/legacy/>
{% endhint %}

**Βασικές Οδηγίες**

Στις περισσότερες περιπτώσεις η ενημέρωση απαιτεί τη ρύθμιση ενός σημαίνοντος συμβατότητας πριν από την πραγματική ενημέρωση της έκδοσης του mongo. Τα βήματα είναι τα εξής:

1. Ορίστε το σημαίνον συμβατότητας όπως περιγράφεται στις σημειώσεις έκδοσης του MongoDB (βλ. τα παρακάτω παραδείγματα).
2. Στη συνέχεια ενημερώστε την εικόνα του mongo:
   1. **Χρήστες του Toolkit** Ενημερώστε `MONGO_VERSION`, π.χ. `MONGO_VERSION=6.0`
   2. **Χρήστες του Docker Compose** Ενημερώστε την έκδοση του `mongo` tag της εικόνας,\
      π.χ. `services -> mongo -> image: mongo:6.0`;

**Παράδειγμα: Αναβάθμιση του MongoDB από `5.0` σε `6.0`**

Ας ξεκινήσουμε βεβαιώνοντας ότι εκτελούμε το MongoDB `6.0`:

Χρήστες του Overleaf Toolkit:

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

Χρήστες του Docker Compose:

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

Σύμφωνα με τις [οδηγίες αναβάθμισης](https://docs.mongodb.com/manual/release-notes/3.6-upgrade-standalone/#upgrade-version-path), η μόνη απαίτηση είναι να έχετε `featureCompatibilityVersion` ορισμένο σε `5.0`. Το κάνουμε ανοίγοντας ένα MongoDB shell και εκτελώντας την εντολή που υποδεικνύεται:

Χρήστες του Overleaf Toolkit:

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

{% hint style="info" %}
Οι χρήστες του Docker Compose μπορούν να εκτελέσουν `docker compose exec mongo mongosh` για να αποκτήσουν ένα shell και να εκτελέσουν τις ίδιες εντολές με τους χρήστες του Toolkit.
{% endhint %}

Χρήστες του Overleaf Toolkit:

Στη συνέχεια θα σταματήσουμε τα instances του Server CE/Server Pro και του MongoDB χρησιμοποιώντας την `bin/stop` εντολή, θα ορίσουμε `MONGO_VERSION=6.0` στο `config/overleaf.rc`, και στη συνέχεια θα επανεκκινήσουμε το `mongo` υπηρεσία χρησιμοποιώντας την `bin/up mongo`) για να επαληθεύσουμε ότι η ενημέρωση ολοκληρώθηκε ομαλά.

Τέλος, θα ενημερώσουμε την έκδοση της εικόνας του Server CE/Server Pro στην έκδοση-στόχο μας και θα αναδημιουργήσουμε όλες τις υπηρεσίες χρησιμοποιώντας την `bin/up -d` εντολή.

Χρήστες του Docker Compose:

Στη συνέχεια θα σταματήσουμε τα instances του Server CE/Server Pro και του MongoDB χρησιμοποιώντας την `docker compose stop` εντολή, να ενημερώσετε [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) αρχείο ώστε να χρησιμοποιεί `image: mongo:6.0`, και στη συνέχεια θα επανεκκινήσουμε το `mongo` υπηρεσία χρησιμοποιώντας την `docker compose up mongo` εντολή για να επαληθεύσετε ότι η ενημέρωση ολοκληρώθηκε ομαλά.

Τέλος, θα ενημερώσουμε την έκδοση της εικόνας του Server CE/Server Pro στην έκδοση-στόχο μας και θα αναδημιουργήσουμε όλες τις υπηρεσίες χρησιμοποιώντας την `docker compose up` εντολή.

**Παράδειγμα: Αναβάθμιση του MongoDB από `6.0` σε `7.0` (χρήστες του toolkit)**

Ξεκινήστε βεβαιώνοντας ότι εκτελείτε το MongoDB `6.0` χρησιμοποιώντας τις `mongod --version` παραπάνω εντολές.

Σύμφωνα με τις [οδηγίες αναβάθμισης](https://www.mongodb.com/docs/manual/release-notes/7.0-upgrade-replica-set/#std-label-7.0-upgrade-replica-set), η μόνη απαίτηση είναι να έχετε `featureCompatibilityVersion` ορισμένο σε `6.0`. Το κάνουμε ανοίγοντας ένα MongoDB shell και εκτελώντας την εντολή `db.adminCommand({ setFeatureCompatibilityVersion: "6.0" })` .

Χρήστες του Overleaf Toolkit:

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

Στη συνέχεια θα σταματήσουμε τα instances του Server CE/Server Pro και του MongoDB χρησιμοποιώντας την `bin/stop` εντολή, θα ορίσουμε `MONGO_VERSION=7.0` στο `config/overleaf.rc`, και στη συνέχεια θα επανεκκινήσουμε το `mongo` υπηρεσία χρησιμοποιώντας την `bin/up mongo`) για να επαληθεύσουμε ότι η ενημέρωση ολοκληρώθηκε ομαλά.

Τέλος, θα ενημερώσουμε την έκδοση της εικόνας του Server CE/Server Pro στην έκδοση-στόχο μας και θα αναδημιουργήσουμε όλες τις υπηρεσίες χρησιμοποιώντας την `bin/up -d` εντολή.

**Παράδειγμα: Αναβάθμιση του MongoDB από `7.0` σε `8.0` (χρήστες του toolkit)**

Ξεκινήστε βεβαιώνοντας ότι εκτελείτε το MongoDB `7.0` χρησιμοποιώντας τις `mongod --version` παραπάνω εντολές.

Σύμφωνα με τις [οδηγίες αναβάθμισης](https://www.mongodb.com/docs/manual/release-notes/8.0-upgrade-replica-set/#std-label-8.0-upgrade-replica-set), η μόνη απαίτηση είναι να έχετε `featureCompatibilityVersion` ορισμένο σε `7.0`. Το κάνουμε ανοίγοντας ένα MongoDB shell και εκτελώντας την εντολή `db.adminCommand({ setFeatureCompatibilityVersion: "7.0", confirm: true })`. Σημειώστε ότι αυτό πλέον απαιτεί ένα επιπλέον `confirm: true` παράμετρο.

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

Στη συνέχεια θα σταματήσουμε τα instances του Server CE/Server Pro και του MongoDB χρησιμοποιώντας την `bin/stop` εντολή, θα ορίσουμε `MONGO_VERSION=8.0` στο `config/overleaf.rc`, και στη συνέχεια θα επανεκκινήσουμε το `mongo` υπηρεσία χρησιμοποιώντας την `bin/up mongo`) για να επαληθεύσουμε ότι η ενημέρωση ολοκληρώθηκε ομαλά.

Τέλος, θα ενημερώσουμε την έκδοση της εικόνας του Server CE/Server Pro στην έκδοση-στόχο μας και θα αναδημιουργήσουμε όλες τις υπηρεσίες χρησιμοποιώντας την `bin/up -d` εντολή.

#### Ισοδύναμες εντολές για χρήστες του docker compose

Για τους χρήστες του docker compose, οι ισοδύναμες εντολές είναι:

* `docker compose exec mongo mongod --version` για να εμφανίσετε την έκδοση του mongo
* `docker compose exec mongo mongosh` για να ξεκινήσετε ένα mongo shell για εντολές διαχειριστή
* `docker compose stop` εντολή για να σταματήσετε τον διακομιστή
* Επεξεργαστείτε το [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) αρχείο ώστε να χρησιμοποιεί `image: mongo:6.0` για να αναβαθμίσετε την έκδοση του mongo
* `docker compose up mongo` για να επανεκκινήσετε την υπηρεσία mongo και να επαληθεύσετε ότι η ενημέρωση ολοκληρώθηκε ομαλά
* Επεξεργαστείτε το [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) αρχείο ώστε να χρησιμοποιεί `image: sharelatex:VERSION` για να αναβαθμίσετε την έκδοση της εικόνας
* `docker compose up` για να αναδημιουργήσετε όλες τις υπηρεσίες.

### Δημιουργία προσαρμοσμένου ρόλου

Στην έκδοση `5.5.1`, εισαγάγαμε έναν έλεγχο εκκίνησης για να επαληθεύσουμε την έκδοση συμβατότητας χαρακτηριστικών για το MongoDB. Αν η βάση δεδομένων MongoDB χρησιμοποιεί αυθεντικοποίηση (π.χ. βασική αυθεντικοποίηση), το `sharelatex` container μπορεί να μην ξεκινήσει, εμφανίζοντας ένα "*δεν είναι εξουσιοδοτημένο στο admin να εκτελέσει την εντολή*" σφάλμα δικαιώματος.

Για να το επιλύσετε αυτό, μπορείτε είτε να δημιουργήσετε έναν νέο ρόλο στο MongoDB και να τον αναθέσετε στον λογαριασμό χρήστη που χρησιμοποιείται για την πρόσβαση στη βάση δεδομένων, ακολουθώντας τις παρακάτω οδηγίες, είτε να ορίσετε `ALLOW_MONGO_ADMIN_CHECK_FAILURES=true` ώστε να επιτρέψετε στον έλεγχο να αποτύχει χωρίς να εμποδίζει την έναρξη της ανάπτυξης.

{% hint style="success" %}
Αυτός ο νέος ρόλος **μόνο** παρέχει άδεια ανάγνωσης παραμέτρων διακομιστή MongoDB σε επίπεδο cluster και θα μπορούσε να επαναχρησιμοποιηθεί για σκοπούς παρακολούθησης,
{% endhint %}

{% code overflow="wrap" %}

```bash
# Χρήστες του Toolkit
$ bin/docker-compose exec -it mongo mongosh -u {{YOUR-ADMIN-USERNAME}} -p

# Μεταβείτε στη βάση δεδομένων "admin" χρησιμοποιώντας
overleaf [direct: primary] sharelatex> use admin
μεταβήκατε στη βάση admin
overleaf [direct: primary] admin> 

# Δημιουργήστε έναν νέο ρόλο με άδεια χρήσης του "getParamter". Αντιγράψτε και επικολλήστε τη συνάρτηση παρακάτω στο shell και πατήστε το πλήκτρο Return

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

# Επιστρέψτε στη βάση δεδομένων "sharelatex" 
use sharelatex
μεταβήκατε στη βάση sharelatex
overleaf [direct: primary] sharelatex> 

# Αναθέστε τον νέο ρόλο "clusterParameterReader" στον χρήστη της βάσης δεδομένων σας αντιγράφοντας και επικολλώντας τη συνάρτηση παρακάτω στο shell και πατήστε το πλήκτρο Return 
db.grantRolesToUser(
  "{{YOUR-DATABASE-USER}}",
  [
    { role: "clusterParameterReader", db: "admin" }
  ]
);

# Πληκτρολογήστε exit και στη συνέχεια πατήστε Return για να εξέλθετε από το MongoDB shell
# Εκτελέστε bin/up -d για να ξεκινήσει η στοίβα ανάπτυξης
$ 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/el/syntirisi/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.
