4ce4204b6c
CI / Lint (push) Failing after 2s
CI / Build (push) Has been skipped
SDK CI / PHP SDK (push) Failing after 1s
Split PHP SDK / PHP SDK tests (push) Failing after 1s
CI / Test (push) Failing after 1s
CI / Dashboard (push) Failing after 0s
SDK CI / JavaScript SDK (push) Failing after 0s
SDK CI / Python SDK (push) Failing after 2s
SDK CI / Java SDK (push) Failing after 1s
Split PHP SDK / Mirror sdk/php -> rmyndharis/openwa-php (push) Has been skipped
CI / Test (PostgreSQL migrations) (push) Failing after 7m47s
CI / Docker Build (push) Has been skipped
121 lines
3.7 KiB
Markdown
121 lines
3.7 KiB
Markdown
# Panduan Deployment Docker OpenWA
|
|
|
|
Panduan ini menjelaskan cara melakukan deployment **OpenWA** (WhatsApp API Gateway) menggunakan Docker dan Docker Compose.
|
|
|
|
---
|
|
|
|
## 🚀 Persyaratan Sistem
|
|
Sebelum memulai, pastikan server Anda sudah terinstal:
|
|
* **Docker** (versi 20.10+)
|
|
* **Docker Compose** (versi 2.0+)
|
|
|
|
---
|
|
|
|
## 📁 Struktur Konfigurasi
|
|
|
|
OpenWA menggunakan fitur **Profiles** di Docker Compose untuk mempermudah orkestrasi layanan tambahan (database, cache, dll) sesuai kebutuhan infrastruktur Anda.
|
|
|
|
### Layanan Utama (Core)
|
|
* **`openwa-api`**: Server backend utama REST API OpenWA, sekaligus menyajikan Dashboard web (React UI) pada port yang sama.
|
|
|
|
### Layanan Tambahan (Optional Profiles)
|
|
* **`postgres`**: Database PostgreSQL (bawaan docker).
|
|
* **`redis`**: Caching layer untuk performa tinggi.
|
|
* **`minio`**: Penyimpanan berkas media yang kompatibel dengan Amazon S3.
|
|
|
|
---
|
|
|
|
## ⚡ Langkah Cepat (Development)
|
|
|
|
Untuk kebutuhan uji coba lokal dengan database bawaan SQLite dan penyimpanan lokal:
|
|
|
|
```bash
|
|
# 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 -d
|
|
```
|
|
|
|
Aplikasi dapat diakses di (Dashboard sudah menyatu dengan API pada port yang sama):
|
|
* **Dashboard UI**: `http://localhost:2785`
|
|
* **Swagger Docs**: `http://localhost:2785/api/docs`
|
|
|
|
---
|
|
|
|
## 🏭 Deployment Produksi
|
|
|
|
### 1. File Environment (`.env`)
|
|
Salin file `.env.example` menjadi `.env` lalu sesuaikan konfigurasi kunci keamanan Anda:
|
|
|
|
```bash
|
|
cp .env.example .env
|
|
```
|
|
|
|
Pastikan untuk mengubah nilai rahasia berikut di dalam `.env`:
|
|
* `API_MASTER_KEY`: Kunci keamanan untuk autentikasi API.
|
|
* `DATABASE_PASSWORD`: Sandi untuk database PostgreSQL (jika dipakai).
|
|
|
|
### 2. Memilih Skenario Deployment (Docker Profiles)
|
|
|
|
> Dashboard sudah menyatu ke dalam image API dan disajikan oleh NestJS pada port API (2785),
|
|
> jadi tidak ada lagi profil/container `with-dashboard` terpisah.
|
|
|
|
#### Skenario A: Produksi Minimalis (SQLite + Dashboard)
|
|
Cocok untuk VPS resource kecil (RAM 1GB - 2GB):
|
|
```bash
|
|
docker compose up -d
|
|
```
|
|
|
|
#### Skenario B: Produksi Menengah (PostgreSQL + Dashboard)
|
|
Cocok untuk keandalan data lebih tinggi:
|
|
```bash
|
|
docker compose --profile postgres up -d
|
|
```
|
|
|
|
#### Skenario C: Full Stack (PostgreSQL + Redis + S3 MinIO)
|
|
Cocok untuk skala enterprise dengan multi-sesi aktif:
|
|
```bash
|
|
docker compose --profile full up -d
|
|
```
|
|
|
|
---
|
|
|
|
## ⚙️ Variabel Lingkungan Penting (Environment Variables)
|
|
|
|
Berikut 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`). |
|
|
|
|
---
|
|
|
|
## 🔍 Pemeriksaan Status & Diagnostik
|
|
|
|
Memeriksa apakah kontainer berjalan lancar:
|
|
```bash
|
|
docker compose ps
|
|
```
|
|
|
|
Melihat log aktivitas sistem OpenWA:
|
|
```bash
|
|
docker compose logs -f openwa-api
|
|
```
|
|
|
|
Melakukan pembersihan/berhenti:
|
|
```bash
|
|
docker compose down
|
|
```
|
|
|
|
---
|
|
|
|
## 🤝 Kontribusi
|
|
Jika Anda menemukan kendala saat setup menggunakan Docker, silakan ajukan Issue atau Pull Request di repositori ini.
|