My side project needed a support chatbot. The SaaS options all have the same business model: free tier that's useless, then a cliff. Chatbase wanted $99/month for the message volume I needed. Intercom wanted more than my rent (proportionally).
Instead I spent one Saturday afternoon self-hosting Dify — the open-source LLM app platform (75K+ GitHub stars). Total ongoing cost: $0, running on the same $6 VPS I already had. Three weeks in production now. Here's the real comparison.
SaaS chatbot vs self-hosted Dify
| Chatbase ($99/mo) | Dify (self-hosted) | |
|---|---|---|
| Monthly cost | $99 | $0 (+ $6 VPS I already paid) |
| Message cap | 10,000/mo | Whatever your server handles |
| Model choice | Their picks | Any: GPT, Claude, local Ollama models |
| Your data | Their servers | Your server |
| Embed widget | Yes | Yes (drop-in JS snippet) |
| RAG on your docs | Yes | Yes (upload PDF/MD/Notion) |
The whole install
git clone https://github.com/langgenius/dify.git
cd dify/docker
cp .env.example .env
docker compose up -d
# 9 containers: web, api, worker, db, redis, weaviate, nginx...
# Admin panel on http://localhost:80 — done. ~6 minutes.
Then in the UI: create "Knowledge" → upload my 47 help docs → create a "Chatbot" app → connect knowledge → paste one <script> tag into my site. The RAG pipeline (chunking, embedding, retrieval) is all built in. No LangChain glue code, no vector DB setup — it ships Weaviate.
The part that surprised me: I pointed Dify at a local Ollama model (qwen2.5:7b) for draft answers instead of OpenAI. Embedding + inference fully local = the chatbot costs literally $0 in API fees.
Three weeks of production numbers
- Conversations handled: 1,847
- Resolved without human: 71% (measured by "no follow-up within 24h")
- Median first response: 1.9s (local 7B model on a modest GPU box; with GPT-4o-mini it's 0.8s)
- API fees: $0 (fully local) — would have been ~$14 at GPT-4o-mini rates, still not $99
- RAM usage: ~4.5GB for the whole Dify stack on the VPS
Where Dify loses (be honest with yourself)
- You're the SRE now. When the VPS disk filled up at 2am (Weaviate indexes grow), that was my problem. Chatbase never pages me.
- Analytics are weaker. SaaS tools have nicer dashboards for deflection rates. I export logs and analyze in a notebook.
- Scaling past one box means you actually need to know Docker networking. The docker-compose setup is single-host.
- The UI has quirks — version upgrades occasionally need
docker compose down && git pulland a prayer.
If you're processing payments or have compliance needs, pay the $99 and sleep. For a side project, the SaaS premium is mostly paying for someone else's uptime anxiety.
The take
The chatbot SaaS market is a margin machine built on open-source plumbing you can run yourself. Dify + Ollama covers maybe 80% of what these services sell, and the remaining 20% is convenience, not capability.
While setting it up I used MonkeyCode — a free, open-source AI coding assistant — to write the small glue pieces: the nginx reverse-proxy config, the log-export script, and a healthcheck cron. That combo (Dify for the bot, MonkeyCode for the code around it) is my current zero-budget stack.
Would you self-host your customer-facing bot, or is 2am disk-full duty a dealbreaker? What's your line for "just pay the SaaS"?
Top comments (0)