Cara Self-Host WhatsApp Gateway di VPS Menggunakan WAHA untuk Otomatisasi Pesan
Membangun WhatsApp gateway mandiri memerlukan alokasi RAM yang tepat agar sesi browser tidak terputus. Pelajari langkah konfigurasi WAHA di VPS Linux secara praktis.
Bagi pengembang web dan pemilik bisnis yang ingin mengirimkan notifikasi transaksi, kode OTP, atau pembaruan status pesanan secara mandiri, cara self-host whatsapp gateway di vps menjadi salah satu panduan yang paling banyak dicari. Banyak pengguna ingin memiliki API perpesanan sendiri tanpa harus terikat biaya langganan per pesan dari platform pihak ketiga.
Salah satu aplikasi yang banyak digunakan untuk kebutuhan ini adalah WAHA (WhatsApp HTTP API). Aplikasi berbasis container Docker ini memungkinkan server Anda berinteraksi dengan akun WhatsApp melalui endpoint REST API standar. Namun, karena WAHA menjalankan browser headless (Chromium) di latar belakang untuk mengelola sesi perpesanan, pengelolaan resource server menjadi faktor penentu agar sesi WhatsApp tidak mendadak terputus. Artikel ini membahas langkah teknis konfigurasi WAHA di VPS Linux serta penyesuaian server yang dibutuhkan.
Cara Kerja WAHA pada Server VPS Linux

Sebelum melakukan instalasi, penting untuk memahami bagaimana WAHA bekerja di dalam lingkungan server. WAHA bekerja sebagai jembatan antara aplikasi eksternal dan protokol web WhatsApp:
- WAHA berjalan di dalam container Docker dan membuka port HTTP (bawaan port 3000) untuk menerima permintaan API.
- Di dalam container, WAHA menjalankan proses headless Chromium untuk menghubungkan sesi WhatsApp Web.
- Aplikasi web Anda (seperti web toko online, backend aplikasi, atau sistem CRM) mengirimkan request JSON berupa nomor tujuan dan teks pesan ke endpoint
/api/sendText. - WAHA menerjemahkan request tersebut menjadi aksi pengiriman pesan melalui sesi browser yang sedang aktif.
- Pesan balasan atau status pengiriman dapat diteruskan kembali ke server Anda melalui webhook HTTP.
Karena melibatkan proses rendering browser di dalam server tanpa antarmuka grafis (GUI), kebutuhan RAM menjadi aspek utama yang harus diperhatikan sejak awal.
Penyebab Sesi WhatsApp Gateway Sering Terputus di Server
Berdasarkan kendala yang sering ditanyakan kepada tim support Flaz Cloud, masalah sesi WhatsApp yang keluar sendiri (logout) atau service yang berhenti mendadak biasanya disebabkan oleh beberapa faktor teknis.
Kehabisan Alokasi Memori RAM Akibat Proses Chromium
Headless Chromium membutuhkan alokasi memori yang cukup besar saat memuat aset JavaScript dari WhatsApp Web. Satu sesi aktif rata-rata membutuhkan konsumsi RAM sekitar 500 MB hingga 1 GB tergantung volume pesan yang mengalir.
Jika Anda menjalankan WAHA pada server dengan RAM 1 GB tanpa swap file, lonjakan penggunaan memori saat menerima banyak pesan media akan memicu kernel Linux mengaktifkan OOM killer. Proses Chromium akan dihentikan paksa, yang berakibat pada kegagalan pengiriman pesan dan terputusnya sesi.
Hilangnya Data Sesi Akibat Tidak Menggunakan Docker Volume
Kesalahan umum saat pertama kali menjalankan WAHA melalui perintah docker run adalah lupa memasang volume direktori permanen (bind mount). Secara default, data sesi login WhatsApp disimpan di dalam folder /app/.sessions di dalam container.
Jika container dihentikan atau di-restart tanpa volume persisten, seluruh file session token akan terhapus. Akibatnya, Anda harus melakukan scan QR code ulang setiap kali server melakukan reboot atau setiap kali container diperbarui.
Langkah Konfigurasi WAHA Menggunakan Docker Compose

Cara paling rapi untuk menjalankan WAHA di VPS Linux adalah menggunakan Docker Compose. Metode ini memudahkan Anda mengatur volume penyimpanan, variabel lingkungan, dan batasan penggunaan memori.
Menyiapkan Direktori dan File Konfigurasi
Masuk ke server VPS Anda melalui SSH, buat direktori kerja baru, dan buka file docker-compose.yml:
mkdir -p /opt/waha && cd /opt/waha
nano docker-compose.yml
Masukkan konfigurasi berikut ke dalam file:
version: '3.8'
services:
waha:
image: devlikeapro/waha:latest
container_name: waha
restart: always
ports:
- "127.0.0.1:3000:3000"
environment:
- WAHA_ZIP_LOGS=false
- WAHA_LOG_LEVEL=info
- WAHA_PRINT_QR=true
- WHATSAPP_DEFAULT_ENGINE=NOWEB
- WHATSAPP_API_KEY=kunci_api_rahasia_anda
volumes:
- ./sessions:/app/.sessions
Pada konfigurasi di atas:
- Port 3000 dibatasi pada
127.0.0.1agar tidak langsung terbuka ke internet publik, sehingga Anda dapat melindunginya menggunakan reverse proxy Nginx dan sertifikat SSL. - Variabel
WHATSAPP_API_KEYberfungsi sebagai pengaman otentikasi header agar endpoint API Anda tidak bisa diakses sembarang orang. - Direktori
./sessionsdipetakan ke/app/.sessionsagar data autentikasi tetap aman meskipun container di-restart.
Jalankan container menggunakan perintah:
docker compose up -d
Mengatur Swap Memory sebagai Bantalan RAM
Untuk mengantisipasi lonjakan beban saat proses sinkronisasi pesan riwayat berlangsung, pastikan VPS Anda memiliki file swap minimal 2 GB. Anda dapat memeriksa ketersediaan swap dengan perintah free -m.
Jika swap belum tersedia, pembuatan swap file 2 GB di Ubuntu dapat dilakukan dengan langkah sederhana:
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
Tambahkan /swapfile none swap sw 0 0 ke dalam file /etc/fstab agar swap tetap aktif setelah server di-reboot. Pemantauan beban server secara berkala dapat dipelajari melalui panduan cara mengatasi penggunaan CPU tinggi pada VPS.
Menghubungkan WAHA dengan Workflow Otomatisasi

Setelah container aktif dan QR code berhasil dipindai melalui dashboard WAHA, Anda dapat mulai menghubungkannya dengan berbagai sistem otomatisasi.
Salah satu skenario yang paling populer adalah memadukan gateway ini dengan alur kerja otomatisasi n8n. Melalui integrasi webhook, setiap event pesan masuk dari WAHA dapat langsung ditangkap oleh n8n untuk diteruskan ke database, Google Sheets, atau bot AI. Detail alur ini dapat Anda pelajari lebih lanjut dalam panduan otomatisasi WhatsApp dengan n8n.
Kapan Anda Perlu Menggunakan VPS Terpisah untuk WhatsApp Gateway
Banyak pengguna mencoba menggabungkan WAHA di dalam server yang sama dengan website WordPress atau aplikasi toko online utama. Pada skala uji coba, konfigurasi ini tidak menimbulkan masalah. Namun, pada skala produksi dengan frekuensi pesan harian yang tinggi, pemisahan server menjadi langkah yang perlu dipertimbangkan.
Anda sebaiknya memindahkan WAHA ke VPS terpisah jika menemukan kondisi berikut:
- Load average CPU server meningkat drastis saat proses broadcast atau pengiriman pesan massal berlangsung.
- Web server utama sering menampilkan error timeout karena kehabisan alokasi RAM yang tersedot oleh proses Chromium.
- Kebutuhan multi-session WhatsApp (mengelola lebih dari dua nomor sekaligus) membutuhkan alokasi RAM di atas 4 GB.
Untuk mempertimbangkan batas kapasitas server sebelum melakukan pemisahan infrastruktur, Anda dapat meninjau analisis kapan saat yang tepat upgrade ke VPS.
Menjalankan WhatsApp Gateway yang Stabil di Flaz Cloud
Stabilitas gateway perpesanan menuntut lingkungan server dengan kecepatan I/O tinggi dan alokasi memori yang konsisten agar koneksi websocket WhatsApp Web tidak terputus.
Bagi Anda yang ingin langsung menggunakan WAHA tanpa perlu repot melakukan instalasi Docker dan konfigurasi SSL manual melalui SSH, Flaz Cloud menyediakan layanan cloud apps WAHA Plus siap pakai yang sudah dioptimasi untuk kebutuhan operasional perpesanan. Jika Anda memerlukan kendali root penuh untuk merancang arsitektur microservices kustom bersama database PostgreSQL dan Redis, paket server VPS NVMe kami siap menjadi fondasi server yang mandiri untuk bisnis Anda.
Jika Anda membutuhkan saran teknis terkait alokasi kapasitas server yang pas untuk volume pengiriman pesan Anda, tim support Flaz Cloud siap membantu memetakan kebutuhan server Anda.
FAQ Teknis
1. Berapa kapasitas RAM minimal yang dibutuhkan untuk menjalankan WAHA di VPS?
Untuk menjalankan satu sesi WhatsApp secara stabil, spesifikasi minimal yang disarankan adalah VPS dengan 1 vCPU dan 2 GB RAM yang dilengkapi swap file 2 GB. Jika Anda berencana menjalankan lebih dari dua sesi nomor WhatsApp secara paralel di server yang sama, spesifikasi 2 vCPU dan 4 GB RAM menjadi standar minimal agar browser headless tidak mengalami crash.
2. Mengapa sesi WhatsApp di WAHA sering terputus setelah server di-reboot?
Hal ini umumnya terjadi karena direktori data sesi /app/.sessions tidak dipetakan ke volume penyimpanan fisik di luar container Docker. Tanpa binding volume lokal, seluruh token autentikasi akan terhapus saat lifecycle container berganti, sehingga Anda diwajibkan melakukan scan QR ulang.
3. Apa perbedaan engine WEBJS dan NOWEB pada konfigurasi WAHA?
Engine WEBJS menggunakan browser Chromium penuh untuk mengemulasi interaksi antarmuka web, sehingga membutuhkan konsumsi RAM lebih besar tetapi memiliki kompatibilitas fitur yang luas. Sementara itu, engine NOWEB bekerja melalui komunikasi soket langsung tanpa memuat browser grafis penuh, yang membuatnya jauh lebih hemat RAM dan CPU untuk kebutuhan pengiriman pesan teks standar.
4. Bagaimana cara mengamankan dashboard WAHA agar tidak bisa diakses publik?
Terapkan otentikasi API key melalui environment variable WHATSAPP_API_KEY. Selain itu, jalankan WAHA pada port lokal 127.0.0.1:3000 dan gunakan reverse proxy Nginx dengan sertifikat SSL Let's Encrypt serta proteksi HTTP Basic Auth untuk mengakses dashboard antarmukanya.
5. Apakah WAHA bisa digunakan untuk menerima pesan masuk melalui webhook?
Bisa. WAHA menyediakan konfigurasi webhook tujuan (misalnya URL webhook n8n atau endpoint backend Node.js/PHP Anda). Setiap kali ada pesan teks atau media yang masuk ke nomor WhatsApp Anda, WAHA akan otomatis mengirimkan payload data JSON ke URL webhook tersebut secara real-time.