by Zass Desuta

Bantuan

Cara Memakai MongoDB Atlas Gratis untuk Bot di Panel Pterodactyl

Panduan pemula membuat database MongoDB Atlas gratis, mengizinkan server panel, lalu menyambungkannya ke bot Node.js lewat file .env, lengkap dengan kode tes dan solusi error umum.

Jawiya ClarissaJawiya Clarissa8 menit baca

Bagikan
Daftar isi

Bot yang hanya membalas perintah sederhana tidak butuh database. Tapi begitu bot harus mengingat sesuatu, misalnya poin pengguna, pengaturan grup, daftar member premium, atau sesi login, datanya harus disimpan di tempat yang tidak hilang saat bot di-restart. Banyak bot, terutama bot WhatsApp dan Telegram, memakai MongoDB untuk itu.

Database bawaan panel adalah MySQL. Kalau kode botmu butuh MongoDB, kamu bisa memakai MongoDB Atlas, layanan MongoDB resmi yang punya cluster gratis. Di panduan ini kamu akan membuat cluster gratis, mengizinkan server panelmu masuk, lalu menyambungkannya ke bot.

MySQL panel atau MongoDB Atlas?

  • Pakai MySQL bawaan panel kalau kode botmu memang memakai MySQL atau kamu bebas memilih. Caranya ada di Cara membuat dan memakai database.
  • Pakai MongoDB Atlas kalau kode botmu sudah memakai MongoDB atau Mongoose, atau kamu menjalankan bot yang memang meminta MONGODB_URI di pengaturannya.

Data di Atlas tersimpan di luar server panel, jadi tidak ikut backup server. Ingat ini kalau datanya penting.

Yang perlu disiapkan

  • Server panel dengan egg Node.js. Belum yakin? Lihat Memilih egg.
  • Bot Node.js yang butuh MongoDB, atau pakai kode tes di panduan ini dulu.
  • Alamat email aktif untuk mendaftar di MongoDB Atlas.

1. Daftar dan buat cluster gratis

  1. Buka mongodb.com/cloud/atlas/register, lalu daftar dengan email atau akun Google.
  2. Setelah masuk, buka halaman Project Overview, lalu klik Create untuk membuat cluster baru.
  3. Pilih opsi gratis M0.
  4. Pilih Provider. Amazon Web Services, Google Cloud, dan Azure sama-sama boleh. Kalau bingung, pilih yang pertama muncul.
  5. Pilih Region. Atlas hanya menampilkan region yang mendukung cluster gratis. Pilih yang paling dekat dengan lokasi servermu (misalnya region Asia) supaya bot tidak terasa lambat.
  6. Isi nama cluster. Boleh huruf, angka, dan tanda hubung. Nama ini tidak bisa diubah setelah cluster dibuat.
  7. Klik Create. Cluster biasanya siap dalam hitungan detik.

gambar

Tampilan Atlas bisa berubah dari waktu ke waktu. Kalau nama tombolnya sedikit berbeda, cari yang fungsinya sama.

2. Buat user database

Setelah cluster dibuat, Atlas menampilkan panduan keamanan. Bagian pertamanya meminta kamu membuat user database.

  1. Isi Username, misalnya botuser.
  2. Isi Password. Pakai kombinasi huruf dan angka saja. Karakter khusus seperti @, :, /, ?, dan # harus diubah bentuknya kalau masuk ke alamat koneksi, dan itu sumber error yang sering bikin pemula bingung.
  3. Klik Create Database User.

gambar

User ini khusus untuk bot mengakses database. Ini bukan akun yang kamu pakai untuk login ke situs Atlas, jadi jangan samakan passwordnya dengan akun lain. Catat username dan passwordnya.

3. Izinkan IP server panelmu

Atlas menolak semua koneksi kecuali dari alamat IP yang ada di daftar izin (IP Access List). Artinya server panelmu harus didaftarkan dulu. Caranya, cari tahu dulu IP yang dipakai servermu saat menghubungi internet.

Cari IP servermu:

  1. Di tab Files, klik New File, beri nama cek-ip.js, lalu isi dengan:
JavaScript
fetch('https://api.ipify.org')
  .then((res) => res.text())
  .then((ip) => console.log('IP keluar server ini:', ip))
  .catch((err) => console.error('Gagal cek IP:', err.message))
  1. Buka tab Startup, isi variabel file utama dengan cek-ip.js atau ganti isi Command Run menjadi node cek-ip.js. Nama kolomnya bisa berbeda tergantung egg, detailnya di Startup dan variabel.
  2. Buka tab Console, klik Start. Dalam beberapa detik muncul tulisan IP keluar server ini: diikuti angka. Itu IP-nya. Setelah selesai, server akan berhenti sendiri karena programnya memang cuma satu perintah. Itu normal.

gambar

Kalau muncul fetch is not defined, versi Node.js servermu terlalu lama. Baca Cara mengganti versi Node.js lewat Docker Image. Kalau pengecekan ini gagal karena alasan lain, tanyakan IP servermu ke CS.

Daftarkan IP itu di Atlas:

  1. Di menu kiri Atlas, buka bagian Security, lalu pilih Network Access (di tampilan baru namanya bisa Database & Network Access, lalu tab IP Access List).
  2. Klik Add IP Address.
  3. Tempel IP servermu, lalu klik Confirm.
  4. Tunggu statusnya berubah jadi Active.

gambar

Dua hal yang perlu kamu tahu:

  • IP bisa berubah kalau servermu dipindah ke node lain, misalnya setelah klaim garansi. Kalau koneksi tiba-tiba gagal padahal tidak ada yang kamu ubah, ulangi pengecekan IP ini.
  • Atlas juga punya opsi Allow Access from Anywhere (0.0.0.0/0). Ini membuat koneksi tidak perlu daftar IP, tapi semua orang di internet bisa mencoba masuk, dan Atlas sendiri memberi peringatan soal ini. Kalau terpaksa memakainya, pakai password database yang panjang dan unik, dan jangan simpan data penting.

4. Ambil alamat koneksi

  1. Di halaman cluster, klik Connect.
  2. Pilih Drivers, lalu pilih Node.js.
  3. Salin alamat koneksi yang ditampilkan. Bentuknya seperti ini:
Teks
mongodb+srv://<db_username>:<db_password>@namacluster.xxxxx.mongodb.net/?retryWrites=true&w=majority
  1. Ganti <db_username> dan <db_password> dengan user dan password dari langkah 2. Tanda kurung sudut < dan > ikut dihapus.

Contoh hasil akhirnya:

Teks
mongodb+srv://botuser:[email protected]/?retryWrites=true&w=majority

gambar

Alamat ini mengandung password database. Perlakukan seperti kunci rumah, jangan dikirim ke siapa pun dan jangan ditaruh di kode.

5. Siapkan kode tes

Sebelum memasang di bot sungguhan, tes dulu koneksinya. Buat folder di komputermu dan isi dua file ini.

File package.json:

JSON
{
  "name": "tes-mongodb",
  "version": "1.0.0",
  "main": "index.js",
  "dependencies": {
    "mongodb": "^6.0.0",
    "dotenv": "^16.4.5"
  }
}

File index.js:

JavaScript
require('dotenv').config()
const { MongoClient } = require('mongodb')

const uri = process.env.MONGODB_URI
if (!uri) {
  console.error('MONGODB_URI belum diisi di file .env')
  process.exit(1)
}

const client = new MongoClient(uri)

async function main() {
  await client.connect()
  console.log('Terhubung ke MongoDB Atlas.')

  const koleksi = client.db('botku').collection('tes')
  await koleksi.insertOne({ pesan: 'halo dari panel', waktu: new Date() })

  const jumlah = await koleksi.countDocuments()
  console.log(`Berhasil menyimpan data. Jumlah dokumen di koleksi tes: ${jumlah}`)
}

main()
  .catch((err) => console.error('Gagal terhubung:', err.message))
  .finally(() => client.close())

6. Upload dan jalankan

  1. Di tab Files, hapus cek-ip.js kalau masih ada, lalu Upload package.json dan index.js. Jangan upload folder node_modules, paketnya dipasang otomatis. Detailnya di Mengunggah file dengan File Manager dan SFTP.
  2. Klik New File, beri nama .env, lalu isi dengan satu baris berikut. Tempel alamat koneksimu tanpa spasi dan tanpa tanda kutip, lalu Save:
Teks
MONGODB_URI=mongodb+srv://botuser:[email protected]/?retryWrites=true&w=majority
  1. Di tab Startup, ubah file utama jadi index.js.
  2. Di tab Console, klik Start. Tunggu satu sampai dua menit karena paket dipasang dulu.
  3. Kalau berhasil, konsol menampilkan Terhubung ke MongoDB Atlas. lalu Berhasil menyimpan data.

Untuk memastikan datanya benar-benar masuk, buka Atlas, klik Browse Collections di halaman cluster, lalu cari database botku dan koleksi tes. Dokumen "halo dari panel" harus ada di sana. Server akan berhenti sendiri setelah tes selesai, dan itu normal.

Cara menyimpan token dan alamat koneksi di .env dijelaskan lebih lengkap di Menyimpan token dan data rahasia dengan .env.

7. Pasang di bot sungguhan

Pindahkan bagian koneksinya ke bot. Prinsipnya: sambung satu kali saat bot mulai, lalu pakai terus. Jangan menyambung ulang setiap ada pesan masuk.

JavaScript
const { MongoClient } = require('mongodb')

const client = new MongoClient(process.env.MONGODB_URI)
let db

async function mulaiDatabase() {
  await client.connect()
  db = client.db('botku')
  console.log('Database siap.')
}

// Contoh: tambah satu poin untuk seorang pengguna
async function tambahPoin(idPengguna) {
  await db.collection('pengguna').updateOne(
    { _id: idPengguna },
    { $inc: { poin: 1 } },
    { upsert: true }
  )
}

Panggil mulaiDatabase() satu kali sebelum bot login. Database dan koleksinya dibuat otomatis saat data pertama masuk, jadi tidak perlu dibuat manual di Atlas.

Kalau botmu memakai Mongoose, tambahkan "mongoose": "^8.0.0" di dependencies, lalu sambungkan dengan await mongoose.connect(process.env.MONGODB_URI). Alamat koneksinya sama.

Batas cluster gratis

Cluster gratis cukup untuk bot kecil sampai menengah, tapi ada batasnya (menurut dokumentasi MongoDB Atlas):

  • Penyimpanan 0,5 GB.
  • Maksimal 500 koneksi dan 100 operasi per detik.
  • Satu cluster gratis per project Atlas.
  • Cluster dijeda otomatis kalau 30 hari tanpa satu pun koneksi. Bot yang hidup terus tidak akan kena, dan cluster yang dijeda bisa dilanjutkan lagi dari Atlas.

Kalau botmu sudah ramai dan bumpet di batas ini, itu tanda saatnya naik ke cluster berbayar atau memindahkan data ke database lain.

Kalau tidak berhasil

Yang kamu lihatPenyebabSolusi
MongoServerSelectionError atau pesan timeoutIP servermu belum ada di IP Access List, statusnya belum Active, atau IP-nya sudah berubahCek IP lagi (langkah 3), tambahkan di Atlas, tunggu sampai Active, lalu Restart
bad auth : authentication failedUsername atau password salah, atau <db_password> masih bertanda kurungCek ulang di .env. Kalau password mengandung karakter khusus, buat password baru yang hanya huruf dan angka
MONGODB_URI belum diisi di file .envFile .env belum dibuat atau namanya salahPastikan namanya persis .env di folder yang sama dengan index.js
Invalid connection string atau Invalid schemeAlamat koneksi tertempel sebagian, atau ada spasi dan tanda kutipTempel ulang tanpa spasi dan tanpa kutip
Cannot find module 'mongodb'Paket belum terpasangBaca Mengatasi error "Cannot find module"
fetch is not defined (saat cek IP)Versi Node.js terlalu lamaBaca Cara mengganti versi Node.js lewat Docker Image

Kalau masih buntu, kirim potongan log konsol ke CS. Jangan kirim alamat koneksi atau password databasenya. CS tidak pernah memintanya.

Kalau alamat koneksi bocor

Segera ganti password user database: buka Atlas, menu Database Access, klik Edit di user botmu, buat password baru, lalu perbarui .env dan Restart server. Panduan keamanan lainnya ada di Keamanan akun dan server.

Apakah artikel ini membantu?

Artikel Terkait

Hubungi kami