Chào ae,
Gần đây phong trào làm AI App, Chatbot riêng để phục vụ công việc hoặc tích hợp vào hệ thống đang rất hot. Nhiều bác chắc đã nghe qua LangChain, Flowise hay LangFlow. Tuy nhiên, nếu muốn một nền tảng All-in-one, ổn định để chạy production thay vì chỉ kéo thả workflow để test, thì Dify hiện đang là cái tên rất đáng thử.
Bài này mình sẽ hướng dẫn chi tiết cách Self-hosted Dify trên server cá nhân (hoặc máy local như Mac Mini/PC) và chia sẻ một số kinh nghiệm khi kết hợp với Local LLM (Ollama) hay n8n.
1. Tại sao nên chọn Dify?
Khác với các công cụ thuần về xây dựng workflow như Flowise, Dify định vị mình là một LLM App Development Platform.
- Backend-as-a-Service: Nó lo hết phần quản lý database, API, log, user session. Bác chỉ cần tập trung vào prompt và logic.
- Hỗ trợ RAG cực mạnh: Upload PDF, Word, Web scraper... Dify tự động chunking và embedding (dùng OpenAI hoặc local model đều được).
- Giao diện người dùng sẵn có: Build xong có ngay Web App đẹp, hoặc nhúng Iframe vào web mình luôn.
- API-first: Cái này dân dev rất thích. Build xong bot, Dify nhả ra API chuẩn chỉnh để tích hợp vào n8n, Telegram, Zalo...
2. Chuẩn bị
Để chạy mượt mà, cấu hình tối thiểu khuyến nghị:
- CPU: 2 Core trở lên.
- RAM: Tối thiểu 4GB (Khuyên dùng 8GB+ nếu chạy kèm Vector DB nặng).
- OS: Linux (Ubuntu/Debian) hoặc macOS (Docker Desktop).
- Phần mềm: Đã cài sẵn Docker và Docker Compose.
Note: Bác nào dùng Mac Mini M4 làm homelab như mình thì chạy cực mượt, không lo vấn đề tương thích vì Docker trên Apple Silicon giờ rất ổn định.
3. Hướng dẫn cài đặt với Docker Compose
Cách nhanh và chuẩn nhất là dùng Docker Compose chính chủ.
Bước 1: Clone source code về máy
Mở terminal và chạy:
git clone https://github.com/langgenius/dify.git
Bước 2: Di chuyển vào thư mục docker
cd dify/docker
Bước 3: Cấu hình biến môi trường
Copy file cấu hình mẫu ra file chính thức:
cp .env.example .env
Tip: Lúc này nếu muốn đổi port (mặc định là 80), anh em mở file
.envlên, tìm dòngEXPOSE_NGINX_PORThoặcNGINX_PORTđể sửa lại (ví dụ: 8080). Đừng quên sửa cảNEXT_PUBLIC_API_BASE_URLnếu chạy trên domain riêng.
Bước 4: Khởi chạy Containers
docker compose up -d
Lần đầu chạy sẽ mất vài phút để pull images (Postgres, Redis, Weaviate, Sandbox, API, Frontend...). Sau khi chạy xong, kiểm tra trạng thái:
docker compose ps
Nếu thấy các container đều Up là ngon.
Bước 5: Truy cập
Mở trình duyệt vào http://localhost (hoặc http://<IP-Server-Của-Bác>).
Tạo tài khoản Admin đầu tiên và đăng nhập.
4. Kinh nghiệm cấu hình & Sử dụng thực tế
Kết nối với Local LLM (Ollama)
Đây là phần nhiều bác vướng nhất. Nếu bác chạy Ollama trên máy host (ví dụ máy Mac đang cài Dify), thì Dify trong Docker sẽ không nhìn thấy Ollama qua localhost.
Cách fix:
- Đảm bảo Ollama lắng nghe ở mọi IP (0.0.0.0) chứ không chỉ localhost.
- Trên Mac:
launchctl setenv OLLAMA_HOST "0.0.0.0"(hoặc dùng app như Ollama GUI để chỉnh). - Trên Linux: Sửa service systemd, thêm
Environment="OLLAMA_HOST=0.0.0.0".
- Trên Mac:
- Trong Dify > Settings > Model Providers > Ollama:
- Base URL:
http://host.docker.internal:11434(Nếu dùng Docker Desktop Mac/Win).[5] - Trên Linux server: Dùng IP LAN của máy, ví dụ
http://192.168.1.10:11434.
- Base URL:
Tích hợp RAG
Dify chia văn bản (chunking) rất thông minh.
- Vào tab Knowledge -> Upload file PDF/Doc.
- Chọn chế độ Automatic hoặc Custom để chỉnh Top K, Score Threshold.
- Lưu ý: Nếu không có tiền mua API OpenAI Embeddings, bác có thể dùng luôn model
nomic-embed-textchạy trên Ollama để làm embedding local, vừa nhanh vừa free.[6]
Tích hợp n8n
Đây là "vũ khí bí mật". Thay vì logic phức tạp trong n8n, bác đẩy hết xử lý ngôn ngữ sang Dify.
- Trong Dify: Vào App -> API Access -> Tạo API Key.
- Trong n8n: Dùng node HTTP Request.
- Method: POST
- URL:
http://<Dify-IP>/v1/chat-messages - Header:
Authorization: Bearer <API-Key-Dify> - Body: Gửi JSON chứa
queryvàinputs.
5. Lưu ý khi vận hành & Update
Dựa trên các issues gần đây trên GitHub [Attached File: langgenius/dify], có vài điểm cần chú ý:
-
Backup trước khi Update:
Cộng đồng phản ánh việc nâng cấp version (ví dụ từ 1.9.1 lên 1.9.2) đôi khi làm lỗi Knowledge Base cũ. Luôn backup thư mụcvolumescủa Docker trước khi pull image mới.Lệnh update chuẩn:
cd dify/docker docker compose down git pull origin main # So sánh file .env hiện tại với .env.example mới để thêm biến thiếu docker compose up -d Lỗi upload file/Image:
Nếu upload file lớn bị lỗi hoặc treo, kiểm tra lại configCLIENT_MAX_BODY_SIZEtrong Nginx của Dify (trong file cấu hình docker) hoặc proxy phía trước nếu bác dùng Cloudflare.Database: Dify dùng PostgreSQL và Vector DB (Weaviate/Qdrant). Nếu chạy production lâu dài, nên cân nhắc tách Database ra server riêng hoặc cấu hình backup định kỳ, tránh mất dữ liệu training bot.
Dify thực sự là một nền tảng mạnh mẽ giúp anh em dev và creator rút ngắn thời gian build AI App từ vài tuần xuống vài giờ. Việc self-host giúp mình làm chủ dữ liệu và tiết kiệm chi phí token đáng kể nếu kết hợp khéo léo với Local Model hoặc với CLIProxyAPI
Anh em có thắc mắc gì về config hay integration cứ comment bên dưới, mình sẽ hỗ trợ giải đáp nhé!

Top comments (0)