Cómo instalar MongoDB en Debian 10 Buster

En esta entrada veremos cómo instalar MongoDB en Debian 10 Buster paso a paso, un sistema de bases de datos NoSQL muy popular en desarrollos web para tu servidor o VPS Debian 10.

Antes de instalar MongoDB en Debian 10 Buster

Si quieres completar esta guía de instalación de MongoDB en Debian 10 Buster, necesitas cumplir al menos los siguientes requerimientos:

Necesitaremos algunas herramientas que podemos obtener desde los repositorios de Debian 10, por lo que actualizamos las listas de paquetes:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo apt update
~$ sudo apt update
~$ sudo apt update

E instalamos dichas herramientas:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo apt install -y gnupg
~$ sudo apt install -y gnupg
~$ sudo apt install -y gnupg

Cómo descargar MongoDB en Debian 10 Buster

A la hora de descargar MongoDB en Debian 10 Buster descubrimos que ya no existen paquetes en las listas de la propia distribución. Por tanto necesitamos añadir un nuevo repositorio, el oficial de mongodb.org, a las fuentes de apt.

Como los paquetes del repositorio que vamos a añadir están firmados, tenemos que importar la clave pública del certificado con que se firman:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ wget https://www.mongodb.org/static/pgp/server-5.0.asc -qO- | sudo apt-key add -
~$ wget https://www.mongodb.org/static/pgp/server-5.0.asc -qO- | sudo apt-key add -
~$ wget https://www.mongodb.org/static/pgp/server-5.0.asc -qO- | sudo apt-key add -

El comando anterior descarga la clave pública y la incorpora al llavero de apt.

Ahora debemos añadir un nuevo repositorio a la configuración de apt:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo nano /etc/apt/sources.list.d/mongodb-org.list
~$ sudo nano /etc/apt/sources.list.d/mongodb-org.list
~$ sudo nano /etc/apt/sources.list.d/mongodb-org.list

La única línea que añadiremos a este archivo es la siguiente:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
deb http://repo.mongodb.org/apt/debian buster/mongodb-org/5.0 main
deb http://repo.mongodb.org/apt/debian buster/mongodb-org/5.0 main
deb http://repo.mongodb.org/apt/debian buster/mongodb-org/5.0 main

Guardamos los cambios y cerramos el archivo.

Cómo instalar MongoDB en Debian 10 Buster

Para instalar MongoDB en Debian 10 Buster actualizaremos las listas de paquetes, que ahora incluyen el repositorio de MongoDB:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo apt update
~$ sudo apt update
~$ sudo apt update

El paquete que necesitamos instalar es mongodb-org, así que usaremos el comando apt para hacerlo:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo apt install -y mongodb-org
~$ sudo apt install -y mongodb-org
~$ sudo apt install -y mongodb-org

Una vez completada la descarga e instalación del paquete mongodb-org y sus dependencias se crea el servicio mongod.service o mongod en Debian 10 Buster.

Como el nuevo servicio de MongoDB no queda en ejecución ni habilitado, lo arrancaremos de forma manual la primera vez, y lo habilitaremos para que inicie automáticamente en cada arranque de Debian 10:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo systemctl enable --now mongod
~$ sudo systemctl enable --now mongod
~$ sudo systemctl enable --now mongod

La forma de comprobar que MongoDB está en ejecución en cualquier momento es a través del comando

systemctl status mongod
systemctl status mongod:

como instalar mongodb en debian 10 buster

Ya puedes comprobar que el servicio está listo para aceptar conexiones, lo que podremos corroborar usando el cliente mongosh:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ mongosh
Current Mongosh Log ID: 625485e56c7db201bb882e18
Connecting to: mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.3.1
Using MongoDB: 5.0.7
Using Mongosh: 1.3.1
For mongosh info see: https://docs.mongodb.com/mongodb-shell/
To help improve our products, anonymous usage data is collected and sent to MongoDB periodically (https://www.mongodb.com/legal/privacy-policy).
You can opt-out by running the disableTelemetry() command.
------
The server generated these startup warnings when booting:
###: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine. See http://dochub.mongodb.org/core/prodnotes-filesystem
###: Access control is not enabled for the database. Read and write access to data and configuration is unrestricted
###: /sys/kernel/mm/transparent_hugepage/enabled is 'always'. We suggest setting it to 'never'
------
test>
~$ mongosh Current Mongosh Log ID: 625485e56c7db201bb882e18 Connecting to: mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.3.1 Using MongoDB: 5.0.7 Using Mongosh: 1.3.1 For mongosh info see: https://docs.mongodb.com/mongodb-shell/ To help improve our products, anonymous usage data is collected and sent to MongoDB periodically (https://www.mongodb.com/legal/privacy-policy). You can opt-out by running the disableTelemetry() command. ------ The server generated these startup warnings when booting: ###: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine. See http://dochub.mongodb.org/core/prodnotes-filesystem ###: Access control is not enabled for the database. Read and write access to data and configuration is unrestricted ###: /sys/kernel/mm/transparent_hugepage/enabled is 'always'. We suggest setting it to 'never' ------ test>
~$ mongosh
Current Mongosh Log ID: 625485e56c7db201bb882e18
Connecting to:          mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.3.1
Using MongoDB:          5.0.7
Using Mongosh:          1.3.1

For mongosh info see: https://docs.mongodb.com/mongodb-shell/


To help improve our products, anonymous usage data is collected and sent to MongoDB periodically (https://www.mongodb.com/legal/privacy-policy).
You can opt-out by running the disableTelemetry() command.

------
   The server generated these startup warnings when booting:
   ###: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine. See http://dochub.mongodb.org/core/prodnotes-filesystem
   ###: Access control is not enabled for the database. Read and write access to data and configuration is unrestricted
   ###: /sys/kernel/mm/transparent_hugepage/enabled is 'always'. We suggest setting it to 'never'
------

test>

Al conectar al servidor MongoDB se nos informa de la existencia de un servicio anónimo de telemetría que recopila datos para la mejora del producto. Si no queremos participar en esta recopilación de datos podemos desactivar la telemetría con el comando disableTelemetry():

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
> disableTelemetry()
> disableTelemetry()
> disableTelemetry()

Puedes cerrar la conexión con el comando exit:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
> exit
> exit
> exit

Cómo configurar MongoDB en Debian 10 Buster

Si necesitas configurar MongoDB en Debian 10 Buster debes saber que el archivo de configuración es mongod.conf, situado en la habitual ruta /etc/.

Para aplicar cualquier cambio de configuración es necesario reiniciar el servicio:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo systemctl restart mongod
~$ sudo systemctl restart mongod
~$ sudo systemctl restart mongod

Configurar el kernel de Debian 10

Uno de los mensajes que se muestran cada vez que conectamos al servicio con el cliente mongosh es el que hace referencia a cierta configuración de memoria del kernel de Debian 10:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
...
/sys/kernel/mm/transparent_hugepage/enabled is 'always'. We suggest setting it to 'never'
...
... /sys/kernel/mm/transparent_hugepage/enabled is 'always'. We suggest setting it to 'never' ...
...
        /sys/kernel/mm/transparent_hugepage/enabled is 'always'. We suggest setting it to 'never'
...

Efectivamente, podemos comprobar dicho valor desde consola:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
~$ cat /sys/kernel/mm/transparent_hugepage/enabled [always] madvise never
~$ cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never

Puesto que MongoDB prefiere otro valor para este parámetro editaremos el archivo de configuración del servicio:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo nano /usr/lib/systemd/system/mongod.service
~$ sudo nano /usr/lib/systemd/system/mongod.service
~$ sudo nano /usr/lib/systemd/system/mongod.service

Añadiremos la siguiente directiva ExecStartPre antes de la directiva ExecStart que lanza el servicio:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
...
ExecStartPre=+/bin/sh -c "echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled"
ExecStart=/usr/bin/mongod --config /etc/mongod.conf
...
... ExecStartPre=+/bin/sh -c "echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled" ExecStart=/usr/bin/mongod --config /etc/mongod.conf ...
...
ExecStartPre=+/bin/sh -c "echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled"
ExecStart=/usr/bin/mongod --config /etc/mongod.conf
...

Tras guardar los cambios, recargamos la configuración del gestor de servicios SystemD:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo systemctl daemon-reload
~$ sudo systemctl daemon-reload
~$ sudo systemctl daemon-reload

Y reiniciamos el servicio:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo systemctl restart mongod
~$ sudo systemctl restart mongod
~$ sudo systemctl restart mongod

En la siguiente conexión ya no se mostrará el mensaje anterior, además de que este ajuste se aplicará en cada reinicio de Debian 10.

Acceso con contraseña

Por defecto no se necesita autenticación de usuario para conectar con el servicio, como ya hemos visto. Empezaremos creando un usuario administrador con contraseña, conectando con mongosh:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ mongosh
~$ mongosh
~$ mongosh

Seleccionamos la base de datos admin:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
> use admin
> use admin
> use admin

Creamos el usuario:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
> db.createUser({user: "chacho", pwd: "XXXXXXXX", roles: [{role: "root", db: "admin"}]})
> db.createUser({user: "chacho", pwd: "XXXXXXXX", roles: [{role: "root", db: "admin"}]})
> db.createUser({user: "chacho", pwd: "XXXXXXXX", roles: [{role: "root", db: "admin"}]})

Y cerramos la conexión:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
> exit
> exit
> exit

Ahora podremos usar el nuevo usuario para conectar con MongoDB, utilizando el parámetro -u:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ mongosh -u chacho
Enter password: ********
...
------
>
~$ mongosh -u chacho Enter password: ******** ... ------ >
~$ mongosh -u chacho
Enter password: ********
...
------
>

Finalmente, para activar el control de acceso y restringir las operaciones de lectura y escritura, editaremos el archivo mongod.conf:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo nano /etc/mongod.conf
~$ sudo nano /etc/mongod.conf
~$ sudo nano /etc/mongod.conf

Buscaremos la directiva security:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
...
#security:
...
... #security: ...
...
#security:
...

Está desactivada, así que eliminaremos el carácter # inicial y añadiremos la opción authorization:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
...
security:
authorization: enabled
...
... security: authorization: enabled ...
...
security:
  authorization: enabled
...

Sólo se pueden usar espacios en blanco para sangrar el texto en el archivo de configuración, no está permitido usar tabulaciones.

Guardamos los cambios y reiniciamos el servicio:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo systemctl restart mongod
~$ sudo systemctl restart mongod
~$ sudo systemctl restart mongod

Acceso remoto

Por defecto, el servicio corre en el puerto 27017 sólo atendiendo conexiones locales. Si quieres permitir acceso desde tu red local, por ejemplo, debes editar el archivo de configuración:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo nano /etc/mongod.conf
~$ sudo nano /etc/mongod.conf
~$ sudo nano /etc/mongod.conf

Buscamos la directiva bindIP en la sección net:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
...
net:
port: 27017
bindIp: 127.0.0.1
...
... net: port: 27017 bindIp: 127.0.0.1 ...
...
net:
  port: 27017
  bindIp: 127.0.0.1
...

Debes indicar la dirección del adapatador de red de la máquina Debian 10 desde el que provendrán las conexiones, o el valor 0.0.0.0:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
...
bindIp: 0.0.0.0
...
... bindIp: 0.0.0.0 ...
...
  bindIp: 0.0.0.0
...

Los cambios se aplicarán tras reiniciar el servicio.

Si tienes activado el firewall UFW en Debian 10, debes añadir la regla correspondiente:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo ufw allow 27017/tcp
~$ sudo ufw allow 27017/tcp
~$ sudo ufw allow 27017/tcp

Ahora es posible acceder desde otra máquina con un cliente como mongosh, especificando la dirección del servidor con el parámetro –host:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ mongosh --host debian10.local.lan -u chacho
~$ mongosh --host debian10.local.lan -u chacho
~$ mongosh --host debian10.local.lan -u chacho

instalar mongodb en debian 10 buster

Conclusión

Así de fácil es instalar MongoDB en Debian 10 Buster, basta con añadir el nuevo repositorio y con el tiempo se irán produciendo las actualizaciones correspondientes.

Para dudas, preguntas, sugerencias, etc. puedes dejar un comentario.

Ah, y si ya tienes el servicio en marcha gracias a esta breve guía de instalación de MongoDB en Debian 10 Buster y quieres agradecérmelo, puedes hacerlo dejando una propina de 1 $ con PayPal:

¡Gracias!

5/5 - (4 votos)

6 comentarios en «Cómo instalar MongoDB en Debian 10 Buster»

  1. ¡Salvaste! No encontraba el ExecStartPre.
    Trabajando el 31.12.2021 21:00, ajjjaja, pero no queda de otra en este rubro.

    ¡Gracias por tu aporte!

    Responder

Deja un comentario

Este sitio esta protegido por reCAPTCHA y laPolítica de privacidady losTérminos del servicio de Googlese aplican.

El periodo de verificación de reCAPTCHA ha caducado. Por favor, recarga la página.