Ana içeriğe geç

On-Premise Kurulumu IP ile Kısıtlama

Bu sayfa, MonoChat'in on-premise kurulumunu işleten yöneticiler içindir. Web uygulamasını, internetten MonoChat'i çağırması gereken servisleri engellemeden, ağ düzeyinde (nginx veya güvenlik duvarı) kendi ağlarınızla nasıl sınırlayacağınızı anlatır.

MonoChat'in kendi IP izin listesi yoktur. Kısıtlama nginx, yük dengeleyici veya güvenlik duvarınızda yapılır ve tek bir tenant'a değil, tüm kuruluma uygulanır.

Neyi kısıtlamalı, neyi açık tutmalı​

Ağlarınızla sınırlı kalacaklarİnternetten erişilebilir kalacaklar
Web uygulaması ve sağda listelenmeyen her şeyAşağıdaki tablolardaki webhook ve geri çağrı (callback) yolları
Web uygulamasının bağlandığı DDP/WebSocket uç noktası (/websocket)

Web arayüzünü ve WebSocket uç noktasını birlikte kısıtlayın: uygulama ikisini de kullanır. Diğer herkes için yalnızca aşağıdaki yollara izin verin, gerisini engelleyin.

Dış servislerin çağırdığı yollar​

Aşağıdaki her yol MonoChat sunucusu tarafından kaydedilir. Bir ayardan oluşturulan yol, sunucuda yapılandırdığınız hookPath değeridir (sunucu ayarlarında channelConnectors.<name> veya paymentSystemConnectors.<name> altında); sonek kod tarafından eklenir. Yalnızca kullandığınız bağlayıcıları açın.

Kanallar​

YolÇağıranTanımlandığı yer
<hookPath>/webhooks (POST)omni-message; WhatsApp Cloud, WhatsApp Gupshup, Instagram, Messenger, Telegram, TikTok, Twilio SMS ve Varan OTP içinpackages/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 kanalı üzerinden kendi sistemlerinizchannelConnectors.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)SIP sağlayıcısı (generic SIP ve Sonitel SIP kanalları)channelConnectors.genericSip.hookPath, channelConnectors.sonitelSip.hookPath
/api/facebook/channels/:channelId/flows/:flowId (POST)WhatsApp, WhatsApp Flows içinserver/api/whatsapp-flow.js

Kanal sağlayıcıları (Meta, Telegram, TikTok, Twilio) MonoChat'i doğrudan çağırmaz. omni-message webhook listener'ını çağırırlar; o da yukarıdaki /webhooks yoluna iletir. omni-message'ı kendiniz çalıştırıyorsanız, webhook listener'ının bu yollarda internetten erişilebilir olması gerekir: /webhooks/meta-messenger, /webhooks/instagram-business, /webhooks/wab-cloud, /webhooks/wab-gupshup/:channelId, /webhooks/wab-360-dialog/:channelId, /webhooks/telegram-bot/:channelId, /webhooks/tiktok ve /webhooks/twilio-sms/:channelId (omni-message içinde apps/webhook-listener/src/modules/webhook-listeners/webhook-listeners.controller.ts). MonoChat'in kendisi de omni-message tarafından yukarıdaki /webhooks yollarında erişilebilir olmalıdır.

Ödeme sistemleri​

Ödeme sağlayıcıları, bir müşteri ödeme yaptığında geri çağrı gönderir ve sonrasında müşteriyi MonoChat'e geri yönlendirir. İkisi de ağınızın dışından çalışmalıdır.

BağlayıcıhookPath altındaki yollar (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
MyFatoorahhookPath'in kendisi (POST), /:paymentSystemOrderId/:status (POST)
N-GeniushookPath'in kendisi (POST), /:paymentSystemOrderId/:status
Paywall/:paymentSystemOrderId/:status
UniqoPayhookPath'in kendisi (POST), /:paymentSystemOrderId/:status (POST)
VakıfBank Sanal POS/:status (GET ve POST)
İş Yerim POShookPath'in kendisi (GET ve POST)

En basit kural, kullandığınız her ödeme bağlayıcısı için <hookPath> ve altındaki her şeyi açmaktır. Her kaynak packages/app-connectors-<name>/src/webhook.ts dosyasıdır.

Diğer sunucu uç noktaları​

YolKullanım amacıTanımlandığı yer
/api/:slug/custom-functions/… (POST)Erişim jetonuyla HTTP üzerinden özel fonksiyon çağırmalib/managers/custom-function-sdk/_/server/endpoint.js
/api/ai-agent/mcp, /api/ai-agent/events (POST)AI agent çalıştırmalarının MonoChat'e geri bildirimiserver/api/ai-agent.ts
/api/channels-manager/facebook/auth, /api/channels-manager/tiktok/auth (GET)Facebook veya TikTok hesabı bağlandıktan sonra geri dönen açılır pencerepackages/app-managers-channel/src/webhook.ts
/l/:_id (GET)Müşterilere gönderdiğiniz kısa bağlantılarserver/api/short-link.js
/api/status (GET)Mobil uygulama sunucuyu ve oturum açma seçeneklerini kontrol ederserver/api/status.js
/.well-known/assetlinks.json, /.well-known/apple-app-site-association (GET)Android ve iOS uygulama bağlantılarıserver/api/assetlinks.js, server/api/apple-app-site-association.js

Bu özellikleri ağınızın dışından kullanıyorsanız /api/:slug/custom-functions, /api/ai-agent, /l/ ve iki kanal açılır pencere yolunu açın. Kanal açılır pencere yolları hesabı bağlayan kişinin tarayıcısında açılır; bu nedenle kanalları yalnızca ağınızdaki kişiler bağlıyorsa kısıtlı kalabilirler. /api/status ve iki /.well-known dosyasını yalnızca temsilcileriniz MonoChat mobil uygulamasını ağınızın dışından kullanıyorsa açın.

Sağlayıcıyla oturum açma (OAuth)​

Bir oturum açma sağlayıcısı tarayıcıyı MonoChat'e geri yönlendirdiğinde, bu yönlendirme oturum açan kişinin normal bir tarayıcı isteğidir; bu yüzden web uygulamasıyla aynı kısıtlamaya tabidir. Yönlendirme yollarını bu şekilde oturum açan kişiler için erişilebilir tutun. Yollar, sunucu ayarlarında public.oauth.<provider> içindeki redirectPath değerleridir (varsayılan örnekler /api/oauth/google/redirect, /api/oauth/microsoft/redirect, /api/oauth/facebook/redirect ve /api/oauth/apple/redirect). Apple ile oturum açma tarayıcıyı POST ile geri gönderir (responseMode: form_post); aynı yol bunu kabul eder. Mobil uygulama için sunucu ayrıca /api/oauth/facebook/mobile, /api/oauth/microsoft/mobile ve /auth/oauth-callback/<provider> yollarına yanıt verir (server/configs/oauth/mobile.ts).

Microsoft Marketplace entegrasyonunu kullanıyorsanız, microsoftMarketplace.redirectWebhookPath içindeki yol Microsoft Marketplace isteğini alır ve internetten erişilebilir olmalıdır (server/configs/microsoft-marketplace/webook.ts).

Gerçek istemci IP'sini proxy üzerinden iletin​

MonoChat, oturumlar ve durum günlükleri için istemci IP'sini kaydeder. Bir ters proxy veya yük dengeleyicinin arkasında, gerçek adresi iletmediğiniz sürece proxy'nin adresini görür.

  1. nginx'in (veya yük dengeleyicinizin) özgün adresi X-Forwarded-For başlığında göndermesini sağlayın, örneğin proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;.
  2. MonoChat sunucusunda HTTP_FORWARDED_COUNT ortam değişkenini uygulamanın önündeki proxy sayısına ayarlayın. Bu değişkeni MonoChat kodu değil Meteor framework'ü okur; bu yüzden ayar JSON'unda değil, dağıtım ayarlarınızda yer alır.

Kurulumunuzu kontrol edin​

  1. İzin verilmeyen bir ağdan web uygulamasını açın. Reddedilmelidir.
  2. İzin verilen bir ağdan oturum açın ve gelen kutusunu açın. Mesajlar yüklenmelidir; bu, WebSocket uç noktasının size açık olduğunu kanıtlar.
  3. Ağınızın dışından bağlı bir kanala test mesajı gönderin ve gelen kutusuna ulaştığını doğrulayın.
  4. Küçük bir test siparişi için ödeme bağlantısı oluşturun, ödemeyi yapın ve siparişin ödendi olarak göründüğünü doğrulayın.
uyarı

Proxy kurallarınızda her değişiklikten sonra yolları test edin. Engellenen bir webhook yolu MonoChat'te hata göstermez: mesajlar ve ödeme onayları sadece gelmeyi bırakır.