Comment installer et configurer MongoDB sur un VPS (Guide complet 2024)
MongoDB est l’une des bases de données NoSQL les plus largement adoptées au monde — et pour une bonne raison. Son modèle de document flexible, ses performances élevées en lecture/écriture, et sa scalabilité horizontale native en font le backend incontournable pour les APIs modernes, les plateformes SaaS, les CRM, les moteurs e-commerce et les applications gourmandes en données. Contrairement aux services de bases de données cloud gérés, l’exécution de MongoDB sur votre propre VPS Hosting vous donne un contrôle complet sur l’optimisation des performances, le renforcement de la sécurité et les coûts à long terme.
Ce guide vous accompagne à travers une installation de MongoDB Community Edition 8.0 de qualité production sur un VPS Linux — couvrant la configuration du référentiel officiel pour Debian 12 et Ubuntu LTS, la gestion des services, la création d’utilisateurs et de bases de données, le renforcement de la sécurité (authentification, liaison réseau, règles de pare-feu), les stratégies de sauvegarde et les étapes courantes de dépannage. Que vous lanciez votre première application ou que vous migriez une charge de travail existante, ce guide fait fonctionner MongoDB de manière fiable dès le premier jour.
1. Conditions préalables
Avant de commencer, assurez-vous que les conditions suivantes sont remplies :
| Exigence | Détails |
|---|---|
| Accès VPS | Accès SSH au niveau root ou sudo |
| Système d’exploitation | Debian 12 (Bookworm) 64 bits ou Ubuntu 22.04/24.04 LTS |
| RAM | Minimum 1 GB ; 2 GB+ recommandé pour la production |
| Stockage | Stockage SSD fortement recommandé |
| Pare-feu | UFW ou iptables disponible |
> Important : MongoDB 8.0 supporte officiellement Debian 12 et les versions LTS d’Ubuntu. Installez toujours à partir des référentiels officiels de MongoDB — n’utilisez jamais le package mongodb fourni avec votre distribution Linux, car il est obsolète, non supporté et peut entrer en conflit avec le package officiel mongodb-org.
Si vous n’avez pas encore de serveur, les plans VPS Hosting d’AlexHost offrent des instances VPS Linux avec stockage SSD sur une infrastructure haute performance — idéales pour exécuter des charges de travail de base de données en production.
Mettez à jour votre système d’abord
Commencez toujours par un système entièrement à jour :
sudo apt-get update && sudo apt-get -y upgrade
sudo apt-get install -y gnupg curl2. Installer MongoDB sur Debian 12 (Bookworm)
MongoDB n’est pas disponible dans les dépôts Debian par défaut, vous devez donc ajouter manuellement le dépôt APT officiel de MongoDB.
Étape 1 — Importer la clé de signature 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.gpgCela télécharge et stocke la clé GPG utilisée pour vérifier l’intégrité des paquets. Sans cette étape, APT refusera d’installer les paquets du dépôt MongoDB.
Étape 2 — Ajouter le dépôt officiel 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/nullÉtape 3 — Installer MongoDB Community Edition
sudo apt-get update
sudo apt-get install -y mongodb-orgAPT extraira maintenant la dernière version de MongoDB 8.0 directement depuis le CDN officiel de MongoDB.
3. Installer MongoDB sur Ubuntu LTS (24.04 / 22.04)
Le processus est presque identique à Debian, mais l’URL du référentiel diffère selon le nom de code Ubuntu.
Étape 1 — Importer la clé de signature GPG MongoDB
curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc |
sudo gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg --dearmorÉtape 2 — Ajouter le référentiel pour votre version 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.listÉtape 3 — Installer MongoDB Community Edition
sudo apt-get update
sudo apt-get install -y mongodb-org4. Démarrer et activer le service MongoDB
Une fois installé, utilisez systemctl pour démarrer MongoDB et le configurer pour qu’il se lance automatiquement au redémarrage du serveur.
sudo systemctl daemon-reload
sudo systemctl start mongod
sudo systemctl enable mongod
sudo systemctl status mongod --no-pagerPourquoi daemon-reload?
La documentation officielle de MongoDB recommande spécifiquement d’exécuter systemctl daemon-reload avant de démarrer le service. Si vous ignorez cette étape et voyez l’erreur "Unit mongod.service not found", exécutez d’abord daemon-reload — cela force systemd à relire les fichiers d’unité à partir du disque.
Résultat attendu
Un service MongoDB sain affichera une sortie similaire à:
● mongod.service - MongoDB Database Server
Loaded: loaded (/lib/systemd/system/mongod.service; enabled)
Active: active (running) since ...Si le statut affiche failed ou inactive, passez à la section Dépannage.
5. Créer des bases de données et des utilisateurs
MongoDB n’applique pas l’authentification par défaut après une installation récente. Cela signifie que vous devez créer vos utilisateurs administrateur et application avant d’activer l’authentification — sinon vous risquez de vous verrouiller.
Ouvrir le shell MongoDB
Connectez-vous à MongoDB localement sur le VPS :
mongoshÉtape 1 — Créer un utilisateur administrateur
Basculez vers la base de données admin et créez un compte administrateur privilégié :
use admin
db.createUser({
user: "admin",
pwd: "STRONG_PASSWORD_HERE",
roles: [
{ role: "userAdminAnyDatabase", db: "admin" },
{ role: "readWriteAnyDatabase", db: "admin" }
]
})> Conseil de sécurité : Remplacez STRONG_PASSWORD_HERE par un mot de passe généré aléatoirement d’au moins 20 caractères. Utilisez un gestionnaire de mots de passe ou exécutez openssl rand -base64 24 sur votre serveur pour en générer un.
Étape 2 — Créer une base de données d’application et un utilisateur
Créez une base de données dédiée et un utilisateur avec privilèges minimaux limité à cette base de données uniquement :
use myapp
db.createUser({
user: "myapp_user",
pwd: "STRONG_PASSWORD_HERE",
roles: [
{ role: "readWrite", db: "myapp" }
]
})Cela suit le principe du moindre privilège — votre application n’a accès en lecture/écriture qu’à sa propre base de données, pas à l’ensemble de l’instance MongoDB.
Étape 3 — Vérifier que les utilisateurs ont été créés
use admin
db.getUsers()Quittez le shell :
exit6. Sécurisez votre instance MongoDB
Ceci est la section la plus critique du guide. Les instances MongoDB mal configurées exposées à l’internet public ont été responsables de nombreuses violations de données très médiatisées. La propre liste de contrôle de sécurité de MongoDB est explicite : renforcez votre instance avant de l’exposer à n’importe quel réseau.
A) Lier MongoDB à Localhost uniquement (Défaut recommandé)
Par défaut, MongoDB peut écouter sur toutes les interfaces réseau. Limitez-le à localhost sauf si vous avez un besoin spécifique et justifié d’accès à distance.
Modifiez /etc/mongod.conf :
net:
bindIp: 127.0.0.1Appliquez la modification :
sudo systemctl restart mongodCela garantit que MongoDB n’est accessible que depuis le serveur lui-même — pas depuis l’internet public.
B) Activez l’authentification
Sans authentification activée, tout processus local peut se connecter à MongoDB sans mot de passe. Modifiez /etc/mongod.conf :
security:
authorization: enabledRedémarrez le service :
sudo systemctl restart mongodTestez maintenant que l’authentification est appliquée :
mongosh -u admin -p --authenticationDatabase adminC) Configurez le pare-feu
Si vous devez autoriser les connexions à distance (par exemple, depuis un serveur d’application sur une machine différente), limitez le port 27017 à une adresse IP de confiance spécifique uniquement. N’ouvrez jamais le port 27017 à 0.0.0.0/0.
Utilisation d’UFW :
sudo ufw allow from YOUR.TRUSTED.IP.ADDRESS to any port 27017 proto tcp
sudo ufw enable
sudo ufw statusVérifiez que la règle est active :
sudo ufw status verboseD) Utilisez le tunneling SSH pour un accès à distance sécurisé (Meilleure pratique)
Le moyen le plus sûr d’accéder à MongoDB à distance est via un tunnel SSH. Cela évite d’ouvrir complètement le port 27017 et chiffre tout le trafic en transit.
Depuis votre machine locale :
ssh -L 27017:127.0.0.1:27017 root@YOUR_VPS_IPConnectez-vous ensuite depuis votre shell MongoDB local comme s’il était local :
mongosh "mongodb://myapp_user:PASS@127.0.0.1:27017/myapp?authSource=myapp"Cette approche est fortement recommandée pour les développeurs accédant aux bases de données de production depuis des ordinateurs portables ou des postes de travail distants.
Résumé du renforcement de la sécurité
| Mesure de sécurité | Emplacement de configuration | Priorité |
|---|---|---|
| Lier à localhost uniquement | /etc/mongod.conf → net.bindIp | Critique |
| Activer l’authentification | /etc/mongod.conf → security.authorization | Critique |
| Restriction du port pare-feu | UFW / iptables | Élevée |
| Tunnel SSH pour accès à distance | Configuration SSH côté client | Élevée |
| Utiliser les utilisateurs de base de données avec privilèges minimaux | mongosh → db.createUser() | Élevée |
| Maintenir MongoDB à jour | apt-get upgrade mongodb-org | Moyen |
7. Sauvegarde et restauration
Les sauvegardes régulières sont indispensables pour toute base de données en production. MongoDB inclut mongodump et mongorestore dans le package MongoDB Database Tools.
Créer une archive de sauvegarde compressée
mongodump
--username admin
--password STRONG_PASSWORD_HERE
--authenticationDatabase admin
--archive=/root/mongo-backup.archive
--gzipCela crée un fichier d’archive compressé unique contenant un vidage logique de toutes les bases de données.
Restaurer à partir d’une archive de sauvegarde
mongorestore
--username admin
--password STRONG_PASSWORD_HERE
--authenticationDatabase admin
--archive=/root/mongo-backup.archive
--gzipAutomatiser les sauvegardes avec Cron
Planifiez les sauvegardes quotidiennes à l’aide de cron :
crontab -eAjoutez la ligne suivante pour exécuter une sauvegarde tous les jours à 2h00 du matin :
0 2 * * * mongodump --username admin --password PASS --authenticationDatabase admin --archive=/root/backups/mongo-$(date +%F).archive --gzip> Conseil professionnel : Pour la redondance hors site, envisagez de synchroniser les archives de sauvegarde vers un emplacement de stockage externe à l’aide de rsync ou rclone. Ne stockez jamais votre seule sauvegarde sur le même serveur que votre base de données.
8. Dépannage des problèmes courants
Vérifier les journaux de service
Le premier endroit à consulter lorsque MongoDB ne démarre pas ou se comporte de manière inattendue :
sudo journalctl -u mongod --no-pager -n 200Cela affiche les 200 dernières lignes du journal systemd de MongoDB — généralement suffisant pour identifier la cause racine.
Vérifier que MongoDB écoute sur le port attendu
sudo ss -lntp | grep 27017Résultat attendu si MongoDB s’exécute et est lié à localhost :
LISTEN 0 128 127.0.0.1:27017 0.0.0.0:* users:(("mongod",...))S’il n’y a pas de résultat, MongoDB n’est pas en cours d’exécution ou est lié à une interface différente.
Vérifier la version MongoDB installée
mongod --versionMessages d’erreur courants et corrections
| Erreur | Cause probable | Correction | |
|---|---|---|---|
Unit mongod.service not found | systemd n’a pas chargé le fichier d’unité | Exécutez sudo systemctl daemon-reload | |
Address already in use | Le port 27017 est occupé par un autre processus | Exécutez `sudo ss -lntp | grep 27017` pour identifier le conflit |
Authentication failed | Identifiants incorrects ou mauvais authSource | Vérifiez le nom d’utilisateur, le mot de passe et authenticationDatabase | |
Connection refused | MongoDB n’est pas en cours d’exécution ou est lié à la mauvaise IP | Vérifiez bindIp dans mongod.conf et l’état du service | |
mongod.conf permission denied | Problème de permissions de fichier | Exécutez sudo chmod 600 /etc/mongod.conf |
9. Réflexions finales
L’exécution de MongoDB sur un VPS est une approche éprouvée et rentable pour les charges de travail en production qui exigent de la flexibilité, des performances et un contrôle complet de l’infrastructure. En suivant ce guide, vous avez installé MongoDB 8.0 à partir des référentiels officiels, configuré l’authentification et la liaison réseau, créé des utilisateurs de base de données avec privilèges minimaux, configuré les règles de pare-feu et établi une routine de sauvegarde.
Quelques points clés à retenir :
- Activez toujours l’authentification — une instance MongoDB non authentifiée est une vulnérabilité de sécurité critique.
- N’exposez jamais le port 27017 à l’Internet public — utilisez le tunneling SSH ou limitez l’accès à des adresses IP spécifiques de confiance.
- Maintenez MongoDB à jour — exécutez
sudo apt-get upgrade mongodb-orgrégulièrement pour recevoir les correctifs de sécurité. - Testez vos sauvegardes — une sauvegarde que vous n’avez jamais restaurée est une sauvegarde à laquelle vous ne pouvez pas faire confiance.
Pour les équipes qui ont besoin d’une base fiable et haute performance pour les déploiements MongoDB, l’hébergement VPS d’AlexHost offre un stockage SSD NVMe, un accès root complet et une mise à l’échelle flexible des ressources. Si votre charge de travail dépasse un seul VPS, les serveurs dédiés offrent des ressources CPU et RAM dédiées sans effets de voisinage bruyant — idéal pour les ensembles de réplicas MongoDB ou les clusters fragmentés à fort trafic.
Besoin d’une pile d’hébergement complète ? Associez votre VPS de base de données à l’hébergement Web partagé pour votre front-end ou vos actifs statiques, et sécurisez le trafic de votre application avec un certificat SSL pour protéger les données en transit entre vos utilisateurs et vos serveurs.
*Dernière mise à jour pour MongoDB Community Edition 8.0 sur Debian 12 (Bookworm) et Ubuntu 22.04/24.04 LTS.*
sur tous les services d'hébergement