Cara Menginstal dan Mengonfigurasi MongoDB di VPS (Panduan Lengkap 2024)
MongoDB adalah salah satu database NoSQL yang paling banyak diadopsi di dunia — dan ada alasan yang bagus untuk itu. Model dokumen yang fleksibel, performa baca/tulis throughput tinggi, dan skalabilitas horizontal native menjadikannya backend pilihan untuk API modern, platform SaaS, CRM, mesin e-commerce, dan aplikasi yang intensif data. Tidak seperti layanan database cloud terkelola, menjalankan MongoDB di VPS Hosting Anda sendiri memberikan kontrol penuh atas tuning performa, pengerasan keamanan, dan biaya jangka panjang.
Panduan ini memandu Anda melalui instalasi MongoDB Community Edition 8.0 tingkat produksi di VPS Linux — mencakup setup repositori resmi untuk Debian 12 dan Ubuntu LTS, manajemen layanan, pembuatan pengguna dan database, pengerasan keamanan (autentikasi, network binding, aturan firewall), strategi backup, dan langkah-langkah troubleshooting umum. Baik Anda meluncurkan aplikasi pertama atau memigrasikan beban kerja yang ada, panduan ini membuat MongoDB berjalan dengan andal sejak hari pertama.
1. Prasyarat
Sebelum Anda memulai, pastikan kondisi berikut terpenuhi:
| Persyaratan | Detail |
|---|---|
| Akses VPS | Akses SSH tingkat root atau sudo |
| Sistem operasi | 64-bit Debian 12 (Bookworm) atau Ubuntu 22.04/24.04 LTS |
| RAM | Minimum 1 GB; 2 GB+ direkomendasikan untuk produksi |
| Penyimpanan | Penyimpanan berbasis SSD sangat direkomendasikan |
| Firewall | UFW atau iptables tersedia |
> Penting: MongoDB 8.0 secara resmi mendukung rilis Debian 12 dan Ubuntu LTS. Selalu instal dari repositori resmi MongoDB — jangan pernah gunakan paket mongodb yang disertakan dengan distribusi Linux Anda, karena sudah ketinggalan zaman, tidak didukung, dan dapat bertentangan dengan paket mongodb-org resmi.
Jika Anda belum memiliki server, paket VPS Hosting AlexHost menawarkan instans VPS Linux berbasis SSD pada infrastruktur berkinerja tinggi — ideal untuk menjalankan beban kerja database produksi.
Perbarui Sistem Anda Terlebih Dahulu
Selalu mulai dengan sistem yang sepenuhnya diperbarui:
sudo apt-get update && sudo apt-get -y upgrade
sudo apt-get install -y gnupg curl2. Instal MongoDB di Debian 12 (Bookworm)
MongoDB tidak tersedia di repositori Debian default, jadi Anda harus menambahkan repositori APT MongoDB resmi secara manual.
Langkah 1 — Impor Kunci Penandatanganan GPG MongoDB
curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc |
sudo gpg --dearmor -o /usr/share/keyrings/mongodb-server-8.0.gpgIni mengunduh dan menyimpan kunci GPG yang digunakan untuk memverifikasi integritas paket. Tanpa langkah ini, APT akan menolak untuk menginstal paket dari repositori MongoDB.
Langkah 2 — Tambahkan Repositori MongoDB Resmi
echo "deb [signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg]
https://repo.mongodb.org/apt/debian bookworm/mongodb-org/8.0 main" |
sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list > /dev/nullLangkah 3 — Instal MongoDB Community Edition
sudo apt-get update
sudo apt-get install -y mongodb-orgAPT sekarang akan menarik rilis MongoDB 8.0 terbaru langsung dari CDN resmi MongoDB.
3. Instal MongoDB di Ubuntu LTS (24.04 / 22.04)
Prosesnya hampir identik dengan Debian, tetapi URL repositori berbeda menurut nama kode Ubuntu.
Langkah 1 — Impor Kunci Penandatanganan GPG MongoDB
curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc |
sudo gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg --dearmorLangkah 2 — Tambahkan Repositori untuk Versi Ubuntu Anda
Ubuntu 24.04 (Noble Numbat):
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.listUbuntu 22.04 (Jammy Jellyfish):
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ]
https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/8.0 multiverse" |
sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.listLangkah 3 — Instal MongoDB Community Edition
sudo apt-get update
sudo apt-get install -y mongodb-org4. Mulai dan Aktifkan Layanan MongoDB
Setelah diinstal, gunakan systemctl untuk memulai MongoDB dan mengonfigurasinya agar diluncurkan secara otomatis saat server di-boot ulang.
sudo systemctl daemon-reload
sudo systemctl start mongod
sudo systemctl enable mongod
sudo systemctl status mongod --no-pagerMengapa daemon-reload?
Dokumentasi resmi MongoDB secara khusus merekomendasikan menjalankan systemctl daemon-reload sebelum memulai layanan. Jika Anda melewati langkah ini dan melihat kesalahan "Unit mongod.service not found", jalankan daemon-reload terlebih dahulu — ini memaksa systemd untuk membaca ulang file unit dari disk.
Output yang Diharapkan
Layanan MongoDB yang sehat akan menampilkan output serupa dengan:
● mongod.service - MongoDB Database Server
Loaded: loaded (/lib/systemd/system/mongod.service; enabled)
Active: active (running) since ...Jika status menunjukkan failed atau inactive, lompat ke bagian Pemecahan Masalah.
5. Buat Database dan Pengguna
MongoDB tidak memberlakukan autentikasi secara default setelah instalasi baru. Ini berarti Anda harus membuat pengguna admin dan aplikasi sebelum mengaktifkan autentikasi — jika tidak, Anda berisiko mengunci diri sendiri.
Buka MongoDB Shell
Hubungkan ke MongoDB secara lokal di VPS:
mongoshLangkah 1 — Buat Pengguna Administratif
Beralih ke database admin dan buat akun admin yang istimewa:
use admin
db.createUser({
user: "admin",
pwd: "STRONG_PASSWORD_HERE",
roles: [
{ role: "userAdminAnyDatabase", db: "admin" },
{ role: "readWriteAnyDatabase", db: "admin" }
]
})> Tips keamanan: Ganti STRONG_PASSWORD_HERE dengan kata sandi yang dihasilkan secara acak dengan minimal 20 karakter. Gunakan pengelola kata sandi atau jalankan openssl rand -base64 24 di server Anda untuk menghasilkan satu.
Langkah 2 — Buat Database Aplikasi dan Pengguna
Buat database khusus dan pengguna dengan privilege minimal yang hanya terbatas pada database tersebut:
use myapp
db.createUser({
user: "myapp_user",
pwd: "STRONG_PASSWORD_HERE",
roles: [
{ role: "readWrite", db: "myapp" }
]
})Ini mengikuti prinsip privilege minimal — aplikasi Anda hanya memiliki akses baca/tulis ke database-nya sendiri, bukan seluruh instance MongoDB.
Langkah 3 — Verifikasi Pengguna Dibuat
use admin
db.getUsers()Keluar dari shell:
exit6. Amankan Instans MongoDB Anda
Ini adalah bagian paling kritis dari panduan ini. Instans MongoDB yang salah konfigurasi dan terbuka untuk internet publik telah bertanggung jawab atas banyak pelanggaran data profil tinggi. Daftar periksa keamanan MongoDB sendiri sangat jelas: hardening instans Anda sebelum mengeksposnya ke jaringan apa pun.
A) Ikat MongoDB ke Localhost Saja (Default yang Direkomendasikan)
Secara default, MongoDB mungkin mendengarkan semua antarmuka jaringan. Batasi ke localhost kecuali Anda memiliki kebutuhan spesifik dan terjustifikasi untuk akses jarak jauh.
Edit /etc/mongod.conf:
net:
bindIp: 127.0.0.1Terapkan perubahan:
sudo systemctl restart mongodIni memastikan MongoDB hanya dapat dijangkau dari server itu sendiri — bukan dari internet publik.
B) Aktifkan Autentikasi
Tanpa autentikasi yang diaktifkan, proses lokal apa pun dapat terhubung ke MongoDB tanpa kata sandi. Edit /etc/mongod.conf:
security:
authorization: enabledMulai ulang layanan:
sudo systemctl restart mongodSekarang uji bahwa autentikasi diterapkan:
mongosh -u admin -p --authenticationDatabase adminC) Konfigurasikan Firewall
Jika Anda perlu mengizinkan koneksi jarak jauh (misalnya, dari server aplikasi di mesin berbeda), batasi port 27017 ke alamat IP terpercaya tertentu saja. Jangan pernah buka port 27017 ke 0.0.0.0/0.
Menggunakan UFW:
sudo ufw allow from YOUR.TRUSTED.IP.ADDRESS to any port 27017 proto tcp
sudo ufw enable
sudo ufw statusVerifikasi aturan aktif:
sudo ufw status verboseD) Gunakan SSH Tunneling untuk Akses Jarak Jauh yang Aman (Praktik Terbaik)
Cara paling aman untuk mengakses MongoDB dari jarak jauh adalah melalui terowongan SSH. Ini menghindari pembukaan port 27017 sepenuhnya dan mengenkripsi semua lalu lintas dalam perjalanan.
Dari mesin lokal Anda:
ssh -L 27017:127.0.0.1:27017 root@YOUR_VPS_IPKemudian terhubung dari shell MongoDB lokal Anda seolah-olah itu lokal:
mongosh "mongodb://myapp_user:PASS@127.0.0.1:27017/myapp?authSource=myapp"Pendekatan ini sangat direkomendasikan untuk pengembang yang mengakses database produksi dari laptop atau workstation jarak jauh.
Ringkasan Pengerasan Keamanan
| Langkah Keamanan | Lokasi Konfigurasi | Prioritas |
|---|---|---|
| Ikat ke localhost saja | /etc/mongod.conf → net.bindIp | Kritis |
| Aktifkan autentikasi | /etc/mongod.conf → security.authorization | Kritis |
| Pembatasan port firewall | UFW / iptables | Tinggi |
| SSH tunnel untuk akses jarak jauh | Konfigurasi SSH sisi klien | Tinggi |
| Gunakan pengguna DB dengan hak istimewa minimal | mongosh → db.createUser() | Tinggi |
| Jaga MongoDB tetap diperbarui | apt-get upgrade mongodb-org | Sedang |
7. Backup dan Restore
Backup reguler adalah keharusan untuk database produksi apa pun. MongoDB menyertakan mongodump dan mongorestore sebagai bagian dari paket MongoDB Database Tools.
Buat Arsip Backup Terkompresi
mongodump
--username admin
--password STRONG_PASSWORD_HERE
--authenticationDatabase admin
--archive=/root/mongo-backup.archive
--gzipIni membuat file arsip terkompresi tunggal yang berisi logical dump dari semua database.
Restore dari Arsip Backup
mongorestore
--username admin
--password STRONG_PASSWORD_HERE
--authenticationDatabase admin
--archive=/root/mongo-backup.archive
--gzipOtomatisasi Backup dengan Cron
Jadwalkan backup harian menggunakan cron:
crontab -eTambahkan baris berikut untuk menjalankan backup setiap hari pada pukul 2:00 AM:
0 2 * * * mongodump --username admin --password PASS --authenticationDatabase admin --archive=/root/backups/mongo-$(date +%F).archive --gzip> Pro tip: Untuk redundansi off-site, pertimbangkan untuk menyinkronkan arsip backup ke lokasi penyimpanan eksternal menggunakan rsync atau rclone. Jangan pernah menyimpan satu-satunya backup Anda di server yang sama dengan database Anda.
8. Pemecahan Masalah Umum
Periksa Log Layanan
Tempat pertama untuk dilihat ketika MongoDB gagal dimulai atau berperilaku tidak terduga:
sudo journalctl -u mongod --no-pager -n 200Ini menampilkan 200 baris terakhir dari jurnal systemd MongoDB — biasanya cukup untuk mengidentifikasi akar penyebabnya.
Verifikasi MongoDB Mendengarkan pada Port yang Diharapkan
sudo ss -lntp | grep 27017Output yang diharapkan jika MongoDB berjalan dan terikat ke localhost:
LISTEN 0 128 127.0.0.1:27017 0.0.0.0:* users:(("mongod",...))Jika tidak ada output, MongoDB tidak berjalan atau terikat ke antarmuka yang berbeda.
Periksa Versi MongoDB yang Terinstal
mongod --versionPesan Kesalahan Umum dan Perbaikannya
| Kesalahan | Penyebab Kemungkinan | Perbaikan | |
|---|---|---|---|
Unit mongod.service not found | systemd belum memuat file unit | Jalankan sudo systemctl daemon-reload | |
Address already in use | Port 27017 ditempati oleh proses lain | Jalankan `sudo ss -lntp | grep 27017` untuk mengidentifikasi konfliknya |
Authentication failed | Kredensial salah atau authSource salah | Verifikasi nama pengguna, kata sandi, dan authenticationDatabase | |
Connection refused | MongoDB tidak berjalan atau terikat ke IP yang salah | Periksa bindIp di mongod.conf dan status layanan | |
mongod.conf permission denied | Masalah izin file | Jalankan sudo chmod 600 /etc/mongod.conf |
9. Pemikiran Akhir
Menjalankan MongoDB pada VPS adalah pendekatan yang terbukti dan hemat biaya untuk beban kerja produksi yang membutuhkan fleksibilitas, performa, dan kontrol infrastruktur penuh. Dengan mengikuti panduan ini, Anda telah menginstal MongoDB 8.0 dari repositori resmi, mengonfigurasi autentikasi dan pengikatan jaringan, membuat pengguna database dengan privilege minimal, menyiapkan aturan firewall, dan membangun rutinitas backup.
Beberapa poin penting yang perlu diingat:
- Selalu aktifkan autentikasi — instance MongoDB tanpa autentikasi adalah kerentanan keamanan kritis.
- Jangan pernah ekspos port 27017 ke internet publik — gunakan SSH tunneling atau batasi akses ke IP terpercaya tertentu.
- Jaga MongoDB tetap terbaru — jalankan
sudo apt-get upgrade mongodb-orgsecara teratur untuk menerima patch keamanan. - Uji backup Anda — backup yang belum pernah Anda pulihkan adalah backup yang tidak dapat Anda percayai.
Untuk tim yang membutuhkan fondasi yang andal dan berkinerja tinggi untuk deployment MongoDB, VPS Hosting AlexHost menyediakan penyimpanan SSD NVMe, akses root penuh, dan penskalaan sumber daya yang fleksibel. Jika beban kerja Anda berkembang melampaui VPS tunggal, Dedicated Servers menawarkan sumber daya CPU dan RAM dedicated tanpa efek noisy-neighbor — ideal untuk replica set MongoDB atau cluster sharded dengan traffic tinggi.
Butuh stack hosting lengkap? Pasangkan VPS database Anda dengan Shared Web Hosting untuk front-end atau aset statis Anda, dan amankan traffic aplikasi Anda dengan SSL Certificate untuk melindungi data dalam transit antara pengguna Anda dan server Anda.
*Terakhir diperbarui untuk MongoDB Community Edition 8.0 pada Debian 12 (Bookworm) dan Ubuntu 22.04/24.04 LTS.*
untuk semua layanan hosting