> For the complete documentation index, see [llms.txt](https://ayakaleaf-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://ayakaleaf-pro.ayaka.space/on-premises/es/mantenimiento/updating-mongodb.md).

# Actualización de MongoDB

{% hint style="info" %}
Cualquier nueva versión de Server CE/Server Pro indicará cualquier cambio en la versión de MongoDB compatible en sus [notas de la versión](https://docs.overleaf.com/on-premises/release-notes).
{% endhint %}

### ¿Debo actualizar MongoDB?

Deberías **solo** considerar actualizar tu versión de MongoDB si planeas actualizar tu instancia de Server CE/Server Pro.

Si estás ejecutando una versión de MongoDB más reciente que la recomendada para tu versión actual (o de destino), no es necesario hacer ningún cambio.

{% hint style="warning" %}
Nunca deberías degradar tu versión de MongoDB.
{% endhint %}

Si experimentas un problema específico que crees que podría estar relacionado con tu versión actual de MongoDB, no dudes en [abrir un issue](https://github.com/overleaf/overleaf/issues) si eres usuario de Server CE o contactar con el Soporte de Overleaf si eres usuario de Server Pro.

### Comprobación de tu versión de MongoDB

Abrir la `mongo` shell debería mostrar inmediatamente la versión actual.

Usuarios de Overleaf Toolkit:

```bash
bin/docker-compose exec mongo mongod --version
db version v5.0.24
Información de compilación: {
    "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"
    }
}
```

Usuarios de Docker Compose:

```bash
docker compose exec mongo mongod --version
db version v5.0.24
Información de compilación: {
    "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"
    }
}

```

### Proceso de actualización

La actualización de la versión de MongoDB durante una actualización de tu instancia de Server CE/Server Pro es la siguiente:

1. Decide la versión de Server CE/Server Pro a la que planeas actualizar.
2. Encuentra la versión de MongoDB recomendada por esa versión específica de Overleaf Server CE/Server Pro.
3. Sigue las instrucciones para actualizar MongoDB a la versión de destino.
4. Actualiza la versión de la imagen de Server CE/Server Pro y reinicia la instancia.

Nuestra recomendación es actualizar siempre **Server CE/Server Pro** a la última versión disponible, ya que siempre se garantiza que será compatible (solo usuarios de Server Pro).

{% hint style="danger" %}
Al realizar una actualización de Server CE/Pro, recomendamos actualizar a la última versión de la versión principal desplegada **antes de** actualizar a la última versión de la **siguiente** versión principal. Si tu despliegue está más de una versión principal por detrás de la última, deberás realizar una actualización en varios pasos.

Por ejemplo, si estás ejecutando 3.5.10, tendrás que actualizar a 3.5.13 -> Realizar la migración completa del historial del proyecto -> 4.2.9 -> 5.5.4.

Deberías **nunca** saltar versiones principales (3.5.10 -> 5.5.4). Si estás usando Toolkit y estás más de una versión principal por detrás de la última, debes **no** usar el `bin/upgrade` script, ya que tendrás que realizar una actualización manual en varios pasos.
{% endhint %}

{% hint style="warning" %}
Es importante asegurarte de hacer una [copia de seguridad coherente](/on-premises/es/mantenimiento/data-and-backups.md#performing-a-consistent-backup) **antes de** en cada actualización de versión principal para poder revertirla si fuera necesario.
{% endhint %}

#### Información de compatibilidad de versiones

En caso de que decidas ir a una versión anterior, esta tabla muestra la versión recomendada de MongoDB para versiones anteriores de Server CE/Server Pro, pero no deberías **nunca** degradar tu versión de MongoDB.

<table><thead><tr><th width="175">Server CE/Server Pro</th><th width="139" align="center">Versión de MongoDB</th><th align="center">Versión mínima de compatibilidad de características</th><th align="center">Versión máxima compatible con el controlador de Node.js</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 a 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" %}
La versión mínima de compatibilidad de características anterior se basa en la versión correspondiente de MongoDB recomendada para su uso con la versión de Overleaf mostrada. Si planeas usar una versión superior, MongoDB tendrá su propio requisito mínimo.
{% endhint %}

Puedes ver la tabla de compatibilidad que especifica las versiones compatibles del controlador MongoDB para Node.js para usar con MongoDB [aquí](https://www.mongodb.com/docs/drivers/node/current/reference/compatibility/).

Puedes ver el estado de fin de vida de cada versión de MongoDB [aquí](https://endoflife.date/mongodb).

#### Actualización de MongoDB

MongoDB requiere **actualizaciones paso a paso**. Eso significa que no puedes pasar directamente de, por ejemplo `4.0` a `5.0`. Primero debes actualizar `4.2` a `4.4`, y luego `5.0`.

{% hint style="info" %}
MongoDB usa números pares para sus versiones estables.
{% endhint %}

#### **Instrucciones de actualización al ejecutar MongoDB fuera de Docker**

Aquí tienes enlaces a las instrucciones de actualización de mongodb.com al actualizar MongoDB.

* [Notas de la versión de MongoDB: actualización de MongoDB desde `4.2` a `4.4`](https://www.mongodb.com/docs/v4.4/release-notes/4.4-upgrade-standalone/)
* [Notas de la versión de MongoDB: actualización de MongoDB desde `4.4` a `5.0`](https://www.mongodb.com/docs/v5.0/release-notes/5.0-upgrade-replica-set/)
* [Notas de la versión de MongoDB: actualización de MongoDB desde `5.0` a `6.0`](https://www.mongodb.com/docs/v6.0/release-notes/6.0-upgrade-replica-set/)
* [Notas de la versión de MongoDB: actualización de MongoDB desde `6.0` a `7.0`](https://www.mongodb.com/docs/manual/release-notes/7.0-upgrade-replica-set/#std-label-7.0-upgrade-replica-set)
* [Notas de la versión de MongoDB: actualización de MongoDB desde `7.0` a `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" %}
Instrucciones para `5.0` y superiores apuntan a una instalación de conjunto de réplicas, en lugar de independiente. Como Server Pro/CE 4.0.1+ usa transacciones, MongoDB debe ejecutarse como un conjunto de réplicas.
{% endhint %}

{% hint style="warning" %}
La documentación de MongoDB 3.2 a 4.2 ya está disponible en <https://www.mongodb.com/docs/legacy/>
{% endhint %}

**Instrucciones básicas**

En la mayoría de los casos, la actualización requiere configurar un indicador de compatibilidad antes de actualizar realmente la versión de mongo. Los pasos son los siguientes:

1. Configura el indicador de compatibilidad como se describe en las notas de la versión de MongoDB (consulta los ejemplos a continuación).
2. Luego actualiza la imagen de mongo:
   1. **Usuarios de Toolkit** Actualiza `MONGO_VERSION`, por ejemplo, `MONGO_VERSION=6.0`
   2. **Usuarios de Docker Compose** Actualiza la versión de la `mongo` etiqueta de la imagen,\
      por ejemplo `services -> mongo -> image: mongo:6.0`;

**Ejemplo: actualización de MongoDB desde `5.0` a `6.0`**

Empecemos asegurándonos de que estamos ejecutando MongoDB `6.0`:

Usuarios de Overleaf Toolkit:

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

Usuarios de Docker Compose:

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

Según las [instrucciones de actualización](https://docs.mongodb.com/manual/release-notes/3.6-upgrade-standalone/#upgrade-version-path), el único requisito es tener `featureCompatibilityVersion` establecido en `5.0`. Lo hacemos abriendo una shell de MongoDB y ejecutando el comando indicado:

Usuarios de 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" %}
Los usuarios de Docker Compose pueden ejecutar `docker compose exec mongo mongosh` para obtener una shell y ejecutar los mismos comandos que los usuarios de Toolkit.
{% endhint %}

Usuarios de Overleaf Toolkit:

Luego detendremos las instancias de Server CE/Server Pro y MongoDB usando el `bin/stop` comando, establecer `MONGO_VERSION=6.0` en `config/overleaf.rc`, y luego reiniciar el `mongo` servicio usando `bin/up mongo`) para verificar que la actualización se realizó sin problemas.

Por último, actualizaremos la versión de la imagen de Server CE/Server Pro a nuestra versión de destino y recrearemos todos los servicios usando el `bin/up -d` comando.

Usuarios de Docker Compose:

Luego detendremos las instancias de Server CE/Server Pro y MongoDB usando el `docker compose stop` comando, actualiza [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) archivo para usar `image: mongo:6.0`, y luego reiniciar el `mongo` servicio usando el `docker compose up mongo` comando para verificar que la actualización se realizó sin problemas.

Por último, actualizaremos la versión de la imagen de Server CE/Server Pro a nuestra versión de destino y recrearemos todos los servicios usando el `docker compose up` comando.

**Ejemplo: actualización de MongoDB desde `6.0` a `7.0` (usuarios de Toolkit)**

Empieza asegurándote de que estás ejecutando MongoDB `6.0` usando los `mongod --version` comandos anteriores.

Según las [instrucciones de actualización](https://www.mongodb.com/docs/manual/release-notes/7.0-upgrade-replica-set/#std-label-7.0-upgrade-replica-set), el único requisito es tener `featureCompatibilityVersion` establecido en `6.0`. Lo hacemos abriendo una shell de MongoDB y ejecutando el comando `db.adminCommand({ setFeatureCompatibilityVersion: "6.0" })` .

Usuarios de Overleaf Toolkit:

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

Luego detendremos las instancias de Server CE/Server Pro y MongoDB usando el `bin/stop` comando, establecer `MONGO_VERSION=7.0` en `config/overleaf.rc`, y luego reiniciar el `mongo` servicio usando `bin/up mongo`) para verificar que la actualización se realizó sin problemas.

Por último, actualizaremos la versión de la imagen de Server CE/Server Pro a nuestra versión de destino y recrearemos todos los servicios usando el `bin/up -d` comando.

**Ejemplo: actualización de MongoDB desde `7.0` a `8.0` (usuarios de Toolkit)**

Empieza asegurándote de que estás ejecutando MongoDB `7.0` usando los `mongod --version` comandos anteriores.

Según las [instrucciones de actualización](https://www.mongodb.com/docs/manual/release-notes/8.0-upgrade-replica-set/#std-label-8.0-upgrade-replica-set), el único requisito es tener `featureCompatibilityVersion` establecido en `7.0`. Lo hacemos abriendo una shell de MongoDB y ejecutando el comando `db.adminCommand({ setFeatureCompatibilityVersion: "7.0", confirm: true })`. Ten en cuenta que ahora requiere un `confirm: true` parámetro.

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

Luego detendremos las instancias de Server CE/Server Pro y MongoDB usando el `bin/stop` comando, establecer `MONGO_VERSION=8.0` en `config/overleaf.rc`, y luego reiniciar el `mongo` servicio usando `bin/up mongo`) para verificar que la actualización se realizó sin problemas.

Por último, actualizaremos la versión de la imagen de Server CE/Server Pro a nuestra versión de destino y recrearemos todos los servicios usando el `bin/up -d` comando.

#### Comandos equivalentes para usuarios de docker compose

Para los usuarios de docker compose, los comandos equivalentes son:

* `docker compose exec mongo mongod --version` para mostrar la versión de mongo
* `docker compose exec mongo mongosh` para iniciar una shell de mongo para comandos de administración
* `docker compose stop` comando para detener el servidor
* Edita el [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) archivo para usar `image: mongo:6.0` para actualizar la versión de mongo
* `docker compose up mongo` para reiniciar el servicio de mongo y verificar que la actualización se realizó sin problemas
* Edita el [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) archivo para usar `image: sharelatex:VERSION` para actualizar la versión de la imagen
* `docker compose up` para recrear todos los servicios.

### Creación de un rol personalizado

En la versión `5.5.1`, introdujimos una comprobación de inicio para verificar la versión de compatibilidad de características de MongoDB. Si tu base de datos MongoDB usa autenticación (por ejemplo, autenticación básica), el `sharelatex` contenedor podría no iniciarse, mostrando un error de permiso de "*not authorized on admin to execute command*".

Para resolver esto, puedes crear un nuevo rol en MongoDB y asignárselo a la cuenta de usuario utilizada para acceder a la base de datos siguiendo las instrucciones de abajo, o establecer `ALLOW_MONGO_ADMIN_CHECK_FAILURES=true` para permitir que la comprobación falle sin impedir que el despliegue se inicie.

{% hint style="success" %}
Este nuevo rol **solo** concede permiso para leer parámetros del servidor MongoDB a nivel de clúster y podría reutilizarse con fines de supervisión,
{% endhint %}

{% code overflow="wrap" %}

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

# Cambia a la base de datos "admin" usando
overleaf [direct: primary] sharelatex> use admin
switched to db admin
overleaf [direct: primary] admin> 

# Crea un nuevo rol con permiso para usar "getParamter". Copia y pega la función de abajo en la shell y pulsa la tecla Intro

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

# Vuelve a la base de datos "sharelatex" 
use sharelatex
switched to db sharelatex
overleaf [direct: primary] sharelatex> 

# Asigna el nuevo rol "clusterParameterReader" a tu usuario de base de datos copiando y pegando la función de abajo en la shell y pulsando la tecla Intro 
db.grantRolesToUser(
  "{{YOUR-DATABASE-USER}}",
  [
    { role: "clusterParameterReader", db: "admin" }
  ]
);

# Escribe exit y luego pulsa Intro para salir de la shell de MongoDB
# Ejecuta bin/up -d para iniciar la pila de despliegue
$ 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://ayakaleaf-pro.ayaka.space/on-premises/es/mantenimiento/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.
