Cómo crear una instancia de MongoDB en un VPS

Popular:
¡MEJORA LA CONFIGURACIÓN DE TU SERVIDOR! APLICAR AVA Y LANZA CON UN 15% DE DESCUENTO
USA EL CÓDIGO PROMOCIONAL:

Cómo crear una instancia de MongoDB en un VPS

Implementar MongoDB en un Virtual Private Server (VPS) te brinda control total sobre la infraestructura de tu base de datos, ideal para desarrolladores, startups y organizaciones que priorizan el rendimiento, la flexibilidad y la soberanía de los datos. Esta guía te llevará a través de los pasos avanzados para instalar, configurar, asegurar y optimizar MongoDB en un VPS.

🛠️ Paso 1: Actualiza tu sistema

sudo apt update && sudo apt upgrade -y

Configura tu hostname y zona horaria:

hostnamectl set-hostname mongodb-server
timedatectl set-timezone UTC

📦 Paso 2: Instala MongoDB

1. Importa la clave GPG de MongoDB

wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo gpg --dearmor -o /usr/share/keyrings/mongodb-server-6.0.gpg

2. Añade el repositorio de MongoDB

echo "deb [ signed-by=/usr/share/keyrings/mongodb-server-6.0.gpg ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list

Nota: Reemplaza focal con jammy o tu versión si usas Ubuntu 22.04.

3. Instala MongoDB

sudo apt update
sudo apt install -y mongodb-org

🧪 Paso 3: Inicia y habilita MongoDB

sudo systemctl start mongod
sudo systemctl enable mongod

Comprueba el estado:

sudo systemctl status mongod

🔐 Paso 4: Asegura tu servidor MongoDB

De forma predeterminada, MongoDB se enlaza a 127.0.0.1. Si quieres acceso remoto:

1. Edita la configuración

sudo nano /etc/mongod.conf

Encuentra la línea bindIp bajo net: y modifica:

bindIp: 127.0.0.1,0.0.0.0

2. Habilita la autenticación

Bajo la sección security:, añade:

security:
authorization: enabled

Reinicia MongoDB:

sudo systemctl restart mongod

👤 Paso 5: Crea un usuario administrador

Accede al shell de MongoDB:

mongosh

Crea un usuario administrador:

use admin
db.createUser({
user: "admin",
pwd: "StrongPassword123!",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
})

Sal con exit, luego prueba el inicio de sesión:

mongosh -u admin -p --authenticationDatabase admin

🛡️ Paso 6: Refuerza el VPS y MongoDB

1. Firewall UFW

sudo ufw allow OpenSSH
sudo ufw allow 27017/tcp
sudo ufw enable

Para acceso remoto desde una sola IP:

sudo ufw allow from YOUR.IP.ADDRESS to any port 27017

2. Fail2Ban (Protección SSH)

sudo apt install fail2ban -y
sudo systemctl enable fail2ban

⚙️ Paso 7: Optimización avanzada (opcional)

1. Replica Set para alta disponibilidad

Modifica /etc/mongod.conf:

replication:
replSetName: "rs0"

Inicializa:

mongosh
rs.initiate()

2. Estrategia de copias de seguridad

Usa mongodump para las copias de seguridad:

mongodump --out /var/backups/mongodb/$(date +%F)

Automatiza con cron:

crontab -e
# Daily at 2 AM
0 2 * * * /usr/bin/mongodump --out /var/backups/mongodb/$(date +%F)

3. Usa TLS/SSL para conexiones cifradas

Genera certificados y configura la sección net.ssl en mongod.conf. Esto requiere más configuración y una autoridad de certificación (CA) de confianza.

🧪 Paso 8: Prueba tu implementación

Puedes probar la conectividad remota:

mongosh "mongodb://admin:StrongPassword123!@your-server-ip:27017/admin"

Reemplaza your-server-ip con la IP de tu VPS o nombre de dominio.

📊 Paso 9: Supervisa tu MongoDB

Considera herramientas como:

  • MongoDB Atlas Monitoring Agent (opcional)

  • Prometheus + Grafana con exporters

  • Alertas personalizadas con cron y logwatch

También puedes ver los logs directamente:

sudo tail -f /var/log/mongodb/mongod.log

✅ Lista de verificación final

  • MongoDB instalado y en ejecución

  • Acceso remoto asegurado

  • Autenticación de administrador aplicada

  • Firewall configurado

  • Copias de seguridad en su lugar

  • Supervisión opcional habilitada

🧩 Conclusión

Ejecutar MongoDB en un VPS te brinda una flexibilidad inigualable, pero requiere prestar especial atención a la seguridad, las copias de seguridad y el rendimiento. Siguiendo esta guía, has creado una instancia de MongoDB segura y lista para producción, preparada para escalar a medida que tu aplicación crece.