- 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:
- Embed chat bubble: 1 đoạn script JS, thêm vào trước


