Lewati ke konten utama

Batasi Instalasi On-Premise berdasarkan IP

Halaman ini untuk operator instalasi MonoChat on-premise. Halaman ini menjelaskan cara membatasi aplikasi web ke jaringan Anda sendiri di tingkat jaringan (nginx atau firewall) tanpa memblokir layanan yang harus memanggil MonoChat dari internet.

MonoChat tidak memiliki daftar izin IP sendiri. Pembatasan dilakukan di nginx, load balancer, atau firewall Anda dan berlaku untuk seluruh instalasi, bukan untuk satu tenant.

Apa yang dibatasi, apa yang tetap dibuka​

Tetap dibatasi ke jaringan AndaTetap dapat dijangkau dari internet
Aplikasi web dan semua yang tidak tercantum di sebelah kananJalur webhook dan callback pada tabel di bawah
Endpoint DDP/WebSocket yang dihubungi aplikasi web (/websocket)

Batasi UI web dan endpoint WebSocket bersama-sama: aplikasi menggunakan keduanya. Untuk pihak lain, izinkan hanya jalur di bawah ini dan blokir sisanya.

Jalur yang dipanggil layanan eksternal​

Setiap jalur di bawah didaftarkan oleh server MonoChat. Jalur yang dibangun dari sebuah pengaturan adalah hookPath yang Anda konfigurasi di server (di channelConnectors.<name> atau paymentSystemConnectors.<name> dalam pengaturan server); akhiran ditambahkan oleh kode. Buka hanya konektor yang Anda gunakan.

Kanal​

JalurDipanggil olehDidefinisikan di
<hookPath>/webhooks (POST)omni-message, untuk WhatsApp Cloud, WhatsApp Gupshup, Instagram, Messenger, Telegram, TikTok, Twilio SMS, dan Varan OTPpackages/app-connectors-om2-*/src/webhooks/webhook.ts; hookPath from channelConnectors.whatsappBusinessVegaCloud, whatsappBusinessVegaGupshup, instagramCastor, messengerRigel, telegramBotRegulus, tikTokTimir, twilioSms, varanOtp
<hookPath>/webhooks, <hookPath>/sessions, <hookPath>/messages (POST)Sistem Anda sendiri, melalui kanal Messages APIchannelConnectors.messagesApi.hookPath, packages/app-connectors-messages-api/src/webhooks/webhook.ts
<hookPath>/message, <hookPath>/info (POST)ChatwootchannelConnectors.chatwoot.hookPath, packages/app-connectors-chatwoot/src/webhook.ts
<hookPath>/inbound (POST)Penyedia SIP (kanal generic SIP dan Sonitel SIP)channelConnectors.genericSip.hookPath, channelConnectors.sonitelSip.hookPath
/api/facebook/channels/:channelId/flows/:flowId (POST)WhatsApp, untuk WhatsApp Flowsserver/api/whatsapp-flow.js

The channel providers (Meta, Telegram, TikTok, Twilio) do not call MonoChat directly. They call the omni-message webhook listener, which forwards to the /webhooks path above. If you run omni-message yourself, its webhook listener must be reachable from the internet on these paths: /webhooks/meta-messenger, /webhooks/instagram-business, /webhooks/wab-cloud, /webhooks/wab-gupshup/:channelId, /webhooks/wab-360-dialog/:channelId, /webhooks/telegram-bot/:channelId, /webhooks/tiktok and /webhooks/twilio-sms/:channelId (apps/webhook-listener/src/modules/webhook-listeners/webhook-listeners.controller.ts in omni-message). MonoChat itself must be reachable from omni-message on the /webhooks paths above.

Sistem pembayaran​

Penyedia pembayaran memanggil balik saat pelanggan membayar, lalu mengarahkan pelanggan kembali ke MonoChat. Keduanya harus berfungsi dari luar jaringan Anda.

KonektorJalur di bawah hookPath-nya (paymentSystemConnectors.<name>.hookPath)
Stripe/webhook/:clientId (POST), /return/success/:paymentSystemId, /return/cancel/:paymentSystemId
HyperPay/pay/:clientId/:paymentSystemOrderId, /result/:clientId/:paymentSystemOrderId
Mamo/webhook/:clientId (POST), /return/:clientId/:paymentSystemOrderId
Midtrans/webhook/:clientId (POST), /return/:paymentSystemOrderId
Paymob/webhook/:clientId (POST), /return/:paymentSystemOrderId
PayTabs/callback/:clientId/:paymentSystemOrderId (POST), /return/:paymentSystemOrderId
Tabby/webhook/:clientId (POST), /return/:paymentSystemOrderId/:status
Tamara/webhook/:clientId (POST), /return/:paymentSystemOrderId/:status
Tap/webhook/:clientId (POST), /return/:clientId/:paymentSystemOrderId
Telr/webhook/:clientId/:paymentSystemOrderId (POST), /return/:paymentSystemOrderId/:status
Ziina/return/:clientId/:paymentSystemOrderId/:status
iyzico/:transactionId (POST)
JCC/:status
MyFatoorahthe hookPath itself (POST), /:paymentSystemOrderId/:status (POST)
N-Geniusthe hookPath itself (POST), /:paymentSystemOrderId/:status
Paywall/:paymentSystemOrderId/:status
UniqoPaythe hookPath itself (POST), /:paymentSystemOrderId/:status (POST)
VakıfBank Sanal POS/:status (GET and POST)
İş Yerim POSthe hookPath itself (GET and POST)

Aturan paling sederhana adalah membuka <hookPath> beserta semua yang ada di bawahnya untuk setiap konektor pembayaran yang Anda gunakan. Setiap sumber adalah packages/app-connectors-<name>/src/webhook.ts.

Endpoint server lainnya​

JalurDigunakan untukDidefinisikan di
/api/:slug/custom-functions/… (POST)Memanggil custom function melalui HTTP dengan access tokenlib/managers/custom-function-sdk/_/server/endpoint.js
/api/ai-agent/mcp, /api/ai-agent/events (POST)Proses AI agent melapor kembali ke MonoChatserver/api/ai-agent.ts
/api/channels-manager/facebook/auth, /api/channels-manager/tiktok/auth (GET)Pop-up yang kembali setelah menghubungkan akun Facebook atau TikTokpackages/app-managers-channel/src/webhook.ts
/l/:_id (GET)Tautan pendek yang Anda kirim ke pelangganserver/api/short-link.js
/api/status (GET)Aplikasi seluler memeriksa server dan opsi login-nyaserver/api/status.js
/.well-known/assetlinks.json, /.well-known/apple-app-site-association (GET)Tautan aplikasi Android dan iOSserver/api/assetlinks.js, server/api/apple-app-site-association.js

Buka /api/:slug/custom-functions, /api/ai-agent, /l/, dan kedua jalur pop-up kanal jika Anda memakai fitur tersebut dari luar jaringan Anda. Jalur pop-up kanal dibuka di browser orang yang menghubungkan akun, jadi jalur ini boleh tetap dibatasi jika hanya orang di jaringan Anda yang menghubungkan kanal. Buka /api/status dan kedua file /.well-known hanya jika agen Anda menggunakan aplikasi seluler MonoChat dari luar jaringan Anda.

Login dengan penyedia (OAuth)​

Saat penyedia login mengarahkan browser kembali ke MonoChat, pengalihan itu adalah permintaan browser biasa dari orang yang sedang login, sehingga mengikuti pembatasan yang sama dengan aplikasi web. Jaga agar jalur pengalihan tetap dapat dijangkau oleh orang yang login dengan cara ini. Jalurnya adalah nilai redirectPath di public.oauth.<provider> dalam pengaturan server (contoh default adalah /api/oauth/google/redirect, /api/oauth/microsoft/redirect, /api/oauth/facebook/redirect, dan /api/oauth/apple/redirect). Login Apple mengirim browser kembali dengan POST (responseMode: form_post), yang diterima oleh jalur yang sama. Untuk aplikasi seluler, server juga menjawab /api/oauth/facebook/mobile, /api/oauth/microsoft/mobile, dan /auth/oauth-callback/<provider> (server/configs/oauth/mobile.ts).

Jika Anda menggunakan integrasi Microsoft Marketplace, jalur di microsoftMarketplace.redirectWebhookPath menerima permintaan Microsoft Marketplace dan harus dapat dijangkau dari internet (server/configs/microsoft-marketplace/webook.ts).

Teruskan IP klien asli melalui proxy​

MonoChat mencatat IP klien untuk sesi dan log status. Di belakang reverse proxy atau load balancer, yang terlihat adalah alamat proxy kecuali Anda meneruskan alamat aslinya.

  1. Atur nginx (atau load balancer Anda) agar mengirim alamat asli di header X-Forwarded-For, misalnya proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;.
  2. Atur variabel lingkungan HTTP_FORWARDED_COUNT pada server MonoChat ke jumlah proxy di depan aplikasi. Variabel ini dibaca oleh framework Meteor, bukan oleh kode MonoChat, sehingga ditempatkan di pengaturan deployment Anda dan bukan di JSON pengaturan.

Periksa pengaturan Anda​

  1. Dari jaringan yang tidak diizinkan, buka aplikasi web. Akses harus ditolak.
  2. Dari jaringan yang diizinkan, login dan buka kotak masuk. Pesan harus termuat, yang membuktikan endpoint WebSocket terbuka untuk Anda.
  3. Kirim pesan uji ke kanal yang terhubung dari luar jaringan Anda dan pastikan pesan itu masuk ke kotak masuk.
  4. Buat tautan pembayaran untuk pesanan uji kecil, bayar, dan pastikan pesanan tampil sebagai sudah dibayar.
peringatan

Uji jalur-jalur ini setelah setiap perubahan pada aturan proxy Anda. Jalur webhook yang diblokir tidak menampilkan error di MonoChat: pesan dan konfirmasi pembayaran hanya berhenti masuk.