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

# Actualizar MongoDB

<Info>
  Cualquier nueva versión de Server CE/Server Pro indicará en sus [notas de la versión](https://docs.overleaf.com/on-premises/release-notes) cualquier cambio en la versión de MongoDB admitida.
</Info>

### ¿Debo actualizar MongoDB?

**Solo** deberías plantearte actualizar tu versión de MongoDB si tienes previsto actualizar tu instancia de Server CE/Server Pro.

Si ejecutas 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.

<Warning>
  Nunca debes volver a una versión anterior de MongoDB.
</Warning>

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

### Comprobar tu versión de MongoDB

Al abrir la shell de `mongo` debería mostrarse inmediatamente la versión actual.

Usuarios del 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"
    }
}
```

Usuarios de 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"
    }
}

```

### 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 se realiza de la siguiente manera:

1. Decide a qué versión de Server CE/Server Pro tienes previsto actualizar.
2. Busca la versión de MongoDB recomendada por esa versión concreta 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 está garantizado que tiene soporte (solo para usuarios de Server Pro).

<Danger>
  Al actualizar 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, tendrás que realizar una actualización en varios pasos.

  Por ejemplo, si ejecutas la 3.5.10, tendrás que actualizar a la 3.5.13 -> realizar la migración del historial completo de proyectos -> 4.2.9 -> 5.5.4.

  **Nunca** debes saltarte versiones principales (3.5.10 -> 5.5.4). Si usas el Toolkit y estás más de una versión principal por detrás de la última, **no** debes usar el script `bin/upgrade`, ya que tendrás que realizar una actualización manual en varios pasos.
</Danger>

<Warning>
  Es importante que hagas una [copia de seguridad consistente](/es/on-premises/maintenance/data-and-backups#performing-a-consistent-backup) **antes** de cada actualización de versión principal, para poder revertir los cambios si lo necesitas.
</Warning>

#### Información sobre versiones compatibles

Si decides pasar a una versión anterior, esta tabla muestra la versión de MongoDB recomendada para versiones anteriores de Server CE/Server Pro, pero **nunca** debes volver a una versión anterior de MongoDB.

<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" }}>Versión de MongoDB</th><th style={{ textAlign: "center" }}>Versión mínima de compatibilidad de funcionalidades</th><th style={{ textAlign: "center" }}>Versión máxima admitida por el driver de Node.js</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 a 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>
  La versión mínima de compatibilidad de funcionalidades indicada arriba se basa en la versión de MongoDB correspondiente recomendada para usarse con la versión de Overleaf mostrada. Si tienes previsto usar una versión superior, MongoDB tendrá su propio requisito mínimo.
</Danger>

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

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

#### Actualizar MongoDB

MongoDB requiere **actualizaciones paso a paso**. Esto significa que no puedes pasar directamente, por ejemplo, de `4.0` a `5.0`. Primero tienes que actualizar de `4.2` a `4.4` y, después, a `5.0`.

<Info>
  MongoDB usa números pares para sus versiones estables.
</Info>

#### **Instrucciones de actualización cuando MongoDB se ejecuta fuera de Docker**

Estos son los enlaces a las instrucciones de actualización de mongodb.com para actualizar MongoDB.

* [Notas de la versión de MongoDB: actualizar MongoDB de `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: actualizar MongoDB de `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: actualizar MongoDB de `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: actualizar MongoDB de `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: actualizar MongoDB de `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)

<Info>
  Las instrucciones para `5.0` y superiores hacen referencia a una instalación como replica set, en lugar de independiente. Como Server Pro/CE 4.0.1+ usa transacciones, MongoDB debe ejecutarse como replica set.
</Info>

<Warning>
  La documentación de MongoDB 3.2 a 4.2 está ahora disponible en [https://www.mongodb.com/docs/legacy/](https://www.mongodb.com/docs/legacy/)
</Warning>

**Instrucciones básicas**

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

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

**Ejemplo: actualizar MongoDB de `5.0` a `6.0`**

Empecemos por asegurarnos de que estamos ejecutando MongoDB `6.0`:

Usuarios del Overleaf Toolkit:

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

Usuarios de Docker Compose:

```bash theme={null}
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`. Para ello, abrimos una shell de MongoDB y ejecutamos el comando indicado:

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

Usuarios del Overleaf Toolkit:

A continuación, detendremos las instancias de Server CE/Server Pro y de MongoDB con el comando `bin/stop`, estableceremos `MONGO_VERSION=6.0` en `config/overleaf.rc` y reiniciaremos el servicio `mongo` con `bin/up mongo` para comprobar que la actualización se ha realizado 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 con el comando `bin/up -d`.

Usuarios de Docker Compose:

A continuación, detendremos las instancias de Server CE/Server Pro y de MongoDB con el comando `docker compose stop`, actualizaremos el archivo [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) para usar `image: mongo:6.0` y reiniciaremos el servicio `mongo` con el comando `docker compose up mongo` para comprobar que la actualización se ha realizado 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 con el comando `docker compose up`.

<strong>Ejemplo: actualizar MongoDB de `6.0` a `7.0` (usuarios del Toolkit)</strong>

Empieza por asegurarte de que estás ejecutando MongoDB `6.0` con los comandos `mongod --version` 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`. Para ello, abrimos una shell de MongoDB y ejecutamos el comando `db.adminCommand({ setFeatureCompatibilityVersion: "6.0" })`.

Usuarios del Overleaf Toolkit:

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

A continuación, detendremos las instancias de Server CE/Server Pro y de MongoDB con el comando `bin/stop`, estableceremos `MONGO_VERSION=7.0` en `config/overleaf.rc` y reiniciaremos el servicio `mongo` con `bin/up mongo` para comprobar que la actualización se ha realizado 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 con el comando `bin/up -d`.

<strong>Ejemplo: actualizar MongoDB de `7.0` a `8.0` (usuarios del Toolkit)</strong>

Empieza por asegurarte de que estás ejecutando MongoDB `7.0` con los comandos `mongod --version` 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`. Para ello, abrimos una shell de MongoDB y ejecutamos el comando `db.adminCommand({ setFeatureCompatibilityVersion: "7.0", confirm: true })`. Ten en cuenta que ahora se requiere el parámetro adicional `confirm: true`.

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

A continuación, detendremos las instancias de Server CE/Server Pro y de MongoDB con el comando `bin/stop`, estableceremos `MONGO_VERSION=8.0` en `config/overleaf.rc` y reiniciaremos el servicio `mongo` con `bin/up mongo` para comprobar que la actualización se ha realizado 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 con el comando `bin/up -d`.

#### 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
* el comando `docker compose stop` para detener el servidor
* Edita el archivo [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) para usar `image: mongo:6.0` y así actualizar la versión de mongo
* `docker compose up mongo` para reiniciar el servicio mongo y comprobar que la actualización se ha realizado sin problemas
* Edita el archivo [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) para usar `image: sharelatex:VERSION` y así actualizar la versión de la imagen
* `docker compose up` para recrear todos los servicios.

### Crear un rol personalizado

En la versión `5.5.1` introdujimos una comprobación al inicio para verificar la versión de compatibilidad de funcionalidades de MongoDB. Si tu base de datos MongoDB usa autenticación (por ejemplo, autenticación básica), es posible que el contenedor `sharelatex` no se inicie y muestre un error de permisos "*not authorized on admin to execute command*".

Para resolverlo, puedes crear un nuevo rol en MongoDB y asignarlo 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 se inicie el despliegue.

<Check>
  Este nuevo rol **solo** concede permiso para leer los parámetros del servidor MongoDB a nivel de clúster y podría reutilizarse con fines de monitorización.
</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.