MongoDB एक डॉक्यूमेंट-आधारित डेटाबेस है जो API, Node.js एप्लिकेशन और एनालिटिक्स में खूब इस्तेमाल होता है। Ubuntu अपनी रिपॉज़िटरी में इसे नहीं देता, इसलिए इसे MongoDB की आधिकारिक रिपॉज़िटरी से इंस्टॉल किया जाता है। यह गाइड इसे VPS Linux Infrawire पर सेट करती है, ऑथेंटिकेशन चालू करती है और पहुँच को सीमित करती है।
📋 पूर्वापेक्षाएँ
- x86_64 या ARM64 पर Ubuntu 24.04 (noble) वाला VPS, जिसमें root SSH एक्सेस हो (IP और root पासवर्ड आपके कस्टमर एरिया में मिलते हैं)
- AVX इंस्ट्रक्शन सेट वाला CPU (MongoDB 5.0 और बाद के संस्करणों के लिए अनिवार्य):
grep -c avx /proc/cpuinfoका नतीजा 0 से बड़ा होना चाहिए - कम से कम 2 GB RAM की सलाह दी जाती है
1. आधिकारिक रिपॉज़िटरी जोड़ें
साइनिंग की इम्पोर्ट करें और Ubuntu 24.04 के लिए रिपॉज़िटरी घोषित करें।
Bashapt 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. सेवा इंस्टॉल करें और शुरू करें
Bashapt update apt install -y mongodb-org systemctl enable --now mongod systemctl status mongod --no-pager
mongodb-org मेटा-पैकेज सर्वर (mongod), शेल (mongosh) और टूल इंस्टॉल करता है। डेटा /var/lib/mongodb में और लॉग /var/log/mongodb/mongod.log में रहते हैं।
3. एडमिनिस्ट्रेटर बनाएँ
ऑथेंटिकेशन अभी बंद है, इसलिए लोकल शेल बिना क्रेडेंशियल के कनेक्ट हो जाता है। admin डेटाबेस में पहला एडमिनिस्ट्रेटर बनाएँ; passwordPrompt() पासवर्ड पूछता है, इसलिए वह आपकी शेल हिस्ट्री में नहीं दिखता।
Bashmongosh
JavaScript1use admin 2db.createUser({ 3 user: 'admin', 4 pwd: passwordPrompt(), 5 roles: [ { role: 'userAdminAnyDatabase', db: 'admin' }, 'readWriteAnyDatabase' ] 6})
4. ऑथेंटिकेशन चालू करें
/etc/mongod.conf संपादित करें और security ब्लॉक जोड़ें (या कमेंट हटाएँ):
YAMLsecurity: authorization: enabled
Bashsystemctl restart mongod
अब से हर कनेक्शन को ऑथेंटिकेट करना होगा।
5. एप्लिकेशन यूज़र बनाएँ
आपके एप्लिकेशन को कभी एडमिन खाते का उपयोग नहीं करना चाहिए। उसे ऐसा यूज़र दें जो केवल उसके अपने डेटाबेस तक सीमित हो।
Bashmongosh -u admin -p --authenticationDatabase admin
JavaScript1use appdb 2db.createUser({ 3 user: 'appuser', 4 pwd: passwordPrompt(), 5 roles: [ { role: 'readWrite', db: 'appdb' } ] 6})
इसकी कनेक्शन स्ट्रिंग mongodb://appuser:PASSWORD@127.0.0.1:27017/appdb?authSource=appdb है।
6. नेटवर्क एक्सेस और फ़ायरवॉल
डिफ़ॉल्ट रूप से MongoDB केवल 127.0.0.1 पर सुनता है, जो तब सबसे सुरक्षित सेटिंग है जब एप्लिकेशन उसी VPS पर चल रहा हो। किसी दूसरे सर्वर को अनुमति देने के लिए /etc/mongod.conf में VPS का पता जोड़ें:
YAMLnet: port: 27017 bindIp: 127.0.0.1,VPS_IP
फिर फ़ायरवॉल में केवल एप्लिकेशन सर्वर को अनुमति दें, और पोर्ट 27017 को कभी पूरे इंटरनेट के लिए न खोलें:
Bashufw allow OpenSSH ufw allow from APP_SERVER_IP to any port 27017 proto tcp ufw enable systemctl restart mongod
✅ इंस्टॉलेशन जाँचें
Bashmongod --version mongosh --eval 'db.runCommand({ ping: 1 })' mongosh -u appuser -p --authenticationDatabase appdb appdb --eval 'db.test.insertOne({ ok: true })' ss -ltnp | grep 27017
आख़िरी कमांड दिखाती है कि MongoDB किस पते पर सुन रहा है। db.getUsers() जैसी बिना ऑथेंटिकेशन वाली क्वेरी अब ऑथराइज़ेशन त्रुटि के साथ विफल होनी चाहिए।
🔧 समस्या निवारण
mongod शुरू नहीं होता (Illegal instruction या एग्ज़िट कोड 132) : वर्चुअल CPU AVX उपलब्ध नहीं कराता। grep avx /proc/cpuinfo से जाँचें; AVX के बिना MongoDB 8.0 इस मशीन पर नहीं चल सकता।
अनुमति त्रुटियों के साथ स्टार्ट विफल होना : chown -R mongodb:mongodb /var/lib/mongodb /var/log/mongodb से डेटा और सॉकेट फ़ाइलों का मालिक ठीक करें, पुरानी /tmp/mongodb-27017.sock हटाएँ और रीस्टार्ट करें। ब्योरा journalctl -u mongod में मिलेगा।
Authentication failed : यूज़र किसी विशेष डेटाबेस में बनाया गया था। सही डेटाबेस --authenticationDatabase (या URI में authSource) से बताएँ।
रिमोट कनेक्शन टाइमआउट होना : bindIp, ufw status के नियम और क्लाइंट IP का आपके अनुमति दिए गए IP से मेल खाना जाँचें।
🎉 MongoDB 8.0 इंस्टॉल हो गया है, ऑथेंटिकेशन से सुरक्षित है और आपके एप्लिकेशन के लिए तैयार है!