Ga naar hoofdinhoud

Een on-premise installatie beperken op IP-adres

Deze pagina is bedoeld voor beheerders van een on-premise MonoChat-installatie. Ze legt uit hoe u de webapp op netwerkniveau (nginx of een firewall) beperkt tot uw eigen netwerken, zonder de diensten te blokkeren die MonoChat vanaf internet moeten aanroepen.

MonoChat heeft geen eigen IP-toegestanelijst. De beperking staat in uw nginx, load balancer of firewall en geldt voor de hele installatie, niet voor één enkele werkruimte.

Wat u beperkt en wat u open houdt​

Beperkt houden tot uw netwerkenBereikbaar houden vanaf internet
De webapp en alles wat rechts niet wordt genoemdDe webhook- en callbackpaden in de onderstaande tabellen
Het DDP/WebSocket-eindpunt waarmee de webapp verbinding maakt (/websocket)

Beperk de web-UI en het WebSocket-eindpunt samen: de app gebruikt beide. Sta voor iedereen anders alleen de onderstaande paden toe en blokkeer de rest.

Paden die externe diensten aanroepen​

Elk onderstaand pad wordt geregistreerd door de MonoChat-server. Een pad dat uit een instelling is opgebouwd, is de hookPath die u op de server hebt ingesteld (in channelConnectors.<name> of paymentSystemConnectors.<name> in de serverinstellingen); het achtervoegsel wordt door de code toegevoegd. Open alleen de connectors die u gebruikt.

Kanalen​

PadAangeroepen doorGedefinieerd in
<hookPath>/webhooks (POST)omni-message, voor WhatsApp Cloud, WhatsApp Gupshup, Instagram, Messenger, Telegram, TikTok, Twilio SMS en Varan OTPpackages/app-connectors-om2-*/src/webhooks/webhook.ts; hookPath uit channelConnectors.whatsappBusinessVegaCloud, whatsappBusinessVegaGupshup, instagramCastor, messengerRigel, telegramBotRegulus, tikTokTimir, twilioSms, varanOtp
<hookPath>/webhooks, <hookPath>/sessions, <hookPath>/messages (POST)Uw eigen systemen, via het Messages API-kanaalchannelConnectors.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)De SIP-provider (kanalen Generic SIP en Sonitel SIP)channelConnectors.genericSip.hookPath, channelConnectors.sonitelSip.hookPath
/api/facebook/channels/:channelId/flows/:flowId (POST)WhatsApp, voor WhatsApp Flowsserver/api/whatsapp-flow.js

De kanaalproviders (Meta, Telegram, TikTok, Twilio) roepen MonoChat niet rechtstreeks aan. Ze roepen de webhook-listener van omni-message aan, die doorstuurt naar het /webhooks-pad hierboven. Als u omni-message zelf draait, moet de webhook-listener vanaf internet bereikbaar zijn op deze paden: /webhooks/meta-messenger, /webhooks/instagram-business, /webhooks/wab-cloud, /webhooks/wab-gupshup/:channelId, /webhooks/wab-360-dialog/:channelId, /webhooks/telegram-bot/:channelId, /webhooks/tiktok en /webhooks/twilio-sms/:channelId (apps/webhook-listener/src/modules/webhook-listeners/webhook-listeners.controller.ts in omni-message). MonoChat zelf moet vanuit omni-message bereikbaar zijn op de /webhooks-paden hierboven.

Betalingssystemen​

Betalingsproviders roepen een callback aan wanneer een klant betaalt en sturen de klant daarna terug naar MonoChat. Beide moeten van buiten uw netwerk werken.

ConnectorPaden onder de 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
MyFatoorahde hookPath zelf (POST), /:paymentSystemOrderId/:status (POST)
N-Geniusde hookPath zelf (POST), /:paymentSystemOrderId/:status
Paywall/:paymentSystemOrderId/:status
UniqoPayde hookPath zelf (POST), /:paymentSystemOrderId/:status (POST)
VakıfBank Sanal POS/:status (GET en POST)
İş Yerim POSde hookPath zelf (GET en POST)

De eenvoudigste regel is om voor elke betalingsconnector die u gebruikt <hookPath> en alles daaronder te openen. Elke bron is packages/app-connectors-<name>/src/webhook.ts.

Overige serverendpoints​

PadGebruikt voorGedefinieerd in
/api/:slug/custom-functions/… (POST)Een aangepaste functie via HTTP aanroepen met een toegangstokenlib/managers/custom-function-sdk/_/server/endpoint.js
/api/ai-agent/mcp, /api/ai-agent/events (POST)AI-agentruns die terugrapporteren aan MonoChatserver/api/ai-agent.ts
/api/channels-manager/facebook/auth, /api/channels-manager/tiktok/auth (GET)Het pop-upvenster dat terugkeert na het koppelen van een Facebook- of TikTok-accountpackages/app-managers-channel/src/webhook.ts
/l/:_id (GET)Korte links die u naar klanten stuurtserver/api/short-link.js
/api/status (GET)De mobiele app controleert de server en de inlogoptiesserver/api/status.js
/.well-known/assetlinks.json, /.well-known/apple-app-site-association (GET)App-links voor Android en iOSserver/api/assetlinks.js, server/api/apple-app-site-association.js

Open /api/:slug/custom-functions, /api/ai-agent, /l/ en de twee pop-uppaden voor kanalen als u die functies van buiten uw netwerk gebruikt. De pop-uppaden voor kanalen worden geopend in de browser van de persoon die het account koppelt, dus ze kunnen beperkt blijven als alleen mensen op uw netwerk kanalen koppelen. Open /api/status en de twee /.well-known-bestanden alleen als uw medewerkers de MonoChat-mobiele app van buiten uw netwerk gebruiken.

Inloggen met een provider (OAuth)​

Wanneer een inlogprovider de browser terugstuurt naar MonoChat, is die redirect een gewoon browserverzoek van de persoon die inlogt, dus er geldt dezelfde beperking als voor de webapp. Houd de redirectpaden bereikbaar voor de mensen die op deze manier inloggen. De paden zijn de redirectPath-waarden in public.oauth.<provider> in de serverinstellingen (de standaardvoorbeelden zijn /api/oauth/google/redirect, /api/oauth/microsoft/redirect, /api/oauth/facebook/redirect en /api/oauth/apple/redirect). Apple-inloggen stuurt de browser terug met een POST (responseMode: form_post), die hetzelfde pad accepteert. Voor de mobiele app beantwoordt de server ook /api/oauth/facebook/mobile, /api/oauth/microsoft/mobile en /auth/oauth-callback/<provider> (server/configs/oauth/mobile.ts).

Als u de Microsoft Marketplace-integratie gebruikt, ontvangt het pad in microsoftMarketplace.redirectWebhookPath het verzoek van Microsoft Marketplace en moet dat vanaf internet bereikbaar zijn (server/configs/microsoft-marketplace/webook.ts).

Het echte client-IP doorgeven via de proxy​

MonoChat legt het client-IP vast voor sessies en statuslogs. Achter een reverse proxy of load balancer ziet het het adres van de proxy, tenzij u het echte adres doorgeeft.

  1. Laat nginx (of uw load balancer) het oorspronkelijke adres meesturen in de header X-Forwarded-For, bijvoorbeeld met proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;.
  2. Stel de omgevingsvariabele HTTP_FORWARDED_COUNT op de MonoChat-server in op het aantal proxy's vóór de app. Ze wordt gelezen door het Meteor-framework, niet door de MonoChat-code, dus ze hoort in uw deploymentinstellingen en niet in de instellingen-JSON.

Uw configuratie controleren​

  1. Open de webapp vanaf een netwerk dat niet is toegestaan. Dit moet worden geweigerd.
  2. Log in vanaf een toegestaan netwerk en open de inbox. De berichten moeten laden, wat bewijst dat het WebSocket-eindpunt voor u open staat.
  3. Stuur van buiten uw netwerk een testbericht naar een gekoppeld kanaal en controleer of het in de inbox aankomt.
  4. Maak een betaallink voor een kleine testbestelling, betaal deze en controleer of de bestelling als betaald wordt weergegeven.
waarschuwing

Test de paden na elke wijziging aan uw proxyregels. Een geblokkeerd webhookpad geeft in MonoChat geen foutmelding: de berichten en betalingsbevestigingen komen simpelweg niet meer aan.