Panduan ini menjelaskan cara melakukan deployment OpenWA (WhatsApp API Gateway) menggunakan Docker dan Docker Compose.
Sebelum memulai, pastikan server Anda sudah terinstal:
- Docker (versi 20.10+)
- Docker Compose (versi 2.0+)
OpenWA menggunakan fitur Profiles di Docker Compose untuk mempermudah orkestrasi layanan tambahan (database, cache, dll) sesuai kebutuhan infrastruktur Anda.
openwa-api: Server backend utama REST API OpenWA, sekaligus menyajikan Dashboard web (React UI) pada port yang sama.
postgres: Database PostgreSQL (bawaan docker).redis: Caching layer untuk performa tinggi.minio: Penyimpanan berkas media yang kompatibel dengan Amazon S3.
Untuk kebutuhan uji coba lokal dengan database bawaan SQLite dan penyimpanan lokal:
# 1. Clone repositori hasil fork Anda
git clone git@github.com:jimmimohtar/OpenWA.git
cd OpenWA
# 2. Jalankan docker compose khusus development
docker compose -f docker-compose.dev.yml up -dAplikasi dapat diakses di (Dashboard sudah menyatu dengan API pada port yang sama):
- Dashboard UI:
http://localhost:2785 - Swagger Docs:
http://localhost:2785/api/docs
Salin file .env.example menjadi .env lalu sesuaikan konfigurasi kunci keamanan Anda:
cp .env.example .envPastikan untuk mengubah nilai rahasia berikut di dalam .env:
API_MASTER_KEY: Kunci keamanan untuk autentikasi API.DATABASE_PASSWORD: Sandi untuk database PostgreSQL (jika dipakai).
Dashboard sudah menyatu ke dalam image API dan disajikan oleh NestJS pada port API (2785), jadi tidak ada lagi profil/container
with-dashboardterpisah.
Cocok untuk VPS resource kecil (RAM 1GB - 2GB):
docker compose up -dCocok untuk keandalan data lebih tinggi:
docker compose --profile postgres up -dCocok untuk skala enterprise dengan multi-sesi aktif:
docker compose --profile full up -dBerikut variabel penting yang bisa disesuaikan di .env:
| Nama Variabel | Nilai Default | Deskripsi |
|---|---|---|
API_PORT |
2785 |
Port REST API sekaligus Dashboard UI (disajikan oleh NestJS). |
DATABASE_TYPE |
sqlite |
Jenis database yang digunakan (sqlite atau postgres). |
DATABASE_NAME |
/app/data/openwa.sqlite |
Lokasi database SQLite atau nama database PostgreSQL. |
ENGINE_TYPE |
whatsapp-web.js |
Driver/mesin engine WhatsApp yang digunakan (whatsapp-web.js default, berbasis Chromium; atau baileys, tanpa browser). |
SERVE_DASHBOARD |
true |
Sajikan Dashboard UI dari port API yang sama. Set false untuk menonaktifkan penyajian static files. |
PUPPETEER_HEADLESS |
true |
Menjalankan browser WhatsApp secara tersembunyi (hanya berlaku untuk engine whatsapp-web.js). |
Memeriksa apakah kontainer berjalan lancar:
docker compose psMelihat log aktivitas sistem OpenWA:
docker compose logs -f openwa-apiMelakukan pembersihan/berhenti:
docker compose downJika Anda menemukan kendala saat setup menggunakan Docker, silakan ajukan Issue atau Pull Request di repositori ini.