D
Setup

Setup Environment

Konfigurasi via .env — PORT, APP_ENV, APP_URL, WEBHOOK_URL, LEVEL_LOG, MONGO_URL. Tidak ada auth/JWT. Sesi kredensial persisten di filesystem. WEBHOOK_URL mengandung webhook-test = mode dummy.

Ada satu sumber konfigurasi di engine-whatsapp: file .env di root project. Loader ada di src/config/config.ts.

Prasyarat

KebutuhanVersi
Node.jsdiuji v20–v23 (disarankan ≥ 20) — project tidak mendefinisikan engines
MongoDBberjalan, port 27017
Tidak butuhRedis, OpenAI API key, JWT secret — service ini tidak bergantung pada ketiganya

File .env

Buat file .env di root project:

bash
PORT=5002
APP_ENV=local
APP_URL=http://localhost:5002
WEBHOOK_URL=http://127.0.0.1:8081/v1
LEVEL_LOG=trace
MONGO_URL=mongodb://127.0.0.1:27017/dazo

Field konfigurasi

VariableDefault (jika kosong)Keterangan
PORT5002Port HTTP server (Express + Socket.IO di port yang sama)
APP_ENVdevelopmentJika production, detail error disembunyikan dari response
APP_URLhttp://localhost:5002Base URL publik; dipakai untuk membentuk URL media ({APP_URL}/files/...)
WEBHOOK_URLhttp://localhost:3000/webhook-testBase URL backend. Engine memanggil {WEBHOOK_URL}/callback_message
LEVEL_LOGtraceLevel Pino: trace/debug/info/warn/error
MONGO_URLmongodb://127.0.0.1:27017/dazoConnection string MongoDB

Loader — src/config/config.ts

ts
import dotenv from 'dotenv'
dotenv.config()

interface Config {
  port: number;
  app_env: string;
  app_url: string;
  webhook_url: string;
  level_log: string;
  mongo_url: string;
}

const config: Config = {
  port: Number(process.env.PORT) || 5002,
  app_env: process.env.APP_ENV || 'development',
  app_url: process.env.APP_URL || 'http://localhost:5002',
  webhook_url: process.env.WEBHOOK_URL || 'http://localhost:3000/webhook-test',
  level_log: process.env.LEVEL_LOG || 'trace',
  mongo_url: process.env.MONGO_URL || 'mongodb://127.0.0.1:27017/dazo'
}

Tidak ada branched environment — satu config untuk semua env. Beda environment hanya beda nilai .env, bukan branched object seperti di engine-bot.

Koneksi MongoDB — src/config/database.ts

ts
const MONGO_URL = config.mongo_url;   // dari .env

export const connectDB = async (): Promise<void> => {
  try {
    await mongoose.connect(MONGO_URL);
    console.log("Mongodb Connected");
  } catch (error: any) {
    console.error("Mongodb Error Connection: ", error)
    process.exit(1);   // fail-fast (berbeda dari engine-bot)
  }
}
EnvironmentDatabaseHost
lokal (default)dazo127.0.0.1:27017
remotedari MONGO_URLconnection string dari tim

Tidak ada autentikasi

Sesi kredensial — filesystem

Kredensial Baileys disimpan di session/auth/<instanceId>/ (multi-file auth state). Folder ini:

  • Tidak ada di repo (di-gitignore)
  • Dibuat otomatis saat sesi baru (POST /api/new)
  • Dihapus saat logout (GET /api/logout)
  • Dimuat ulang saat boot (WhatsAppService.init() memindai folder ini)

Media pesan masuk — public/files/

Media (image/video/document/audio/sticker) dari pesan masuk diunduh ke public/files/ dengan nama <instanceId>_<uuid>.<ext>. Disajikan via GET /files/:filename. Thumbnail lokasi disimpan sebagai <instanceId>_loc_<uuid>.jpeg.

Langkah setup

bash
# 1. Install dependensi
npm install

# 2. Buat .env (lihat template di atas)
#    Pastikan MONGO_URL menunjuk ke MongoDB yang aktif

# 3. Pastikan MongoDB lokal berjalan di 127.0.0.1:27017

# 4. Jalankan
npm run dev

Verifikasi

bash
# Cek server jalan
curl http://localhost:5002/api/device-info?instance=test-uuid
# Expected: {"success":false,"message":"params instance wajib diisi"} atau NOT_FOUND

Tidak ada endpoint /health — verifikasi dengan endpoint API di atas.

Catatan

  • .env di-gitignore. Jangan commit kredensial produksi.
  • Tidak ada config/env.js branched seperti engine-bot — semua lewat .env + dotenv.
  • LEVEL_LOG=trace di development sangat verbose. Gunakan info atau warn di produksi.
  • APP_URL wajib set ke URL publik yang dapat diakses backend — URL media public/files/ dibentuk dari nilai ini.
  • package.json tidak mendefinisikan engines — verifikasi versi Node saat deploy.

Langkah berikutnya

Setup selesai? Lanjut ke Local Development untuk menjalankan project.