Comment créer une instance MongoDB sur un serveur privé virtuel (VPS)

Déployer MongoDB sur un serveur privé virtuel (VPS) vous donne un contrôle total sur votre infrastructure de base de données, ce qui est idéal pour les développeurs, les startups et les organisations qui privilégient la performance, la flexibilité et la souveraineté des données. Ce guide vous guidera à travers les étapes avancées pour installer, configurer, sécuriser et optimiser MongoDB sur un VPS.

🛠️ Étape 1 : Mettre à jour votre système

sudo apt update && sudo apt upgrade -y

Définissez votre nom d’hôte et votre fuseau horaire :

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

📦 Étape 2 : Installer MongoDB

1. Importer la clé 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. Ajouter le dépôt 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

Note : Remplacez focal par jammy ou votre version si vous utilisez Ubuntu 22.04.

3. Installer MongoDB

sudo apt update
sudo apt install -y mongodb-org

🧪 Étape 3 : Démarrer et activer MongoDB

sudo systemctl start mongod
sudo systemctl enable mongod

Vérifiez l’état :

sudo systemctl status mongod

🔐 Étape 4 : Sécuriser votre serveur MongoDB

Par défaut, MongoDB se lie à 127.0.0.1. Si vous souhaitez un accès à distance :

1. Modifiez la configuration

sudo nano /etc/mongod.conf

Trouvez la ligne bindIp sous net : et modifiez-la :

bindIp : 127. 0.0.1,0.0.0.0

2. Activer l’authentification

Dans la section security :, ajoutez :

security:
authorization: enabled

Redémarrez MongoDB :

sudo systemctl restart mongod

👤 Étape 5 : Créer l’utilisateur Admin

Accédez à l’interpréteur de commandes de MongoDB :

mongosh

Créez un utilisateur admin :

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

Quittez avec exit, puis testez la connexion :

mongosh -u admin -p --authenticationDatabase admin

🛡️ Étape 6 : Durcir le VPS et MongoDB

1. Pare-feu UFW

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

Pour l’accès à distance à partir d’une seule adresse IP :

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

2. Fail2Ban (protection SSH)

sudo apt install fail2ban -y
sudo systemctl enable fail2ban

⚙️ Étape 7 : Optimisation avancée (facultatif)

1. Jeu de répliques pour la haute disponibilité

Modifiez le fichier /etc/mongod.conf :

replication :
replSetName : "rs0"

Initialiser :

mongosh
rs.initiate()

2. Stratégie de sauvegarde

Utiliser mongodump pour les sauvegardes :

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

Automatiser avec cron :

crontab -e
# Tous les jours à 2 heures du matin
0 2 * * * * /usr/bin/mongodump --out /var/backups/mongodb/$(date \%F)

3. Utiliser TLS/SSL pour les connexions chiffrées

Générer des certificats et configurer la section net.ssl dans mongod.conf. Cela nécessite plus de configuration et une autorité de certification (CA) de confiance.

🧪 Étape 8 : Tester votre déploiement

Vous pouvez tester la connectivité à distance :

mongosh "mongodb://admin:StrongPassword123!@votre-serveur-ip:27017/admin"

Remplacez votre serveur-ip par l’IP de votre VPS ou votre nom de domaine.

📊 Étape 9 : Surveiller votre MongoDB

Envisagez des outils tels que :

  • MongoDB Atlas Monitoring Agent (optionnel)

  • Prometheus Grafana avec des exportateurs

  • Alertes personnalisées avec cron et logwatch

Vous pouvez également regarder les journaux directement :

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

liste de contrôle finale

  • MongoDB est installé et fonctionne

  • Accès à distance sécurisé

  • Authentification de l’administrateur

  • Pare-feu configuré

  • Sauvegardes en place

  • Surveillance optionnelle activée

🧩 Conclusion

L’exécution de MongoDB sur un VPS vous offre une flexibilité inégalée, mais elle nécessite une attention particulière à la sécurité, aux sauvegardes et aux performances. En suivant ce guide, vous avez créé une instance MongoDB sécurisée et prête pour la production, prête à évoluer au fur et à mesure que votre application se développe.