Zum Hauptinhalt springen

On-Premise-Installation nach IP-Adresse einschränken

Diese Seite richtet sich an Betreiber einer On-Premise-Installation von MonoChat. Sie erklärt, wie Sie die Web-App auf Netzwerkebene (nginx oder Firewall) auf Ihre eigenen Netze beschränken, ohne die Dienste zu blockieren, die MonoChat aus dem Internet aufrufen müssen.

MonoChat hat keine eigene IP-Allowlist. Die Einschränkung liegt in Ihrem nginx, Load Balancer oder Ihrer Firewall und gilt für die gesamte Installation, nicht für einen einzelnen Mandanten.

Was einzuschränken ist und was offen bleibt​

Auf Ihre Netze beschränkt lassenAus dem Internet erreichbar lassen
Die Web-App und alles, was rechts nicht aufgeführt istDie Webhook- und Callback-Pfade in den folgenden Tabellen
Der DDP/WebSocket-Endpunkt, mit dem sich die Web-App verbindet (/websocket)

Beschränken Sie die Web-Oberfläche und den WebSocket-Endpunkt gemeinsam: Die App nutzt beide. Erlauben Sie allen anderen nur die folgenden Pfade und blockieren Sie den Rest.

Pfade, die externe Dienste aufrufen​

Jeder der folgenden Pfade wird vom MonoChat-Server registriert. Ein aus einer Einstellung gebildeter Pfad ist der hookPath, den Sie auf dem Server konfiguriert haben (in channelConnectors.<name> oder paymentSystemConnectors.<name> in den Servereinstellungen); das Suffix fügt der Code hinzu. Öffnen Sie nur die Connectors, die Sie verwenden.

Kanäle​

PfadAufgerufen vonDefiniert in
<hookPath>/webhooks (POST)omni-message, für WhatsApp Cloud, WhatsApp Gupshup, Instagram, Messenger, Telegram, TikTok, Twilio SMS und Varan OTPpackages/app-connectors-om2-*/src/webhooks/webhook.ts; hookPath aus channelConnectors.whatsappBusinessVegaCloud, whatsappBusinessVegaGupshup, instagramCastor, messengerRigel, telegramBotRegulus, tikTokTimir, twilioSms, varanOtp
<hookPath>/webhooks, <hookPath>/sessions, <hookPath>/messages (POST)Ihre eigenen Systeme, über den Messages-API-KanalchannelConnectors.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)Der SIP-Anbieter (Kanäle Generic SIP und Sonitel SIP)channelConnectors.genericSip.hookPath, channelConnectors.sonitelSip.hookPath
/api/facebook/channels/:channelId/flows/:flowId (POST)WhatsApp, für WhatsApp Flowsserver/api/whatsapp-flow.js

Die Kanalanbieter (Meta, Telegram, TikTok, Twilio) rufen MonoChat nicht direkt auf. Sie rufen den Webhook-Listener von omni-message auf, der an den oben genannten Pfad /webhooks weiterleitet. Wenn Sie omni-message selbst betreiben, muss sein Webhook-Listener auf diesen Pfaden aus dem Internet erreichbar sein: /webhooks/meta-messenger, /webhooks/instagram-business, /webhooks/wab-cloud, /webhooks/wab-gupshup/:channelId, /webhooks/wab-360-dialog/:channelId, /webhooks/telegram-bot/:channelId, /webhooks/tiktok und /webhooks/twilio-sms/:channelId (apps/webhook-listener/src/modules/webhook-listeners/webhook-listeners.controller.ts in omni-message). MonoChat selbst muss für omni-message auf den oben genannten /webhooks-Pfaden erreichbar sein.

Zahlungssysteme​

Zahlungsanbieter rufen zurück, wenn ein Kunde bezahlt, und leiten den Kunden danach zu MonoChat zurück. Beides muss von außerhalb Ihres Netzes funktionieren.

ConnectorPfade unter dessen 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
MyFatoorahder hookPath selbst (POST), /:paymentSystemOrderId/:status (POST)
N-Geniusder hookPath selbst (POST), /:paymentSystemOrderId/:status
Paywall/:paymentSystemOrderId/:status
UniqoPayder hookPath selbst (POST), /:paymentSystemOrderId/:status (POST)
VakıfBank Sanal POS/:status (GET und POST)
İş Yerim POSder hookPath selbst (GET und POST)

Am einfachsten öffnen Sie für jeden verwendeten Zahlungs-Connector <hookPath> und alles darunter. Die jeweilige Quelle ist packages/app-connectors-<name>/src/webhook.ts.

Weitere Server-Endpunkte​

PfadVerwendet fürDefiniert in
/api/:slug/custom-functions/… (POST)Aufruf einer benutzerdefinierten Funktion über HTTP mit einem Zugriffstokenlib/managers/custom-function-sdk/_/server/endpoint.js
/api/ai-agent/mcp, /api/ai-agent/events (POST)KI-Agent-Läufe, die an MonoChat zurückmeldenserver/api/ai-agent.ts
/api/channels-manager/facebook/auth, /api/channels-manager/tiktok/auth (GET)Das Pop-up, das nach dem Verbinden eines Facebook- oder TikTok-Kontos zurückkehrtpackages/app-managers-channel/src/webhook.ts
/l/:_id (GET)Kurzlinks, die Sie an Kunden sendenserver/api/short-link.js
/api/status (GET)Die Mobile App prüft den Server und seine Anmeldeoptionenserver/api/status.js
/.well-known/assetlinks.json, /.well-known/apple-app-site-association (GET)App-Links für Android und iOSserver/api/assetlinks.js, server/api/apple-app-site-association.js

Öffnen Sie /api/:slug/custom-functions, /api/ai-agent, /l/ und die beiden Kanal-Pop-up-Pfade, wenn Sie diese Funktionen von außerhalb Ihres Netzes nutzen. Die Kanal-Pop-up-Pfade werden im Browser der Person geöffnet, die das Konto verbindet; sie können daher eingeschränkt bleiben, wenn nur Personen in Ihrem Netz Kanäle verbinden. Öffnen Sie /api/status und die beiden /.well-known-Dateien nur, wenn Ihre Agenten die MonoChat Mobile App von außerhalb Ihres Netzes nutzen.

Anmeldung über einen Anbieter (OAuth)​

Wenn ein Anmeldeanbieter den Browser zurück zu MonoChat umleitet, ist das eine normale Browser-Anfrage der anmeldenden Person und unterliegt daher derselben Einschränkung wie die Web-App. Halten Sie die Weiterleitungspfade für die Personen erreichbar, die sich auf diese Weise anmelden. Die Pfade sind die redirectPath-Werte in public.oauth.<provider> in den Servereinstellungen (die Standardbeispiele sind /api/oauth/google/redirect, /api/oauth/microsoft/redirect, /api/oauth/facebook/redirect und /api/oauth/apple/redirect). Die Anmeldung mit Apple schickt den Browser per POST zurück (responseMode: form_post), was derselbe Pfad akzeptiert. Für die Mobile App beantwortet der Server außerdem /api/oauth/facebook/mobile, /api/oauth/microsoft/mobile und /auth/oauth-callback/<provider> (server/configs/oauth/mobile.ts).

Wenn Sie die Microsoft-Marketplace-Integration nutzen, empfängt der Pfad in microsoftMarketplace.redirectWebhookPath die Anfrage von Microsoft Marketplace und muss aus dem Internet erreichbar sein (server/configs/microsoft-marketplace/webook.ts).

Die echte Client-IP durch den Proxy weiterreichen​

MonoChat speichert die Client-IP für Sitzungen und Status-Logs. Hinter einem Reverse Proxy oder Load Balancer sieht es die Adresse des Proxys, sofern Sie nicht die echte weiterreichen.

  1. Lassen Sie nginx (oder Ihren Load Balancer) die ursprüngliche Adresse im Header X-Forwarded-For senden, zum Beispiel mit proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;.
  2. Setzen Sie die Umgebungsvariable HTTP_FORWARDED_COUNT auf dem MonoChat-Server auf die Anzahl der Proxys vor der App. Sie wird vom Meteor-Framework gelesen, nicht vom MonoChat-Code, und gehört daher in Ihre Deployment-Einstellungen und nicht in die Settings-JSON.

Ihre Einrichtung prüfen​

  1. Öffnen Sie die Web-App aus einem Netz, das nicht erlaubt ist. Sie muss abgewiesen werden.
  2. Melden Sie sich aus einem erlaubten Netz an und öffnen Sie den Posteingang. Die Nachrichten müssen laden; das beweist, dass der WebSocket-Endpunkt für Sie offen ist.
  3. Senden Sie von außerhalb Ihres Netzes eine Testnachricht an einen verbundenen Kanal und prüfen Sie, dass sie im Posteingang ankommt.
  4. Erstellen Sie einen Zahlungslink für eine kleine Testbestellung, bezahlen Sie ihn und prüfen Sie, dass die Bestellung als bezahlt angezeigt wird.
warnung

Testen Sie die Pfade nach jeder Änderung Ihrer Proxy-Regeln. Ein blockierter Webhook-Pfad löst in MonoChat keinen Fehler aus: Die Nachrichten und Zahlungsbestätigungen kommen einfach nicht mehr an.