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 şey | Aş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ğıran | Tanımlandığı yer |
|---|---|---|
<hookPath>/webhooks (POST) | omni-message; WhatsApp Cloud, WhatsApp Gupshup, Instagram, Messenger, Telegram, TikTok, Twilio SMS ve Varan OTP için | 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 kanalı üzerinden kendi sistemleriniz | 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 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çin | server/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 |
| MyFatoorah | hookPath'in kendisi (POST), /:paymentSystemOrderId/:status (POST) |
| N-Genius | hookPath'in kendisi (POST), /:paymentSystemOrderId/:status |
| Paywall | /:paymentSystemOrderId/:status |
| UniqoPay | hookPath'in kendisi (POST), /:paymentSystemOrderId/:status (POST) |
| VakıfBank Sanal POS | /:status (GET ve POST) |
| İş Yerim POS | hookPath'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ı
| Yol | Kullanım amacı | Tanımlandığı yer |
|---|---|---|
/api/:slug/custom-functions/… (POST) | Erişim jetonuyla HTTP üzerinden özel fonksiyon çağırma | lib/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 bildirimi | server/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 pencere | packages/app-managers-channel/src/webhook.ts |
/l/:_id (GET) | Müşterilere gönderdiğiniz kısa bağlantılar | server/api/short-link.js |
/api/status (GET) | Mobil uygulama sunucuyu ve oturum açma seçeneklerini kontrol eder | server/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.
- nginx'in (veya yük dengeleyicinizin) özgün adresi
X-Forwarded-Forbaşlığında göndermesini sağlayın, örneğinproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;. - MonoChat sunucusunda
HTTP_FORWARDED_COUNTortam 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
- İzin verilmeyen bir ağdan web uygulamasını açın. Reddedilmelidir.
- İ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.
- Ağınızın dışından bağlı bir kanala test mesajı gönderin ve gelen kutusuna ulaştığını doğrulayın.
- 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.
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.