Cómo Instalar y Configurar MongoDB en un VPS (Guía Completa 2024)
MongoDB es una de las bases de datos NoSQL más adoptadas en el mundo — y con razón. Su modelo de documento flexible, rendimiento de lectura/escritura de alto rendimiento, y escalabilidad horizontal nativa la convierten en la opción preferida para APIs modernas, plataformas SaaS, CRMs, motores de comercio electrónico, y aplicaciones intensivas en datos. A diferencia de los servicios de bases de datos en la nube administrados, ejecutar MongoDB en tu propio VPS Hosting te da control completo sobre la optimización del rendimiento, el endurecimiento de la seguridad, y los costos a largo plazo.
Esta guía te acompaña a través de una instalación de MongoDB Community Edition 8.0 de grado de producción en un VPS Linux — cubriendo la configuración del repositorio oficial para Debian 12 y Ubuntu LTS, gestión de servicios, creación de usuarios y bases de datos, endurecimiento de seguridad (autenticación, vinculación de red, reglas de firewall), estrategias de copia de seguridad, y pasos comunes de solución de problemas. Ya sea que estés lanzando tu primera aplicación o migrando una carga de trabajo existente, esta guía pone MongoDB funcionando de manera confiable desde el primer día.
1. Requisitos previos
Antes de comenzar, asegúrate de que se cumplan las siguientes condiciones:
| Requisito | Detalles |
|---|---|
| Acceso VPS | Acceso SSH a nivel root o sudo |
| Sistema operativo | Debian 12 (Bookworm) de 64 bits o Ubuntu 22.04/24.04 LTS |
| RAM | Mínimo 1 GB; se recomienda 2 GB+ para producción |
| Almacenamiento | Se recomienda encarecidamente almacenamiento respaldado por SSD |
| Firewall | UFW o iptables disponibles |
> Importante: MongoDB 8.0 soporta oficialmente Debian 12 y versiones LTS de Ubuntu. Siempre instala desde los repositorios oficiales de MongoDB — nunca uses el paquete mongodb incluido en tu distribución Linux, ya que está desactualizado, no tiene soporte y puede entrar en conflicto con el paquete oficial mongodb-org.
Si aún no tienes un servidor, los planes de VPS Hosting de AlexHost ofrecen instancias VPS Linux respaldadas por SSD en infraestructura de alto rendimiento — ideales para ejecutar cargas de trabajo de bases de datos en producción.
Actualiza tu sistema primero
Siempre comienza con un sistema completamente actualizado:
sudo apt-get update && sudo apt-get -y upgrade
sudo apt-get install -y gnupg curl2. Instalar MongoDB en Debian 12 (Bookworm)
MongoDB no está disponible en los repositorios predeterminados de Debian, por lo que debe agregar el repositorio oficial de MongoDB APT manualmente.
Paso 1 — Importar la clave de firma GPG de MongoDB
curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc |
sudo gpg --dearmor -o /usr/share/keyrings/mongodb-server-8.0.gpgEsto descarga y almacena la clave GPG utilizada para verificar la integridad del paquete. Sin este paso, APT se negará a instalar paquetes del repositorio de MongoDB.
Paso 2 — Agregar el repositorio oficial de MongoDB
echo "deb [signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg]
https://repo.mongodb.org/apt/debian bookworm/mongodb-org/8.0 main" |
sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list > /dev/nullPaso 3 — Instalar MongoDB Community Edition
sudo apt-get update
sudo apt-get install -y mongodb-orgAPT ahora extraerá la última versión de MongoDB 8.0 directamente desde el CDN oficial de MongoDB.
3. Instalar MongoDB en Ubuntu LTS (24.04 / 22.04)
El proceso es casi idéntico a Debian, pero la URL del repositorio difiere según el nombre de código de Ubuntu.
Paso 1 — Importar la clave de firma GPG de MongoDB
curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc |
sudo gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg --dearmorPaso 2 — Agregar el repositorio para su versión de Ubuntu
Ubuntu 24.04 (Noble Numbat):
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" |
sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.listUbuntu 22.04 (Jammy Jellyfish):
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ]
https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/8.0 multiverse" |
sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.listPaso 3 — Instalar MongoDB Community Edition
sudo apt-get update
sudo apt-get install -y mongodb-org4. Iniciar y Habilitar el Servicio MongoDB
Una vez instalado, utiliza systemctl para iniciar MongoDB y configurarlo para que se lance automáticamente al reiniciar el servidor.
sudo systemctl daemon-reload
sudo systemctl start mongod
sudo systemctl enable mongod
sudo systemctl status mongod --no-pager¿Por qué daemon-reload?
La documentación oficial de MongoDB recomienda específicamente ejecutar systemctl daemon-reload antes de iniciar el servicio. Si omites este paso y ves el error "Unit mongod.service not found", ejecuta daemon-reload primero — fuerza a systemd a releer los archivos de unidad desde el disco.
Salida Esperada
Un servicio MongoDB saludable mostrará una salida similar a:
● mongod.service - MongoDB Database Server
Loaded: loaded (/lib/systemd/system/mongod.service; enabled)
Active: active (running) since ...Si el estado muestra failed o inactive, ve a la sección Solución de Problemas.
5. Crear Bases de Datos y Usuarios
MongoDB no aplica autenticación por defecto después de una instalación nueva. Esto significa que debes crear tu usuario administrador y usuarios de aplicación antes de habilitar la autenticación — de lo contrario, corres el riesgo de bloquearte a ti mismo.
Abrir el Shell de MongoDB
Conectarse a MongoDB localmente en el VPS:
mongoshPaso 1 — Crear un Usuario Administrativo
Cambiar a la base de datos admin y crear una cuenta de administrador privilegiada:
use admin
db.createUser({
user: "admin",
pwd: "STRONG_PASSWORD_HERE",
roles: [
{ role: "userAdminAnyDatabase", db: "admin" },
{ role: "readWriteAnyDatabase", db: "admin" }
]
})> Consejo de seguridad: Reemplaza STRONG_PASSWORD_HERE con una contraseña generada aleatoriamente de al menos 20 caracteres. Usa un gestor de contraseñas o ejecuta openssl rand -base64 24 en tu servidor para generar una.
Paso 2 — Crear una Base de Datos de Aplicación y Usuario
Crear una base de datos dedicada y un usuario con privilegios mínimos limitado solo a esa base de datos:
use myapp
db.createUser({
user: "myapp_user",
pwd: "STRONG_PASSWORD_HERE",
roles: [
{ role: "readWrite", db: "myapp" }
]
})Esto sigue el principio del menor privilegio — tu aplicación solo tiene acceso de lectura/escritura a su propia base de datos, no a toda la instancia de MongoDB.
Paso 3 — Verificar que los Usuarios Fueron Creados
use admin
db.getUsers()Salir del shell:
exit6. Asegura tu instancia de MongoDB
Esta es la sección más crítica de la guía. Las instancias de MongoDB mal configuradas expuestas a internet público han sido responsables de numerosas brechas de datos de alto perfil. La propia lista de verificación de seguridad de MongoDB es explícita: refuerza tu instancia antes de exponerla a cualquier red.
A) Vincula MongoDB solo a Localhost (Recomendado por defecto)
Por defecto, MongoDB puede escuchar en todas las interfaces de red. Restrínguelo a localhost a menos que tenga una necesidad específica y justificada de acceso remoto.
Edita /etc/mongod.conf:
net:
bindIp: 127.0.0.1Aplica el cambio:
sudo systemctl restart mongodEsto asegura que MongoDB solo sea accesible desde el servidor mismo — no desde internet público.
B) Habilita la autenticación
Sin autenticación habilitada, cualquier proceso local puede conectarse a MongoDB sin contraseña. Edita /etc/mongod.conf:
security:
authorization: enabledReinicia el servicio:
sudo systemctl restart mongodAhora prueba que la autenticación se aplique:
mongosh -u admin -p --authenticationDatabase adminC) Configura el Firewall
Si necesitas permitir conexiones remotas (por ejemplo, desde un servidor de aplicaciones en una máquina diferente), restringe el puerto 27017 solo a una dirección IP confiable específica. Nunca abras el puerto 27017 a 0.0.0.0/0.
Usando UFW:
sudo ufw allow from YOUR.TRUSTED.IP.ADDRESS to any port 27017 proto tcp
sudo ufw enable
sudo ufw statusVerifica que la regla esté activa:
sudo ufw status verboseD) Usa SSH Tunneling para acceso remoto seguro (Mejor práctica)
La forma más segura de acceder a MongoDB de forma remota es a través de un túnel SSH. Esto evita abrir el puerto 27017 completamente y cifra todo el tráfico en tránsito.
Desde tu máquina local:
ssh -L 27017:127.0.0.1:27017 root@YOUR_VPS_IPLuego conecta desde tu shell de MongoDB local como si fuera local:
mongosh "mongodb://myapp_user:PASS@127.0.0.1:27017/myapp?authSource=myapp"Este enfoque se recomienda fuertemente para desarrolladores que acceden a bases de datos de producción desde laptops o estaciones de trabajo remotas.
Resumen de endurecimiento de seguridad
| Medida de seguridad | Ubicación de configuración | Prioridad |
|---|---|---|
| Vincula solo a localhost | /etc/mongod.conf → net.bindIp | Crítica |
| Habilita autenticación | /etc/mongod.conf → security.authorization | Crítica |
| Restricción de puerto del firewall | UFW / iptables | Alta |
| SSH tunnel para acceso remoto | Configuración SSH del cliente | Alta |
| Usa usuarios de BD con privilegios mínimos | mongosh → db.createUser() | Alta |
| Mantén MongoDB actualizado | apt-get upgrade mongodb-org | Media |
7. Copia de seguridad y restauración
Las copias de seguridad regulares son imprescindibles para cualquier base de datos de producción. MongoDB incluye mongodump y mongorestore como parte del paquete MongoDB Database Tools.
Crear un archivo de copia de seguridad comprimido
mongodump
--username admin
--password STRONG_PASSWORD_HERE
--authenticationDatabase admin
--archive=/root/mongo-backup.archive
--gzipEsto crea un único archivo comprimido que contiene un volcado lógico de todas las bases de datos.
Restaurar desde un archivo de copia de seguridad
mongorestore
--username admin
--password STRONG_PASSWORD_HERE
--authenticationDatabase admin
--archive=/root/mongo-backup.archive
--gzipAutomatizar copias de seguridad con Cron
Programa copias de seguridad diarias usando cron:
crontab -eAñade la siguiente línea para ejecutar una copia de seguridad cada día a las 2:00 AM:
0 2 * * * mongodump --username admin --password PASS --authenticationDatabase admin --archive=/root/backups/mongo-$(date +%F).archive --gzip> Consejo profesional: Para redundancia fuera del sitio, considera sincronizar archivos de copia de seguridad a una ubicación de almacenamiento externo usando rsync o rclone. Nunca almacenes tu única copia de seguridad en el mismo servidor que tu base de datos.
8. Solución de problemas comunes
Verificar registros de servicio
El primer lugar donde buscar cuando MongoDB no se inicia o se comporta de manera inesperada:
sudo journalctl -u mongod --no-pager -n 200Esto muestra las últimas 200 líneas del journal de systemd de MongoDB — generalmente suficiente para identificar la causa raíz.
Verificar que MongoDB esté escuchando en el puerto esperado
sudo ss -lntp | grep 27017Salida esperada si MongoDB se está ejecutando y está vinculado a localhost:
LISTEN 0 128 127.0.0.1:27017 0.0.0.0:* users:(("mongod",...))Si no hay salida, MongoDB no se está ejecutando o está vinculado a una interfaz diferente.
Verificar la versión instalada de MongoDB
mongod --versionMensajes de error comunes y soluciones
| Error | Causa probable | Solución | |
|---|---|---|---|
Unit mongod.service not found | systemd no ha cargado el archivo de unidad | Ejecutar sudo systemctl daemon-reload | |
Address already in use | El puerto 27017 está ocupado por otro proceso | Ejecutar `sudo ss -lntp | grep 27017` para identificar el conflicto |
Authentication failed | Credenciales incorrectas o authSource incorrecto | Verificar nombre de usuario, contraseña y authenticationDatabase | |
Connection refused | MongoDB no se está ejecutando o está vinculado a IP incorrecta | Verificar bindIp en mongod.conf y estado del servicio | |
mongod.conf permission denied | Problema de permisos de archivo | Ejecutar sudo chmod 600 /etc/mongod.conf |
9. Reflexiones Finales
Ejecutar MongoDB en un VPS es un enfoque probado y rentable para cargas de trabajo de producción que demandan flexibilidad, rendimiento y control total de la infraestructura. Siguiendo esta guía, has instalado MongoDB 8.0 desde repositorios oficiales, configurado autenticación y vinculación de red, creado usuarios de base de datos con privilegios mínimos, establecido reglas de firewall y creado una rutina de copias de seguridad.
Algunos puntos clave a recordar:
- Siempre habilita la autenticación — una instancia de MongoDB sin autenticación es una vulnerabilidad de seguridad crítica.
- Nunca expongas el puerto 27017 a Internet público — utiliza túneles SSH o restringe el acceso a IPs específicas de confianza.
- Mantén MongoDB actualizado — ejecuta
sudo apt-get upgrade mongodb-orgregularmente para recibir parches de seguridad. - Prueba tus copias de seguridad — una copia de seguridad que nunca has restaurado es una copia de seguridad en la que no puedes confiar.
Para equipos que necesitan una base confiable y de alto rendimiento para implementaciones de MongoDB, el VPS Hosting de AlexHost proporciona almacenamiento SSD NVMe, acceso root completo y escalado flexible de recursos. Si tu carga de trabajo crece más allá de un único VPS, los Servidores Dedicados ofrecen recursos de CPU y RAM dedicados sin efectos de vecino ruidoso — ideales para conjuntos de réplicas MongoDB de alto tráfico o clústeres fragmentados.
¿Necesitas una pila de hosting completa? Combina tu VPS de base de datos con Hosting Web Compartido para tu front-end o activos estáticos, y asegura el tráfico de tu aplicación con un Certificado SSL para proteger los datos en tránsito entre tus usuarios y tus servidores.
*Última actualización para MongoDB Community Edition 8.0 en Debian 12 (Bookworm) y Ubuntu 22.04/24.04 LTS.*
en todos los servicios de hosting