IP के आधार पर ऑन-प्रेमिस इंस्टॉलेशन को सीमित करें
यह पेज ऑन-प्रेमिस MonoChat इंस्टॉलेशन चलाने वाले ऑपरेटरों के लिए है। इसमें बताया गया है कि वेब ऐप को नेटवर्क स्तर पर (nginx या फ़ायरवॉल से) अपने नेटवर्क तक कैसे सीमित करें, ताकि जिन सेवाओं को इंटरनेट से MonoChat को कॉल करना होता है वे ब्लॉक न हों।
MonoChat की अपनी कोई IP अनुमति सूची नहीं है। प्रतिबंध आपके nginx, लोड बैलेंसर या फ़ायरवॉल में लगता है और पूरे इंस्टॉलेशन पर लागू होता है, किसी एक टेनेंट पर नहीं।
किसे सीमित करें और किसे खुला रखें
| अपने नेटवर्क तक सीमित रखें | इंटरनेट से पहुँच योग्य रखें |
|---|---|
| वेब ऐप और दाईं ओर सूचीबद्ध न किया गया सब कुछ | नीचे की तालिकाओं में दिए गए webhook और callback पथ |
वह DDP/WebSocket एंडपॉइंट जिससे वेब ऐप जुड़ता है (/websocket) |
वेब UI और WebSocket एंडपॉइंट को एक साथ सीमित करें: ऐप दोनों का उपयोग करता है। बाकी सभी के लिए केवल नीचे दिए गए पथ अनुमत करें और बाकी को ब्लॉक करें।
वे पथ जिन्हें बाहरी सेवाएँ कॉल करती हैं
नीचे दिया गया हर पथ MonoChat सर्वर में पंजीकृत है। सेटिंग से बना पथ वह hookPath है जो आपने सर्वर पर कॉन्फ़िगर किया है (सर्वर सेटिंग में channelConnectors.<name> या paymentSystemConnectors.<name> के अंतर्गत); प्रत्यय कोड जोड़ता है। केवल वही कनेक्टर खोलें जिनका आप उपयोग करते हैं।
चैनल
| पथ | कौन कॉल करता है | कहाँ परिभाषित है |
|---|---|---|
<hookPath>/webhooks (POST) | omni-message, WhatsApp Cloud, WhatsApp Gupshup, Instagram, Messenger, Telegram, TikTok, Twilio SMS और Varan OTP के लिए | packages/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) | आपके अपने सिस्टम, Messages API चैनल के माध्यम से | channelConnectors.messagesApi.hookPath, packages/app-connectors-messages-api/src/webhooks/webhook.ts |
<hookPath>/message, <hookPath>/info (POST) | Chatwoot | channelConnectors.chatwoot.hookPath, packages/app-connectors-chatwoot/src/webhook.ts |
<hookPath>/inbound (POST) | SIP प्रदाता (generic SIP और Sonitel SIP चैनल) | channelConnectors.genericSip.hookPath, channelConnectors.sonitelSip.hookPath |
/api/facebook/channels/:channelId/flows/:flowId (POST) | WhatsApp, WhatsApp Flows के लिए | server/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.
भुगतान सिस्टम
भुगतान प्रदाता ग्राहक के भुगतान करने पर callback करते हैं और उसके बाद ग्राहक को वापस MonoChat भेजते हैं। दोनों आपके नेटवर्क के बाहर से काम करने चाहिए।
| कनेक्टर | उसके hookPath (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 |
| MyFatoorah | the hookPath itself (POST), /:paymentSystemOrderId/:status (POST) |
| N-Genius | the hookPath itself (POST), /:paymentSystemOrderId/:status |
| Paywall | /:paymentSystemOrderId/:status |
| UniqoPay | the hookPath itself (POST), /:paymentSystemOrderId/:status (POST) |
| VakıfBank Sanal POS | /:status (GET and POST) |
| İş Yerim POS | the hookPath itself (GET and POST) |
सबसे सरल नियम यह है कि आप जिस भी भुगतान कनेक्टर का उपयोग करते हैं उसके लिए <hookPath> और उसके नीचे सब कुछ खोल दें। हर स्रोत packages/app-connectors-<name>/src/webhook.ts है।
अन्य सर्वर एंडपॉइंट
| पथ | किसलिए उपयोग होता है | कहाँ परिभाषित है |
|---|---|---|
/api/:slug/custom-functions/… (POST) | एक्सेस टोकन के साथ HTTP के ज़रिए कस्टम फ़ंक्शन कॉल करना | lib/managers/custom-function-sdk/_/server/endpoint.js |
/api/ai-agent/mcp, /api/ai-agent/events (POST) | AI एजेंट रन का MonoChat को वापस रिपोर्ट करना | server/api/ai-agent.ts |
/api/channels-manager/facebook/auth, /api/channels-manager/tiktok/auth (GET) | Facebook या TikTok अकाउंट जोड़ने के बाद लौटने वाला पॉप-अप | packages/app-managers-channel/src/webhook.ts |
/l/:_id (GET) | ग्राहकों को भेजे जाने वाले शॉर्ट लिंक | server/api/short-link.js |
/api/status (GET) | मोबाइल ऐप सर्वर और उसके साइन-इन विकल्पों की जाँच करता है | server/api/status.js |
/.well-known/assetlinks.json, /.well-known/apple-app-site-association (GET) | Android और iOS ऐप लिंक | server/api/assetlinks.js, server/api/apple-app-site-association.js |
यदि आप इन सुविधाओं का उपयोग अपने नेटवर्क के बाहर से करते हैं तो /api/:slug/custom-functions, /api/ai-agent, /l/ और दोनों चैनल पॉप-अप पथ खोलें। चैनल पॉप-अप पथ अकाउंट जोड़ने वाले व्यक्ति के ब्राउज़र में खुलते हैं, इसलिए यदि चैनल केवल आपके नेटवर्क के लोग जोड़ते हैं तो वे सीमित रह सकते हैं। /api/status और दोनों /.well-known फ़ाइलें तभी खोलें जब आपके एजेंट MonoChat मोबाइल ऐप का उपयोग आपके नेटवर्क के बाहर से करते हैं।
प्रदाता से साइन-इन (OAuth)
जब कोई साइन-इन प्रदाता ब्राउज़र को वापस MonoChat पर भेजता है, तो यह साइन इन करने वाले व्यक्ति का सामान्य ब्राउज़र अनुरोध होता है, इसलिए इस पर वही प्रतिबंध लागू होता है जो वेब ऐप पर है। इस तरह साइन इन करने वाले लोगों के लिए रीडायरेक्ट पथ पहुँच योग्य रखें। ये पथ सर्वर सेटिंग में public.oauth.<provider> के अंतर्गत redirectPath मान हैं (डिफ़ॉल्ट उदाहरण /api/oauth/google/redirect, /api/oauth/microsoft/redirect, /api/oauth/facebook/redirect और /api/oauth/apple/redirect हैं)। Apple साइन-इन ब्राउज़र को POST (responseMode: form_post) के साथ वापस भेजता है, जिसे वही पथ स्वीकार करता है। मोबाइल ऐप के लिए सर्वर /api/oauth/facebook/mobile, /api/oauth/microsoft/mobile और /auth/oauth-callback/<provider> (server/configs/oauth/mobile.ts) का भी उत्तर देता है।
यदि आप Microsoft Marketplace इंटीग्रेशन का उपयोग करते हैं, तो microsoftMarketplace.redirectWebhookPath का पथ Microsoft Marketplace का अनुरोध प्राप्त करता है और इंटरनेट से पहुँच योग्य होना चाहिए (server/configs/microsoft-marketplace/webook.ts)।
प्रॉक्सी के माध्यम से असली क्लाइंट IP पास करें
MonoChat सेशन और स्टेटस लॉग के लिए क्लाइंट IP दर्ज करता है। रिवर्स प्रॉक्सी या लोड बैलेंसर के पीछे यह प्रॉक्सी का पता देखता है, जब तक आप असली पता आगे न भेजें।
- nginx (या अपने लोड बैलेंसर) से मूल पता
X-Forwarded-Forहेडर में भिजवाएँ, उदाहरण के लिएproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;। - MonoChat सर्वर पर एनवायरनमेंट वैरिएबल
HTTP_FORWARDED_COUNTको ऐप के सामने मौजूद प्रॉक्सी की संख्या पर सेट करें। इसे Meteor फ़्रेमवर्क पढ़ता है, MonoChat कोड नहीं, इसलिए यह आपकी डिप्लॉयमेंट सेटिंग में रखा जाता है, सेटिंग JSON में नहीं।
अपना सेटअप जाँचें
- ऐसे नेटवर्क से जो अनुमत नहीं है, वेब ऐप खोलें। उसे अस्वीकार किया जाना चाहिए।
- अनुमत नेटवर्क से साइन इन करें और इनबॉक्स खोलें। संदेश लोड होने चाहिए, जो सिद्ध करता है कि WebSocket एंडपॉइंट आपके लिए खुला है।
- अपने नेटवर्क के बाहर से किसी जुड़े हुए चैनल पर टेस्ट संदेश भेजें और पुष्टि करें कि वह इनबॉक्स में पहुँचा।
- एक छोटे टेस्ट ऑर्डर के लिए भुगतान लिंक बनाएँ, भुगतान करें, और पुष्टि करें कि ऑर्डर भुगतान किया हुआ दिखता है।
अपने प्रॉक्सी नियमों में हर बदलाव के बाद पथों की जाँच करें। ब्लॉक किया गया webhook पथ MonoChat में कोई त्रुटि नहीं दिखाता: संदेश और भुगतान पुष्टि बस आना बंद हो जाते हैं।