OpenWA: API WhatsApp Self-Host Gratis untuk Otomasi dan Notifikasi

Masalah yang diselesaikan OpenWA

Peringatan server yang hanya masuk email sering terlambat dibaca. Sementara itu, WhatsApp adalah aplikasi yang hampir pasti Anda buka setiap jam. OpenWA menjembatani keduanya: gateway API WhatsApp yang Anda jalankan sendiri, sehingga skrip, cron, atau alur otomasi bisa mengirim pesan WhatsApp ke nomor Anda — tanpa perantara berbayar dan tanpa biaya per pesan.

OpenWA dibangun dengan Node.js/NestJS dan menyediakan REST API, dasbor web, dukungan multi-sesi (beberapa nomor dalam satu instalasi), webhook untuk pesan masuk, dan Swagger UI untuk mencoba API. Basis datanya SQLite secara default, dengan PostgreSQL dan Redis sebagai opsi untuk pemakaian yang lebih berat. Semuanya berjalan di server Anda, jadi isi pesan tidak melewati server pihak ketiga.

Peringatan jujur: ini BUKAN API resmi WhatsApp — nomor Anda bisa diblokir

Baca bagian ini sebelum Anda menghubungkan nomor apa pun.

OpenWA bekerja lewat automasi WhatsApp Web (engine whatsapp-web.js sebagai default, dengan baileys sebagai alternatif). Itu bukan WhatsApp Business API resmi dari Meta. WhatsApp melarang automasi tidak resmi dalam ketentuan layanannya, dan nomor yang dipakai untuk automasi semacam ini bisa diblokir, sementara maupun permanen — bahkan bila Anda hanya mengirim notifikasi ke diri sendiri.

Konsekuensinya:

  • Jangan hubungkan nomor utama Anda. Pakai nomor kedua yang Anda rela kehilangan aksesnya.
  • Jangan mengirim spam atau pesan massal. Volume tinggi dan pola seperti bot mempercepat pemblokiran.
  • Jangan andalkan ini untuk hal yang kritis bagi bisnis. Bila notifikasi itu menyangkut uang atau keselamatan, pakai WhatsApp Business API resmi dari Meta atau jalur resmi lain, meskipun berbayar.
  • Jangan menjanjikan "aman 100%" kepada siapa pun — termasuk kepada diri sendiri. Tidak ada gateway tidak resmi yang bisa menjamin itu.

Dengan peringatan itu dipahami, OpenWA tetap alat yang masuk akal untuk notifikasi pribadi, pengujian, dan otomasi skala kecil pada nomor kedua.

Langkah 1: Pasang OpenWA dengan Docker

Syaratnya hanya Docker dan Git di server Ubuntu Anda. Perintah berikut mengikuti README resmi proyek saat ini — perhatikan bahwa tutorial lama memakai port 3000, sementara versi sekarang memakai port 2785. Kalau Anda menyalin perintah dari tutorial lama, Anda akan membuka port yang salah.

git clone https://github.com/rmyndharis/OpenWA.git
cd OpenWA
docker compose -f docker-compose.dev.yml up -d

Setelah container berjalan, tiga alamat ini aktif di server Anda:

  • Dasbor: http://localhost:2785
  • API: http://localhost:2785/api
  • Swagger UI: http://localhost:2785/api/docs

Pada boot pertama, OpenWA membuat kunci API admin, mencetaknya sekali di log, dan menyimpannya di /app/data/.api-key di dalam container. Ambil dengan:

docker exec openwa-api cat /app/data/.api-key

Kunci itu tidak punya baris baru di akhir, jadi prompt shell akan menempel tepat setelah kunci — salin hanya kuncinya. Boot berikutnya hanya menampilkan awalan kunci yang disamarkan, jadi simpan kunci ini baik-baik. Kunci dipakai untuk masuk ke dasbor dan sebagai header X-API-Key di setiap panggilan API. Perlakukan kunci ini seperti kata sandi.

Langkah 2: Hubungkan nomor WhatsApp kedua Anda

Buka dasbor di http://localhost:2785 — karena port hanya mendengarkan di server, akses lewat SSH tunnel dari laptop Anda, atau lewat reverse proxy HTTPS bila Anda sudah memasangnya. Pindai kode QR yang tampil dengan aplikasi WhatsApp di HP nomor kedua Anda, persis seperti menautkan WhatsApp Web.

Sesi yang tertaut tersimpan di /app/data di dalam container, yang pada berkas Compose produksi dipetakan ke volume Docker bernama openwa-data. Artinya: mencadangkan volume itu berarti mencadangkan sesi dan riwayat; menghapusnya berarti Anda harus memindai QR ulang. Jangan pernah menghapus volume ini tanpa sengaja.

Langkah 3: Kirim pesan pertama dan hubungkan ke otomasi

Buka Swagger UI di http://localhost:2785/api/docs. Di sana Anda bisa melihat dan mencoba endpoint kirim pesan dengan header X-API-Key — kirim satu pesan uji ke nomor Anda sendiri sebelum membangun apa pun di atasnya.

Setelah pesan uji sampai, pola otomasi yang paling berguna adalah menggabungkan OpenWA dengan alat yang sudah Anda punya:

  • Uptime Kuma → OpenWA: saat monitor mendeteksi server down, webhook memicu pengiriman pesan WhatsApp ke Anda. Jauh lebih cepat dibaca daripada email.
  • n8n → OpenWA: alur n8n dengan node HTTP Request yang membawa header X-API-Key bisa mengirim ringkasan log harian, laporan backup, atau peringatan dari cron.
  • Skrip shell/cron → OpenWA: skrip backup yang gagal di tengah malam bisa langsung memberi tahu Anda, bukan ketahuan keesokan paginya.

Satu prinsip desain: pesan otomasi harus jarang dan penting. Notifikasi yang membanjiri setiap menit akan Anda abaikan — dan pola pengiriman agresif juga memperbesar risiko pemblokiran nomor.

Amankan instalasi Anda

OpenWA yang terekspos mentah ke internet adalah undangan terbuka: siapa pun yang menemukan portnya bisa memakai nomor Anda untuk mengirim pesan.

  • Jangan mengekspos port 2785 langsung ke internet. Akses lewat SSH tunnel, atau lewat reverse proxy HTTPS dengan autentikasi.
  • Simpan kunci API di luar repositori dan jangan pernah meng-commit berkas .env yang berisi kunci.
  • Batasi siapa yang bisa mencapai dasbor — idealnya hanya Anda, lewat VPN atau jaringan pribadi.
  • Cadangkan volume openwa-data bersama backup server rutin Anda.

OpenWA dibandingkan API resmi dan gateway berbayar

AspekOpenWA (self-host)WhatsApp Business API resmi (Meta)Gateway berbayar
BiayaGratis (di luar biaya VPS)Per percakapan, sesuai tarif MetaPer pesan / langganan
Status resmiTidak resmi — risiko blokir nomorResmi, didukung MetaUmumnya memakai API resmi
Kendali dataPenuh, di server AndaMelalui infrastruktur MetaMelalui server penyedia
Cocok untukNotifikasi pribadi, pengujian, skala kecilBisnis dan pesan kritisBisnis yang butuh cepat jalan
SyaratNomor kedua, Docker, kesediaan menerima risikoVerifikasi bisnis, nomor khususDaftar dan bayar

Cek sebelum selesai

  • OpenWA berjalan lewat Docker dan dasbor bisa dibuka di port 2785
  • Kunci API admin tersimpan aman di luar repositori
  • Nomor yang terhubung adalah nomor kedua, bukan nomor utama
  • Satu pesan uji terkirim dan diterima sebelum otomasi dibangun
  • Port 2785 tidak terekspos mentah ke internet
  • Volume openwa-data masuk dalam jadwal backup
  • Pemakaian dibatasi untuk notifikasi penting, bukan pesan massal

Kalau semua tercentang, Anda punya jalur notifikasi WhatsApp yang hidup di server Anda sendiri — gratis, terkendali, dan dengan risiko yang sudah Anda pahami sejak awal.

Notifikasi server apa yang ingin masuk ke WhatsApp Anda? Ceritakan di kolom komentar — dan bila Anda sudah memakai OpenWA, alur apa yang paling sering menyelamatkan Anda dari kejadian yang terlambat diketahui?

Baca juga:

Komentar