Tutorial

Alojar MongoDB en un VPS

Bases de datos3 min de lectura6 pasos

MongoDB es la base de datos documental de referencia para las aplicaciones modernas: esquema flexible, consultas ricas y escalabilidad horizontal. Autoalojarla en un VPS le libera de los costes por clúster de Atlas y le da el control completo de sus índices, de su replica set y de su retención de datos.

Contenido· Por qué autoalojar MongoDB en un VPS1/4
  1. 01Por qué autoalojar MongoDB en un VPS
  2. 02Los beneficios concretos de un MongoDB autoalojado
  3. 03Requisitos de hardware y software
  4. 04Desplegar MongoDB con Docker en producción

Por qué autoalojar MongoDB en un VPS

MongoDB Atlas factura por clúster, por GB y por operación, y limita ciertas funcionalidades fuera de los niveles premium. Al desplegar MongoDB en su VPS, monta un replica set completo para la alta disponibilidad, activa el profiler y los índices que quiera, y conserva sus documentos en una infraestructura que usted controla. Es pertinente para una aplicación Node.js/Express, un backend de logs, un catálogo de productos de estructura variable o cualquier sistema donde el esquema evolucione rápido. Con WiredTiger como motor de almacenamiento y un buen dimensionamiento de RAM para el working set, un VPS ofrece un rendimiento totalmente comparable al de una instancia gestionada, a una fracción del coste.

Los beneficios concretos de un MongoDB autoalojado

  • Replica set completo (primario + secundarios) en varios VPS para la alta disponibilidad.
  • Índices y profiler sin restricción: compound, parciales, TTL, geoespaciales, full-text.
  • Control de la caché de WiredTiger para mantener el working set en memoria.
  • Sin facturación por operación ni por tamaño de clúster: tarifa de VPS previsible.
  • Copias de seguridad mediante mongodump o snapshots del volumen, según su volumetría.
  • Soberanía y acceso completo a los logs, las métricas y la configuración del servidor.

Requisitos de hardware y software

MongoDB aprovecha la RAM para su caché WiredTiger: procure que quepa en ella su working set (los datos y los índices consultados con frecuencia). Para un proyecto de desarrollo o una aplicación pequeña, 2 vCPU y 4 GB de RAM con 40 GB de SSD son suficientes. Para producción con un replica set, prevea 4 vCPU y 8 GB de RAM por nodo, e idealmente tres VPS distintos (uno primario, dos secundarios, o un árbitro para el quórum). En cuanto al software: Ubuntu 22.04/24.04 LTS, Docker y Compose v2, un volumen persistente para /data/db y un sistema de archivos XFS, recomendado por MongoDB para WiredTiger. Un dominio resulta útil (p. ej.: mongo.miapp.com) si expone el acceso por TLS.

Desplegar MongoDB con Docker en producción

  1. Preparar el VPS

    Instale Docker, desactive las Transparent Huge Pages (recomendación de MongoDB) y cierre el puerto 27017 hacia el exterior con ufw deny 27017. Un MongoDB sin autenticación expuesto en Internet es un blanco inmediato de ransomware.

  2. Definir el docker-compose.yml

    Declare un servicio mongo:7, monte un volumen en /data/db y pase MONGO_INITDB_ROOT_USERNAME y MONGO_INITDB_ROOT_PASSWORD mediante .env. Añada el comando --auth para forzar la autenticación desde el arranque.

  3. Crear los usuarios de la aplicación

    Después de docker compose up -d, conéctese con docker compose exec mongo mongosh y cree un usuario dedicado a su base de datos con el rol readWrite únicamente. Reserve la cuenta root para la administración, nunca para la aplicación.

  4. Activar el replica set

    Para la alta disponibilidad, arranque cada nodo con --replSet rs0 y después inicialice con rs.initiate() enumerando los miembros. El replica set aporta el failover automático y permite las lecturas en los secundarios (readPreference: secondary).

  5. Asegurar el acceso remoto con TLS

    Si una aplicación externa se conecta, active TLS con un certificado Let's Encrypt montado en el contenedor (--tlsMode requireTLS), y utilice la clave interna (--keyFile) para que los miembros del replica set se autentiquen entre sí.

  6. Indexar y respaldar

    Cree sus índices con db.collection.createIndex() analizando las consultas mediante explain(). Programe un mongodump diario o, para grandes volúmenes, snapshots coherentes del volumen, y archívelos fuera del VPS.

Active el profiler en modo lento (db.setProfilingLevel(1, { slowms: 100 })) para capturar las consultas que superen los 100 ms, y cruce después esos resultados con explain('executionStats'): la mayoría de los problemas de rendimiento de MongoDB provienen de un índice ausente que fuerza un COLLSCAN. Para las series temporales (logs, métricas), aproveche las colecciones time-series nativas de MongoDB 5+: se comprimen automáticamente y reducen la huella en disco de forma espectacular.

Despliegue su MongoDB con total autonomía

Con el VPS Cloud ServOrbit y su plantilla Docker preconfigurada, monte un replica set de MongoDB en SSD con RAM dedicada, sin facturación por clúster.

¿Necesita ayuda?

Consulte nuestro centro de ayuda y nuestra FAQ, o contacte con nuestro equipo: llamada, WhatsApp o correo electrónico. Soporte en francés, inglés y árabe.

Escribir por WhatsAppse abre en una pestaña nueva