Guide de déploiement

Héberger MongoDB sur un VPS

Déployer sur un VPS Cloud →

Bases de données8 min de lecture

Héberger MongoDB sur un VPS

MongoDB est la base documentaire de référence pour les applications modernes : schéma flexible, requêtes riches et scalabilité horizontale. L'auto-héberger sur un VPS vous libère des coûts par cluster d'Atlas et vous donne la main complète sur vos index, votre replica set et votre rétention de données.

Pourquoi auto-héberger MongoDB sur un VPS

MongoDB Atlas facture par cluster, par Go et par opération, et bride certaines fonctionnalités hors des paliers premium. En déployant MongoDB sur votre VPS, vous montez un replica set complet pour la haute disponibilité, vous activez le profiler et les index que vous voulez, et vous gardez vos documents sur une infrastructure que vous contrôlez. C'est pertinent pour une application Node.js/Express, un backend de logs, un catalogue produit à structure variable ou tout système où le schéma évolue vite. Avec WiredTiger comme moteur de stockage et un bon dimensionnement RAM pour le working set, un VPS offre des performances tout à fait comparables à une instance managée, à une fraction du coût.

Les bénéfices concrets d'un MongoDB auto-hébergé

  • Replica set complet (primaire + secondaires) sur plusieurs VPS pour la haute disponibilité.
  • Index et profiler sans restriction : compound, partiels, TTL, géospatiaux, full-text.
  • Contrôle du cache WiredTiger pour garder le working set en mémoire.
  • Pas de facturation par opération ni par taille de cluster : forfait VPS prévisible.
  • Sauvegardes via mongodump ou snapshots du volume, selon votre volumétrie.
  • Souveraineté et accès complet aux logs, métriques et configuration du serveur.

Prérequis matériels et logiciels

MongoDB tire parti de la RAM pour son cache WiredTiger : visez à pouvoir y loger votre working set (les données et index fréquemment accédés). Pour un projet de développement ou une petite app, 2 vCPU et 4 Go de RAM avec 40 Go de SSD conviennent. Pour de la production avec un replica set, prévoyez 4 vCPU et 8 Go de RAM par nœud, et idéalement trois VPS distincts (un primaire, deux secondaires, ou un arbitre pour le quorum). Côté logiciel : Ubuntu 22.04/24.04 LTS, Docker et Compose v2, un volume persistant pour /data/db, et un système de fichiers XFS recommandé par MongoDB pour WiredTiger. Un domaine est utile (ex : mongo.monapp.ma) si vous exposez l'accès via TLS.

Déployer MongoDB avec Docker en production

01

Préparer le VPS

Installez Docker, désactivez les Transparent Huge Pages (recommandation MongoDB), et fermez le port 27017 vers l'extérieur avec ufw deny 27017. Un MongoDB sans authentification exposé sur Internet est une cible immédiate de rançongiciel.

02

Définir le docker-compose.yml

Déclarez un service mongo:7, montez un volume sur /data/db, et passez MONGO_INITDB_ROOT_USERNAME et MONGO_INITDB_ROOT_PASSWORD via .env. Ajoutez la commande --auth pour forcer l'authentification dès le démarrage.

03

Créer les utilisateurs applicatifs

Après docker compose up -d, connectez-vous avec docker compose exec mongo mongosh, puis créez un utilisateur dédié à votre base avec le rôle readWrite uniquement. Réservez le compte root à l'administration, jamais à l'application.

04

Activer le replica set

Pour la haute disponibilité, lancez chaque nœud avec --replSet rs0, puis initialisez avec rs.initiate() en listant les membres. Le replica set apporte le failover automatique et permet les lectures sur les secondaires (readPreference: secondary).

05

Sécuriser l'accès distant en TLS

Si une app externe se connecte, activez TLS avec un certificat Let's Encrypt monté dans le conteneur (--tlsMode requireTLS), et utilisez la clé interne (--keyFile) pour authentifier les membres du replica set entre eux.

06

Indexer et sauvegarder

Créez vos index avec db.collection.createIndex() en analysant les requêtes via explain(). Planifiez un mongodump quotidien ou, pour les gros volumes, des snapshots cohérents du volume, et archivez-les hors du VPS.

Activez le profiler en mode lent (db.setProfilingLevel(1, { slowms: 100 })) pour capturer les requêtes dépassant 100 ms, puis croisez ces résultats avec explain('executionStats') : la plupart des problèmes de performance MongoDB viennent d'un index manquant qui force un COLLSCAN. Pour les séries temporelles (logs, métriques), exploitez les collections time-series natives de MongoDB 5+ : elles compressent automatiquement et réduisent l'empreinte disque de façon spectaculaire.

Déployez votre MongoDB en toute autonomie

Avec le VPS Cloud ServOrbit et son template Docker préconfiguré, montez un replica set MongoDB sur SSD NVMe avec RAM dédiée, sans facturation par cluster.

Besoin d'aide ?

Parcourez notre centre d'aide et notre FAQ, ou écrivez à notre équipe — support en anglais, français et arabe.