Installer et sécuriser MongoDB 8.0 sur un VPS Ubuntu 24.04

2 min
Hébergement VPS/VDS

MongoDB est une base orientée documents très utilisée pour les API, les applications Node.js et l'analytique. Ubuntu ne la fournit pas dans ses dépôts : on l'installe depuis le dépôt officiel de MongoDB. Ce guide la met en place sur un VPS Linux Infrawire, active l'authentification et limite les accès.

📋 Prérequis

  • Un VPS sous Ubuntu 24.04 (noble) en x86_64 ou ARM64, avec accès SSH root (IP et mot de passe root dans votre espace client)
  • Un processeur exposant le jeu d'instructions AVX (exigé depuis MongoDB 5.0) : grep -c avx /proc/cpuinfo doit renvoyer un nombre supérieur à 0
  • Au moins 2 Go de RAM recommandés

1. Ajouter le dépôt officiel

Importez la clé de signature et déclarez le dépôt pour Ubuntu 24.04.

Bash
apt update && apt install -y curl gnupg curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg --dearmor 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' > /etc/apt/sources.list.d/mongodb-org-8.0.list

2. Installer et démarrer le service

Bash
apt update apt install -y mongodb-org systemctl enable --now mongod systemctl status mongod --no-pager

Le méta-paquet mongodb-org installe le serveur (mongod), le shell (mongosh) et les outils. Les données sont dans /var/lib/mongodb, les journaux dans /var/log/mongodb/mongod.log.

3. Créer l'administrateur

L'authentification est encore désactivée : le shell local se connecte sans identifiants. Créez le premier administrateur dans la base admin ; passwordPrompt() demande le mot de passe pour qu'il n'apparaisse jamais dans l'historique du shell.

Bash
mongosh
JavaScript
1use admin 2db.createUser({ 3 user: 'admin', 4 pwd: passwordPrompt(), 5 roles: [ { role: 'userAdminAnyDatabase', db: 'admin' }, 'readWriteAnyDatabase' ] 6})

4. Activer l'authentification

Modifiez /etc/mongod.conf et ajoutez (ou décommentez) le bloc security :

YAML
security: authorization: enabled
Bash
systemctl restart mongod

Désormais, toute connexion doit s'authentifier.

5. Créer un utilisateur applicatif

Votre application ne doit jamais utiliser le compte administrateur. Donnez-lui un utilisateur limité à sa propre base.

Bash
mongosh -u admin -p --authenticationDatabase admin
JavaScript
1use appdb 2db.createUser({ 3 user: 'appuser', 4 pwd: passwordPrompt(), 5 roles: [ { role: 'readWrite', db: 'appdb' } ] 6})

La chaîne de connexion correspondante est mongodb://appuser:PASSWORD@127.0.0.1:27017/appdb?authSource=appdb.

6. Accès réseau et pare-feu

Par défaut, MongoDB écoute uniquement sur 127.0.0.1, ce qui est le réglage le plus sûr quand l'application tourne sur le même VPS. Pour autoriser un autre serveur, ajoutez l'adresse du VPS dans /etc/mongod.conf :

YAML
net: port: 27017 bindIp: 127.0.0.1,VPS_IP

Autorisez ensuite uniquement le serveur applicatif dans le pare-feu, et n'ouvrez jamais le port 27017 à tout Internet :

Bash
ufw allow OpenSSH ufw allow from APP_SERVER_IP to any port 27017 proto tcp ufw enable systemctl restart mongod

✅ Vérifier l'installation

Bash
mongod --version mongosh --eval 'db.runCommand({ ping: 1 })' mongosh -u appuser -p --authenticationDatabase appdb appdb --eval 'db.test.insertOne({ ok: true })' ss -ltnp | grep 27017

La dernière commande indique l'adresse sur laquelle MongoDB écoute. Une requête non authentifiée comme db.getUsers() doit maintenant échouer avec une erreur d'autorisation.

🔧 Dépannage

mongod ne démarre pas (Illegal instruction ou code de sortie 132) : le processeur virtuel n'expose pas AVX. Vérifiez avec grep avx /proc/cpuinfo ; sans AVX, MongoDB 8.0 ne peut pas fonctionner sur cette machine.

Échec du démarrage avec des erreurs de permissions : corrigez le propriétaire des fichiers de données et du socket avec chown -R mongodb:mongodb /var/lib/mongodb /var/log/mongodb, supprimez un éventuel /tmp/mongodb-27017.sock résiduel, puis redémarrez. Les détails sont dans journalctl -u mongod.

Authentication failed : l'utilisateur a été créé dans une base précise. Indiquez la bonne avec --authenticationDatabase (ou authSource dans l'URI).

La connexion distante expire : vérifiez bindIp, les règles de ufw status et que l'IP du client correspond à celle que vous avez autorisée.


🎉 MongoDB 8.0 est installé, protégé par authentification et prêt pour votre application !

Restez à jour avec les dernières offres, réductions et promotions spéciales.

Voir les promotions

Nous utilisons des cookies

Nous utilisons des cookies analytiques pour améliorer votre expérience sur notre site. Aucune donnée n'est revendue à des tiers. En savoir plus dans notre politique de confidentialité.