MongoDB; API'lerde, Node.js uygulamalarında ve analitikte yaygın kullanılan, doküman tabanlı bir veritabanıdır. Ubuntu bunu kendi depolarında sunmaz, bu yüzden resmi MongoDB deposundan kurulur. Bu rehber onu bir VPS Linux Infrawire üzerinde kurar, kimlik doğrulamayı açar ve erişimi sınırlar.
📋 Ön koşullar
- x86_64 veya ARM64 üzerinde Ubuntu 24.04 (noble) çalıştıran, root SSH erişimli bir VPS (IP adresi ve root parolası müşteri alanınızda yer alır)
- AVX komut kümesini sunan bir işlemci (MongoDB 5.0 ve sonrası için zorunlu):
grep -c avx /proc/cpuinfo0'dan büyük bir sayı döndürmelidir - En az 2 GB RAM önerilir
1. Resmi depoyu ekleme
İmza anahtarını içe aktarın ve Ubuntu 24.04 için depoyu tanımlayın.
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. Servisi kurma ve başlatma
Bashapt update apt install -y mongodb-org systemctl enable --now mongod systemctl status mongod --no-pager
mongodb-org üst paketi sunucuyu (mongod), kabuğu (mongosh) ve araçları kurar. Veriler /var/lib/mongodb içinde, günlükler /var/log/mongodb/mongod.log dosyasındadır.
3. Yönetici hesabını oluşturma
Kimlik doğrulama henüz kapalı olduğundan yerel kabuk kimlik bilgisi olmadan bağlanır. İlk yöneticiyi admin veritabanında oluşturun; passwordPrompt() parolayı sorar, böylece kabuk geçmişinizde görünmez.
Bashmongosh
JavaScript1use admin 2db.createUser({ 3 user: 'admin', 4 pwd: passwordPrompt(), 5 roles: [ { role: 'userAdminAnyDatabase', db: 'admin' }, 'readWriteAnyDatabase' ] 6})
4. Kimlik doğrulamayı etkinleştirme
/etc/mongod.conf dosyasını düzenleyin ve security bloğunu ekleyin (veya yorumdan çıkarın):
YAMLsecurity: authorization: enabled
Bashsystemctl restart mongod
Bundan sonra her bağlantının kimlik doğrulaması yapması gerekir.
5. Uygulama kullanıcısı oluşturma
Uygulamanız asla yönetici hesabını kullanmamalıdır. Ona yalnızca kendi veritabanıyla sınırlı bir kullanıcı verin.
Bashmongosh -u admin -p --authenticationDatabase admin
JavaScript1use appdb 2db.createUser({ 3 user: 'appuser', 4 pwd: passwordPrompt(), 5 roles: [ { role: 'readWrite', db: 'appdb' } ] 6})
Karşılık gelen bağlantı dizesi mongodb://appuser:PASSWORD@127.0.0.1:27017/appdb?authSource=appdb biçimindedir.
6. Ağ erişimi ve güvenlik duvarı
Varsayılan olarak MongoDB yalnızca 127.0.0.1 üzerinde dinler; uygulama aynı VPS'te çalışıyorsa en güvenli ayar budur. Başka bir sunucuya izin vermek için /etc/mongod.conf içine VPS adresini ekleyin:
YAMLnet: port: 27017 bindIp: 127.0.0.1,VPS_IP
Ardından güvenlik duvarında yalnızca uygulama sunucusuna izin verin ve 27017 portunu asla tüm internete açmayın:
Bashufw allow OpenSSH ufw allow from APP_SERVER_IP to any port 27017 proto tcp ufw enable systemctl restart mongod
✅ Kurulumu doğrulama
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
Son komut MongoDB'nin hangi adreste dinlediğini gösterir. db.getUsers() gibi kimlik doğrulamasız bir sorgu artık yetkilendirme hatasıyla başarısız olmalıdır.
🔧 Sorun giderme
mongod başlamıyor (Illegal instruction veya çıkış kodu 132) : sanal işlemci AVX sunmuyor. grep avx /proc/cpuinfo ile kontrol edin; AVX yoksa MongoDB 8.0 bu makinede çalışamaz.
Başlatma izin hatalarıyla başarısız oluyor : veri ve soket dosyalarının sahipliğini chown -R mongodb:mongodb /var/lib/mongodb /var/log/mongodb ile düzeltin, eski bir /tmp/mongodb-27017.sock varsa silin ve yeniden başlatın. Ayrıntılar journalctl -u mongod içindedir.
Authentication failed : kullanıcı belirli bir veritabanında oluşturulmuştur. Doğru olanı --authenticationDatabase ile (veya URI'de authSource ile) belirtin.
Uzaktan bağlantı zaman aşımına uğruyor : bindIp değerini, ufw status kurallarını ve istemci IP'sinin izin verdiğinizle eşleştiğini kontrol edin.
🎉 MongoDB 8.0 kuruldu, kimlik doğrulamayla korunuyor ve uygulamanız için hazır!