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/cpuinfodebe 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.
Bashapt 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
Bashapt 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.
Bashmongosh
JavaScript1use 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:
YAMLsecurity: authorization: enabled
Bashsystemctl 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.
Bashmongosh -u admin -p --authenticationDatabase admin
JavaScript1use 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:
YAMLnet: 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:
Bashufw allow OpenSSH ufw allow from APP_SERVER_IP to any port 27017 proto tcp ufw enable systemctl restart mongod
✅ Verificar la instalación
Bashmongod --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.