Guides
Self-hosted live chat: a practical guide
Behind the “self-hosted live chat” search is one clear demand: a chat widget embedded in your site — with data, cost and customization under your control. This guide offers an actionable evaluation checklist and a path from selection to production. It is vendor-neutral, using IMCore as the worked example.
A seven-point evaluation checklist
Self-hosting is not “install a chat room on a box”. Run every candidate (open source or commercial) through these seven checks — a miss on any one turns into an incident or a rewrite in production:
- Delivery guarantees: ACKs, retries, ordering — “occasionally drops a message” is not acceptable
- Fan-out throughput: measured numbers for broadcast scenarios, not marketing claims
- Agent workspace: queueing, assignment, transfer and human↔AI collaboration are the daily surface
- AI: can it plug into your own model and knowledge base; are answers grounded
- Client SDKs: coverage and customization depth across web widgets and mobile (Flutter / React Native, etc.)
- Deployment footprint: minimum viable single node, and a scale-out path that does not touch clients
- Licensing: open source ≠ free for production; check which capabilities sit behind paid editions
What the three routes really cost
SaaS live chat (Intercom, MeiQia et al.) bills per seat — fast, but the vendor holds both your data and your cost curve. Open-source assembly (Chatwoot-class plus a self-built messaging layer) looks free until you price delivery guarantees and mobile SDKs. Commercial self-hosted engines (IMCore-class) are buyout-oriented and ship the full server plus clients — the line-by-line comparison lives on the comparison pages.
From zero to production
Using IMCore as the example: pull the one-command local stack (PostgreSQL + Redis + server) first and verify messaging plus the agent workbench; then follow the production Compose guide onto a VPS — automatic HTTPS via Caddy, database and Redis never exposed; finally embed the web widget and mint JWTs from your backend. Scaling to a cluster later touches no client code.
Capacity reference: one 4C8G node measured at 10,000 concurrent connections, ~40k fan-out messages per second, p99 153 ms — far beyond the support traffic of most sites.
FAQ
How much do you save versus SaaS?
It depends on seats and horizon: subscriptions scale linearly and never stop; self-hosted buyout is one-time. The rule of thumb: more seats and longer horizons favor self-hosting on total cost of ownership — bring your seat count and horizon and we will run the numbers.
Aren’t open-source options (e.g. Chatwoot) free?
The license may be free, but production costs are not: reliable delivery, mobile SDKs, cluster scaling, moderation and monitoring are either in paid editions or cost your team’s engineering time. Price those in before comparing with a commercial engine — the conclusion often flips.
Do I have to build the web widget myself?
No. IMCore ships a chat bubble + conversation window for the web, plus Web/React and Flutter UIKits for deeper customization; the live demo on this site shows the embedded result.
Keep reading
Head-to-head comparisons
/en/compare/ →Production deployment with Docker Compose
/en/docs/deploy-docker-compose/ →Self-hosting a chat server
/en/docs/self-hosted-chat-server/ →Self-hosted customer service software: why and how to choose
/en/topics/self-hosted-customer-service/ →Self-hosted AI customer service: an on-prem selection guide
/en/topics/self-hosted-ai-customer-service/ →Air-gapped instant messaging: selection and deployment
/en/topics/air-gapped-instant-messaging/ →READY TO OWN THE CONVERSATION?
Bring your workload. We’ll size the architecture.
Share your concurrent connections, daily message volume and deployment environment for a concrete edition and topology recommendation.
We usually reply within one business day