Database

Cara Instalasi MongoDB di Ubuntu 24.04 LTS

Cara Instalasi MongoDB di Ubuntu 24.04 LTS
Daftar Isi

MongoDB adalah document database - data disimpan sebagai dokumen BSON (mirip JSON) dengan schema yang fleksibel, cocok untuk data yang strukturnya sering berubah atau memang bervariasi antar record. Panduan ini membahas instalasi MongoDB Community Edition di Ubuntu 24.04 LTS menggunakan paket qVM-2, mulai dari menambahkan repository resmi (tidak tersedia di repository default Ubuntu), mengaktifkan access control, membuat user, sampai konfigurasi remote access.

Pengenalan

Beda dari MariaDB, MySQL, atau PostgreSQL yang paketnya langsung tersedia di repository resmi Ubuntu, MongoDB tidak ada di repository default Ubuntu 24.04 LTS. Sejak versi 4.4, MongoDB dilisensikan di bawah SSPL (Server Side Public License), dan Debian/Ubuntu menganggap lisensi ini tidak memenuhi kriteria open source mereka — jadi package mongodb-org harus diambil langsung dari repository resmi MongoDB, bukan dari apt install mongodb biasa.

Instalasi fresh MongoDB tidak mengaktifkan authorization/access control secara default. Siapa pun yang bisa connect ke port 27017 otomatis dapat akses penuh tanpa perlu login. Berbeda dengan MySQL/MariaDB/PostgreSQL yang mewajibkan password sejak awal instalasi — jadi mengaktifkan security.authorization itu bukan opsional, wajib dilakukan sebelum MongoDB digunakan untuk apa pun selain testing lokal di laptop sendiri.

MongoDB membagi rilisnya jadi dua jalur: annual major release (6.0, 7.0, 8.0, dst.) yang dapat status Long-Term Support — 8.0 misalnya didukung sampai Oktober 2029 — dan Rapid Release (8.1, 8.2, 8.3, dst.) yang cuma tersedia buat MongoDB Atlas, bukan untuk self-managed deployment. Jadi menggunakan versi 8.0 di panduan ini bukan berarti ketinggalan versi terbaru — itu memang jalur LTS yang tepat untuk instalasi mandiri.

Ubuntu 24.04 LTS jadi basis OS di panduan ini karena dapat dukungan resmi (security update dan bug fix) sampai April 2029. qVM yang digunakan diasumsikan masih fresh install, belum ada konfigurasi tambahan apa pun.

Persyaratan

Software

  • Ubuntu 24.04 LTS, kondisi fresh install
  • Akses root atau user dengan hak sudo
  • Koneksi internet untuk mengunduh package dari repository resmi MongoDB
  • SSH client di sisi lokal untuk remote ke qVM

Hardware / Spesifikasi VPS qVM

Panduan ini menggunakan paket qVM-2, dengan spesifikasi:

  • vCPU: 1 core
  • RAM: 2 GiB
  • Storage: 50 GiB

MongoDB menggunakan WiredTiger sebagai default storage engine, dengan internal cache yang secara default dialokasikan sekitar 50% dari (RAM - 1GB). Di qVM-2, artinya cache WiredTiger relatif kecil — sekitar 500MB. Cukup untuk development, testing, atau aplikasi kecil, tapi perlu dihitung ulang kalau dataset aktifnya sudah mulai besar.

Tahapan

1. Update dan Upgrade OS Ubuntu 24.04 LTS

bash
apt update && sudo apt upgrade -y

2. Tambahkan Repository Resmi MongoDB

Instal dependency yang dibutuhkan:

bash
apt install gnupg curl -y

Unduh dan import GPG key resmi MongoDB:

bash
curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | \
    gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg --dearmor

Tambahkan repository MongoDB 8.0 untuk Ubuntu 24.04 (noble):

bash
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.list

Update package index:

bash
apt update

3. Instalasi MongoDB

bash
apt install mongodb-org -y

SCR-20260819-mqgt

Package mongodb-orgmerupakan meta-package yang menyertakan mongod (daemon server), mongosh (shell modern), plus database tools pendukung lainnya.

Aktifkan biar jalan otomatis tiap qVM reboot, lalu cek statusnya:

bash
systemctl enable mongod
systemctl status mongod

Cek versi yang terpasang:

bash
mongod --version

SCR-20260819-mqux

4. Aktifkan Access Control dan Buat Admin User

Admin user harus dibuat lebih dulu selagi akses masih terbuka — begitu authorization aktif, tidak ada cara membuat user pertama tanpa kredensial yang valid, karena setiap koneksi akan diwajibkan login lebih dulu. Masuk ke mongosh:

bash
mongosh
javascript
use admin
db.createUser({
  user: "admin",
  pwd: "PasswordAdminKuatAnda",
  roles: [{ role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase"]
})
exit

SCR-20260824-oxlh

Perintah use admin di atas menentukan authentication database tempat user ini terdaftar. Kesalahan paling umum di tahap ini adalah menjalankan db.createUser() sebelum context benar-benar berpindah ke admin — user tetap berhasil dibuat, tapi tercipta di database yang salah (biasanya test), dan login akan gagal di tahap berikutnya meski password-nya benar. Pastikan prompt sudah berubah menjadi admin> sebelum melanjutkan.

Baru sekarang aktifkan authorization supaya seluruh koneksi wajib melalui autentikasi:

bash
vim /etc/mongod.conf

Tambahkan (atau uncomment) blok berikut:

yaml
security:
  authorization: enabled

Restart untuk menerapkan konfigurasi. Gunakan systemctl kill sebelum start, bukan systemctl restart biasa — pada beberapa kondisi proses mongod tidak benar-benar berhenti dengan restart, sehingga config baru tidak ikut dimuat dan perubahan authorization seolah tidak berlaku:

bash
systemctl kill mongod
systemctl start mongod

Inisialisasi storage engine WiredTiger membutuhkan waktu beberapa detik sebelum mongod benar-benar listening di port 27017, sementara systemctl start sudah mengembalikan kontrol ke shell lebih dulu sebelum proses ini selesai. Koneksi yang dicoba terlalu cepat akan gagal dengan ECONNREFUSED, meski service secara teknis sudah aktif. Konfirmasi status sebelum melanjutkan:

bash
systemctl status mongod

Baris mongod startup complete pada log menandakan proses sudah siap menerima koneksi:

bash
tail -5 /var/log/mongodb/mongod.log

SCR-20260824-oyks

Verifikasi login sebelum lanjut ke tahap berikutnya

bash
mongosh -u admin -p --authenticationDatabase admin

SCR-20260824-oyvz

Pastikan login berhasil seperti gambar di atas.

5. Membuat Database dan User Aplikasi

Login sebagai admin yang baru dibuat:

bash
mongosh -u admin -p --authenticationDatabase admin

Buat database dan user aplikasi dengan privilege terbatas cuma ke database tersebut — sama seperti prinsip di database lain, jangan menggunakan user admin untuk koneksi aplikasi:

javascript
use app_db
db.createUser({
  user: "app_user",
  pwd: "PasswordKuatAnda",
  roles: [{ role: "readWrite", db: "app_db" }]
})
exit

SCR-20260824-ozlx

6. Konfigurasi Remote Access (Opsional)

qVM tidak memprovide private network antar-instance — tiap qVM cuma punya IP Publik, jadi akses remote ke MongoDB otomatis melalui internet publik. qVM juga tidak mengaktifkan firewall (ufw) secara default. Sama seperti Redis, autentikasi MongoDB (createUser/SCRAM) tidak membatasi akses berdasarkan IP client — satu-satunya proteksi adalah kombinasi username/password yang sudah dibuat di tahap 4/5. Abaikan tahap ini kalau aplikasi berjalan di server yang sama. Lanjutkan hanya kalau memang butuh akses dari qVM terpisah — dan pastikan tahap 4 (authorization) sudah aktif dengan password yang kuat.

bash
vim /etc/mongod.conf

Cari baris:

yaml
net:
  bindIp: 127.0.0.1

Ubah jadi (ganti dengan IP Publik qVM MongoDB ini):

yaml
net:
  bindIp: 127.0.0.1,161.248.116.110

Restart untuk menerapkan konfigurasi — gunakan kill sebelum start, bukan restart biasa (lihat catatan di tahap 4 soal proses lama yang kadang belum benar-benar berhenti), dan beri jeda beberapa detik sebelum menguji koneksi karena inisialisasi WiredTiger belum tentu selesai begitu perintah start kembali ke shell:

bash
systemctl kill mongod
systemctl start mongod

SCR-20260824-papd

Karena tidak ada firewall maupun IP-based access control, dan trafik MongoDB secara default tidak terenkripsi, sangat disarankan aktifkan TLS melalui parameter net.tls di mongod.conf sebelum instance ini diakses melalui internet publik. Tanpa TLS, kredensial dan seluruh data yang dikirim mengalir dalam bentuk plain text di internet — risiko yang cukup besar untuk sesuatu yang mudah diaktifkan.

7. Verifikasi Instalasi

bash
mongosh -u app_user -p --authenticationDatabase app_db app_db --eval "db.runCommand({ ping: 1 })"

SCR-20260824-pawv

Kalau response { ok: 1 } muncul, MongoDB sudah jalan dan menerima autentikasi dengan benar.

Kesimpulan

VPS qVM-2 (1 core, 2 GiB RAM, 50 GiB storage) sekarang sudah menjalankan MongoDB Community Edition 8.0 dengan access control aktif, admin user dan application user yang privilege-nya terpisah, plus opsi remote access yang dibatasi ke IP tertentu. Kalau ke depannya butuh high availability, MongoDB punya replica set — konsepnya mirip replication di MariaDB dengan automatic failover khusus untuk aplikasi yang membutuhkan redundancy.

Mulai Kelola Infrastruktur Cloud Anda

Akun Sequel Anda siap untuk memesan & mengelola layanan cloud.

Bagikan
Apakah artikel ini membantu?