
- Dify.ai là platform open source low-code để build AI app: chatbot, RAG, agent, workflow.
- Self-host trên 1 VPS 8 GB RAM, docker compose 1 lệnh, không phụ thuộc cloud Dify.
- UI kéo thả tạo workflow, knowledge base PDF/Notion, prompt versioning, A/B test built-in.
- Hỗ trợ 30+ LLM providers (OpenAI, Anthropic, Gemini, Ollama, local), unified billing.
- So với LangFlow: ổn định hơn, UI mượt, có user management, sẵn sàng production cho team nội bộ.
PM startup muốn build AI chatbot tư vấn sản phẩm cho website. Yêu cầu: dùng knowledge base nội bộ, trả lời theo style brand, có analytics conversation, deploy được embed widget. Dev không có thời gian code LangChain từ đầu. Cloud SaaS như Voiceflow hay Botpress đắt, lock data. Dify.ai là điểm giao thoa tốt nhất: low-code UI để PM tự build, full feature production, self-host miễn phí.
Bài này hướng dẫn deploy Dify.ai community edition lên VPS, kết nối Claude/GPT/Gemini, tạo knowledge base RAG đầu tiên, build chatbot, embed vào website. Kèm so sánh với LangFlow và Flowise để chọn đúng tool. Tham khảo workflow của vài startup VN đang dùng Dify làm AI gateway nội bộ.
Dify là gì và nó giải quyết gì?
Dify đứng giữa 2 cực:
- Một cực là code thuần (LangChain, LlamaIndex): cực kỳ flexible, cần dev senior, mất tuần để có MVP.
- Cực kia là SaaS no-code (Voiceflow, ChatBase): nhanh nhưng đắt, lock data, không tùy biến sâu.
Dify cho phép: PM/marketer tạo chatbot trong 30 phút mà không code; dev có quyền truy cập API + Python script cho logic phức tạp. Bao gồm:
- Apps: chatbot, completion, agent, workflow, chatflow - mỗi loại template sẵn.
- Knowledge: upload PDF, Markdown, Notion, Confluence, website crawl, tự tạo vector DB.
- Tools: web search, code interpreter, calendar, custom HTTP node.
- Models: manage 30+ LLM provider, central API key, quota per app.
- Logs: mọi conversation lưu chi tiết, export CSV, debug từng step.
- API: mỗi app expose REST API + SDK Python/JS để code app khác gọi.
Yêu cầu VPS
| Quy mô | RAM | vCPU | SSD |
|---|---|---|---|
| Dev / test cá nhân | 4 GB | 2 vCPU | 40 GB |
| Production team 1-3 app, <1000 chat/ngày | 8 GB | 4 vCPU | 80 GB |
| 5-10 app, 5000+ chat/ngày | 16 GB | 6 vCPU | 160 GB |
| + Knowledge base lớn, vector DB local | 16-32 GB | 8 vCPU | 320 GB |
Dify dùng PostgreSQL + Redis + Weaviate/Qdrant cho vector store. Stack 4-5 container, RAM tiêu thụ mạnh khi bật vector DB. AlmaLinux 9 hoặc Ubuntu 24 đều OK.
Cài Dify community edition
# Cài Docker + Compose
curl -fsSL https://get.docker.com | sh
sudo systemctl enable --now docker
# Clone repo
cd /srv
sudo git clone https://github.com/langgenius/dify.git
cd dify/docker
# Copy env mẫu
sudo cp .env.example .env
# Sửa các giá trị quan trọng trong .env
sudo nano .env
Trong file .env, sửa tối thiểu:
SECRET_KEY=GENERATE-32-CHAR-RANDOM
CONSOLE_API_URL=https://dify.your-domain.com
CONSOLE_WEB_URL=https://dify.your-domain.com
SERVICE_API_URL=https://dify.your-domain.com
APP_API_URL=https://dify.your-domain.com
APP_WEB_URL=https://dify.your-domain.com
# Mật khẩu Postgres và Redis - đổi mạnh
DB_PASSWORD=strong-db-password
REDIS_PASSWORD=strong-redis-password
# Init admin password lần đầu
INIT_PASSWORD=initial-admin-password
# Storage type: local (mặc định) hoặc s3
STORAGE_TYPE=local
# Vector DB: weaviate (mặc định), qdrant, milvus, pgvector
VECTOR_STORE=weaviate
Chạy stack:
sudo docker compose up -d
# Đợi 2-3 phút cho images pull và init
# Kiểm tra status
sudo docker compose ps
# Xem log nếu có lỗi
sudo docker compose logs -f api
Đặt Caddy reverse proxy trước port 80 (Dify nginx container expose). File Caddyfile:
dify.your-domain.com {
reverse_proxy 127.0.0.1:80
encode gzip
}
Vào https://dify.your-domain.com, tạo tài khoản admin (email + INIT_PASSWORD đã set ở .env), enter workspace.
Kết nối LLM provider
Sau khi vào dashboard, click Settings -> Model Provider. Add từng provider:
- OpenAI: paste API key, chọn các model muốn enable.
- Anthropic: paste key Claude, chọn Opus/Sonnet/Haiku.
- Google: paste Gemini key.
- Ollama local: nếu chạy Ollama trên cùng VPS, thêm base URL http://host.docker.internal:11434
- OpenRouter / LiteLLM proxy: paste base URL của gateway nội bộ (xem bài LiteLLM).
Set 1 model làm "System Model" - dùng cho task hệ thống như tóm tắt log, generate suggestion. Set 1 model "Embedding" - dùng cho knowledge base RAG (text-embedding-3-small là rẻ + đủ tốt).
Tạo Knowledge Base RAG đầu tiên
Click Knowledge -> Create. Có 3 cách import:
- Upload files: kéo thả PDF, DOCX, Markdown, HTML. Tối đa 15 MB/file (config được).
- Sync website: nhập URL, Dify crawl tự động bằng Jina Reader hoặc Firecrawl.
- Notion/Confluence: OAuth, chọn page/database, sync hằng ngày.
Sau khi upload, Dify chia chunk (mặc định 500 token), embedding, lưu vào vector DB. Test bằng tab "Retrieval Testing" - nhập query, xem chunk nào match top-K. Tinh chỉnh: chunk size, overlap, top-K, similarity threshold, hybrid search BM25 + semantic, rerank model.
Build chatbot app đầu tiên
Click Studio -> Create from Blank -> Chatbot. Đặt tên "Tu van san pham". Trong canvas:
- Set Model: claude-sonnet-4-5, temperature 0.3, max tokens 800.
- Instructions (system prompt): "Bạn là trợ lý tư vấn sản phẩm của brand XYZ. Trả lời ngắn gọn, tiếng Việt, dựa trên knowledge base. Khi không chắc, đề xuất liên hệ hotline."
- Context: chọn knowledge base "Catalog san pham" đã tạo ở bước trước.
- Variables: thêm input "user_name" (string) để personalize.
- Opening statement: "Xin chào! Tôi có thể tư vấn gì cho bạn về sản phẩm của chúng tôi?"
- Suggested questions: list 3-5 câu user hay hỏi.
Click Debug, test chat. Nếu OK, click Publish. Dify cho bạn 3 cách distribute:
- Web App: URL public dạng
https://dify.your-domain.com/chat/abc123với UI chat đầy đủ. - Embed iframe: <iframe> snippet để paste vào website.
- Embed chat bubble: 1 đoạn script JS, thêm vào trước </body>, hiện chat bubble bottom-right.
- API: REST endpoint POST /chat-messages với app key, gọi từ backend.
Workflow nâng cao: agent với tool
Khi cần chatbot thực hiện hành động (gọi API nội bộ, query DB, search web), tạo app loại Workflow. Drag các node:
- Start: input từ user.
- Question Classifier: phân loại intent bằng LLM.
- HTTP Request: gọi API CRM lấy thông tin khách.
- Knowledge Retrieval: truy xuất knowledge base.
- LLM: tổng hợp prompt với context + API response, sinh câu trả lời.
- Answer: return cho user.
Mỗi node có input/output variable, kéo dây nối. Có condition branch (if/else), iteration (lặp qua list), parameter extractor (parse câu user thành JSON). Đủ build agent phức tạp cấp doanh nghiệp mà không code dòng Python nào.
Quản lý team và quota
Dify hỗ trợ multi-user trong 1 workspace với roles: owner, admin, editor, normal. Cấp quyền:
- PM, marketer: editor, được tạo và edit app, dùng knowledge base.
- Dev junior: normal, chỉ chat thử app.
- CTO, owner: admin, config model provider, billing, member.
Set quota theo app hoặc theo user: max conversation/ngày, max token/tháng. Quan trọng khi dùng model đắt (GPT-5/Opus), tránh 1 dev nghịch ngợm cháy budget.
So sánh với LangFlow và Flowise
| Khía cạnh | Dify | LangFlow | Flowise |
|---|---|---|---|
| UI/UX | Mượt, production-grade | Đẹp, theo LangChain | Đơn giản, JS-first |
| User management | Có roles + workspace | Có (Datastax) | Cơ bản |
| Knowledge base built-in | Có, mạnh | Phải tự xây | Có chunker và embed |
| API/SDK | REST + Python/JS SDK | REST | REST |
| Vector DB built-in | Weaviate, Qdrant, Milvus, pgvector | Bring your own | Tự config |
| Backend | Python (Flask) | Python | Node.js |
| Production ready | Cao | Trung bình | Trung bình |
| Community | 40k+ star GitHub | 30k+ star | 30k+ star |
Chọn Dify nếu cần platform team-friendly cho PM/marketer + dev cùng làm. Chọn LangFlow nếu code base bạn đã dùng LangChain. Chọn Flowise nếu stack Node và yêu thích visual programming nhẹ.
Backup và update
- Backup Postgres hằng đêm: dump database
dify, lưu B2/R2. - Backup folder
storage/(file upload knowledge base) - không quá lớn, sync rclone. - Update:
git pull && docker compose pull && docker compose up -d. Đọc release note Dify trước khi upgrade major version. - Snapshot VPS trước update lớn để rollback nhanh.
Bẫy thường gặp
| Triệu chứng | Cách fix |
|---|---|
| Upload file không thành công | Tăng nginx client_max_body_size lên 50m |
| Embedding tốn nhiều thời gian | Chọn provider local Ollama embed hoặc dùng batch nhỏ hơn |
| Chat không nhớ context | Bật memory trong app settings, set memory window 10-20 turns |
| Knowledge retrieval không relevant | Hạ similarity threshold xuống 0.4, tăng top-K 5-8, bật hybrid search |
| Container API restart loop | Hết RAM, xem docker stats, nâng VPS lên 16 GB |
VPS đủ chỗ cho Dify + Weaviate + Postgres + Redis
Cloud VPS TND sẵn AlmaLinux 9, Ubuntu 22/24, Debian 12/13. SSD CEPH, snapshot 1-click, backup hằng ngày, network 200Mbps trong nước. Gói 8GB RAM thoải mái chạy Dify community + vector DB cho team 30 user và 1k chat/ngày.
Xem 8 cấu hình Cloud VPS →FAQ
Dify community vs Dify cloud khác gì?
Community edition là open source, miễn phí, self-host, đủ features cho 95% use case. Cloud edition của Dify là SaaS có thêm: high availability, SLA, audit log nâng cao, SSO enterprise, billing centralized. Self-host khi data sovereignty, ngân sách thấp, hoặc workload không quá cao.
Có thể dùng Dify để build chatbot Zalo/Messenger không?
Có, qua webhook integration. Mỗi Dify app expose REST API, bạn viết 1 service nhỏ nhận webhook từ Zalo OA / Messenger Platform, forward message vào Dify, lấy response trả lại. Thường code 100-200 dòng Python với FastAPI là xong. Đặt service này cùng VPS với Dify cho gọn.
Hỗ trợ tiếng Việt tốt không?
UI có tiếng Việt (chưa hoàn chỉnh 100% nhưng đủ dùng). Knowledge base xử lý PDF tiếng Việt tốt, embedding multilingual của text-embedding-3-small/-large hỗ trợ tốt. Khi đặt system prompt yêu cầu trả lời tiếng Việt, Claude/GPT/Gemini đều trả lời tự nhiên.
Cost ước tính cho 1 chatbot 5000 chat/tháng?
Giả sử mỗi chat 5 turn, input 1k token output 300 token, dùng Claude Sonnet: ~10 USD/tháng LLM. Embedding 100k token cho knowledge base 50 page: ~0.005 USD (text-embedding-3-small). VPS 8GB: ~500k VND/tháng. Tổng dưới 700k VND/tháng cho 1 chatbot khá lớn, rẻ hơn nhiều so với SaaS ChatBase 50+ USD/tháng.
Khi nào nên migrate từ Dify sang code thuần?
Khi logic agent quá phức tạp (10+ branch, state machine), khi cần custom node mà Dify chưa hỗ trợ, khi throughput vượt 100k chat/ngày cần tối ưu sâu, hoặc khi enterprise customer yêu cầu stack thuần Python để audit. Với 80% startup, Dify là điểm dừng đủ tốt, không cần move sang code thuần.
- LiteLLM proxy trên VPS: caching + budget control cho team AI
- Setup browserless self-host trên VPS: headless Chrome cho AI agent
- v0 vs Bolt.new vs Lovable: vibe coder chọn AI app builder nào?
- ComfyUI Stable Diffusion trên VPS GPU: workflow gen ảnh tự động
- AI agent farm: 10 agent Claude song song scrape news Việt Nam
- Setup OpenWebUI + Ollama trên VPS: ChatGPT clone hoàn toàn tự host



