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:

  • Un sistema Debian 10 Buster actualizado.
  • Acceso a línea de comandos con root o un usuario con privilegios de sudo.
  • Conexión a Internet.

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

~$ sudo apt update

E instalamos dichas herramientas:

~$ 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:

~$ 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:

~$ sudo nano /etc/apt/sources.list.d/mongodb-org.list

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

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:

~$ sudo apt update

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

~$ 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:

~$ 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:

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:

~$ 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():

> disableTelemetry()

Puedes cerrar la conexión con el comando 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:

~$ 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:

...
        /sys/kernel/mm/transparent_hugepage/enabled is 'always'. We suggest setting it to 'never'
...

Efectivamente, podemos comprobar dicho valor desde consola:

~$ 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:

~$ sudo nano /usr/lib/systemd/system/mongod.service

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

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

~$ sudo systemctl daemon-reload

Y reiniciamos el servicio:

~$ 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:

~$ mongosh

Seleccionamos la base de datos admin:

> use admin

Creamos el usuario:

> db.createUser({user: "chacho", pwd: "XXXXXXXX", roles: [{role: "root", db: "admin"}]})

Y cerramos la conexión:

> exit

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

~$ 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:

~$ sudo nano /etc/mongod.conf

Buscaremos la directiva security:

...
#security:
...

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

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

~$ 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:

~$ sudo nano /etc/mongod.conf

Buscamos la directiva bindIP en la sección net:

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

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

~$ 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:

~$ 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.