Ubuntu 24.04 VPS'e MongoDB 8.0 kurma ve güvenceye alma

2 min
VPS/VDS Hosting

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/cpuinfo 0'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.

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. Servisi kurma ve başlatma

Bash
apt 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.

Bash
mongosh
JavaScript
1use 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):

YAML
security: authorization: enabled
Bash
systemctl 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.

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})

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:

YAML
net: 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:

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

✅ Kurulumu doğrulama

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

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!

En yeni teklifler, indirimler ve özel promosyonlardan haberdar olun.

Promosyonları gör

Çerez kullanıyoruz

Sitemizdeki deneyiminizi iyileştirmek için analiz çerezleri kullanıyoruz. Hiçbir veri üçüncü taraflara satılmaz. Daha fazlasını şurada öğrenin: gizlilik politikası.