Ada satu sumber konfigurasi di engine-whatsapp: file .env di root project. Loader ada di src/config/config.ts.
Prasyarat
| Kebutuhan | Versi |
|---|---|
| Node.js | diuji v20–v23 (disarankan ≥ 20) — project tidak mendefinisikan engines |
| MongoDB | berjalan, port 27017 |
| Tidak butuh | Redis, OpenAI API key, JWT secret — service ini tidak bergantung pada ketiganya |
File .env
Buat file .env di root project:
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/dazoField konfigurasi
| Variable | Default (jika kosong) | Keterangan |
|---|---|---|
PORT | 5002 | Port HTTP server (Express + Socket.IO di port yang sama) |
APP_ENV | development | Jika production, detail error disembunyikan dari response |
APP_URL | http://localhost:5002 | Base URL publik; dipakai untuk membentuk URL media ({APP_URL}/files/...) |
WEBHOOK_URL | http://localhost:3000/webhook-test | Base URL backend. Engine memanggil {WEBHOOK_URL}/callback_message |
LEVEL_LOG | trace | Level Pino: trace/debug/info/warn/error |
MONGO_URL | mongodb://127.0.0.1:27017/dazo | Connection string MongoDB |
Loader — src/config/config.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
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)
}
}| Environment | Database | Host |
|---|---|---|
| lokal (default) | dazo | 127.0.0.1:27017 |
| remote | dari MONGO_URL | connection 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
# 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 devVerifikasi
# Cek server jalan
curl http://localhost:5002/api/device-info?instance=test-uuid
# Expected: {"success":false,"message":"params instance wajib diisi"} atau NOT_FOUNDTidak ada endpoint /health — verifikasi dengan endpoint API di atas.
Catatan
.envdi-gitignore. Jangan commit kredensial produksi.- Tidak ada
config/env.jsbranched sepertiengine-bot— semua lewat.env+dotenv. LEVEL_LOG=tracedi development sangat verbose. Gunakaninfoatauwarndi produksi.APP_URLwajib set ke URL publik yang dapat diakses backend — URL mediapublic/files/dibentuk dari nilai ini.package.jsontidak mendefinisikanengines— verifikasi versi Node saat deploy.
Langkah berikutnya
Setup selesai? Lanjut ke Local Development untuk menjalankan project.