# 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.