Instalar y proteger MongoDB 8.0 en un VPS con Ubuntu 24.04

2 min
Hosting VPS/VDS

MongoDB es una base de datos orientada a documentos muy usada en APIs, aplicaciones Node.js y análisis de datos. Ubuntu no la incluye en sus repositorios, así que se instala desde el repositorio oficial de MongoDB. Esta guía la configura en un VPS Linux Infrawire, activa la autenticación y limita quién puede acceder.

📋 Requisitos previos

  • Un VPS con Ubuntu 24.04 (noble) en x86_64 o ARM64 y acceso SSH como root (la IP y la contraseña root están en tu área de cliente)
  • Una CPU que exponga el conjunto de instrucciones AVX (obligatorio desde MongoDB 5.0): grep -c avx /proc/cpuinfo debe devolver un número mayor que 0
  • Se recomiendan al menos 2 GB de RAM

1. Añadir el repositorio oficial

Importa la clave de firma y declara el repositorio para Ubuntu 24.04.

Bash
apt update && apt install -y curl gnupg curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg --dearmor echo 'deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu noble/mongodb-org/8.0 multiverse' > /etc/apt/sources.list.d/mongodb-org-8.0.list

2. Instalar e iniciar el servicio

Bash
apt update apt install -y mongodb-org systemctl enable --now mongod systemctl status mongod --no-pager

El metapaquete mongodb-org instala el servidor (mongod), la consola (mongosh) y las herramientas. Los datos están en /var/lib/mongodb y los registros en /var/log/mongodb/mongod.log.

3. Crear el administrador

La autenticación sigue desactivada, así que la consola local se conecta sin credenciales. Crea el primer administrador en la base admin; passwordPrompt() solicita la contraseña para que nunca quede en el historial del shell.

Bash
mongosh
JavaScript
1use admin 2db.createUser({ 3 user: 'admin', 4 pwd: passwordPrompt(), 5 roles: [ { role: 'userAdminAnyDatabase', db: 'admin' }, 'readWriteAnyDatabase' ] 6})

4. Activar la autenticación

Edita /etc/mongod.conf y añade (o descomenta) el bloque security:

YAML
security: authorization: enabled
Bash
systemctl restart mongod

A partir de ahora toda conexión debe autenticarse.

5. Crear un usuario para la aplicación

Tu aplicación nunca debería usar la cuenta de administrador. Dale un usuario limitado a su propia base de datos.

Bash
mongosh -u admin -p --authenticationDatabase admin
JavaScript
1use appdb 2db.createUser({ 3 user: 'appuser', 4 pwd: passwordPrompt(), 5 roles: [ { role: 'readWrite', db: 'appdb' } ] 6})

La cadena de conexión correspondiente es mongodb://appuser:PASSWORD@127.0.0.1:27017/appdb?authSource=appdb.

6. Acceso de red y cortafuegos

Por defecto MongoDB escucha solo en 127.0.0.1, la opción más segura cuando la aplicación se ejecuta en el mismo VPS. Para permitir otro servidor, añade la dirección del VPS en /etc/mongod.conf:

YAML
net: port: 27017 bindIp: 127.0.0.1,VPS_IP

Permite después únicamente al servidor de la aplicación en el cortafuegos y nunca abras el puerto 27017 a todo Internet:

Bash
ufw allow OpenSSH ufw allow from APP_SERVER_IP to any port 27017 proto tcp ufw enable systemctl restart mongod

✅ Verificar la instalación

Bash
mongod --version mongosh --eval 'db.runCommand({ ping: 1 })' mongosh -u appuser -p --authenticationDatabase appdb appdb --eval 'db.test.insertOne({ ok: true })' ss -ltnp | grep 27017

La última orden muestra en qué dirección escucha MongoDB. Una consulta sin autenticar como db.getUsers() debe fallar ahora con un error de autorización.

🔧 Solución de problemas

mongod no arranca (Illegal instruction o código de salida 132) : la CPU virtual no expone AVX. Comprueba grep avx /proc/cpuinfo; sin AVX, MongoDB 8.0 no puede ejecutarse en esa máquina.

El arranque falla con errores de permisos : corrige el propietario de los archivos de datos y del socket con chown -R mongodb:mongodb /var/lib/mongodb /var/log/mongodb, elimina un /tmp/mongodb-27017.sock obsoleto y reinicia. Los detalles están en journalctl -u mongod.

Authentication failed : el usuario se creó en una base concreta. Indica la correcta con --authenticationDatabase (o authSource en la URI).

La conexión remota agota el tiempo : revisa bindIp, las reglas de ufw status y que la IP del cliente coincida con la que permitiste.


🎉 MongoDB 8.0 está instalado, protegido con autenticación y listo para tu aplicación.

Mantente al día con las últimas ofertas, descuentos y promociones especiales.

Ver promociones

Utilizamos cookies

Utilizamos cookies analíticas para mejorar su experiencia en nuestro sitio. No vendemos datos a terceros. Más información en nuestra política de privacidad.