toolkitbox

~/ / Bài viết về AI / LLM cục bộ trên VPS / Kết nối Dify với Ollama trên VPS của riêng bạn

Kết nối Dify với Ollama trên VPS của riêng bạn

Dify là nền tảng để xây dựng ứng dụng AI mà bạn có thể tự chạy trên máy chủ của mình. Ollama chạy mô hình. Bài viết này nối hai thứ đó trên cùng một VPS: máy chủ cần lớn đến mức nào, khởi động Dify ra sao, plugin Ollama yêu cầu những trường nào, và vì sao địa chỉ chạy được trên laptop lại có thể thất bại bên trong Docker. Bài cũng nói rõ tài liệu dừng ở đâu, để bạn biết phần nào cần tự thử.

Đăng: · 7 phút đọc · Các thông tin đã được đối chiếu với tài liệu và kho mã chính thức vào ngày 2026-10-27. Dify thay đổi nhanh, vì vậy hãy đọc ghi chú phát hành của phiên bản bạn cài.

Bạn cần gì trước khi bắt đầu

Hướng dẫn tự lưu trữ (self-hosting) của Dify nêu mức tối thiểu cho riêng Dify. Mô hình còn cần bộ nhớ riêng cộng thêm vào đó, nên phải cộng hai con số lại. Công cụ ước tính bên dưới cho ra một con số cho mô hình. Việc cộng nó vào mức tối thiểu của Dify là quy tắc kinh nghiệm của chúng tôi, không phải phát biểu trong tài liệu của Dify.

MụcHướng dẫn của Dify nói gì
CPUCPU >= 2 Core
Bộ nhớRAM >= 4 GiB
Docker ComposeDify yêu cầu Docker Compose 2.24.0 trở lên.
Git, curl, jqLệnh clone bên dưới dùng git, curl và jq.

Dùng thử: Local LLM Memory Estimator

Mô hình

Tag Ollama qwen3:8b, lượng tử hóa Q4_K_M, dung lượng tải xuống 5.2 GB.

Ước tính

Trọng số mô hình
4.84 GiB
KV cache
0.56 GiB
Dự trữ
1.00 GiB
Tổng
6.41 GiB (6.88 GB)
Dung lượng bộ nhớ phổ biến nhỏ nhất chứa vừa
8 GiB

Đây là một ước tính. Nó không bao gồm các bộ đệm tính toán của runtime, và giả định mọi lớp có cùng hình dạng KV. Hãy đo một lần chạy thật trước khi chọn gói.

Dữ liệu mô hình được kiểm tra ngày 2026-10-26.

Nguồn: Ollama library · Cấu hình mô hình (config.json) · Ollama FAQ

Mọi thứ chạy trong trình duyệt của bạn. Không có gì được tải lên.

Bước 1: khởi động Dify bằng Docker Compose

Đây là các lệnh trong hướng dẫn tự lưu trữ của Dify. Lệnh đầu tiên tải về thẻ (tag) của bản phát hành mới nhất từ GitHub, nhờ đó bạn bắt đầu từ một bản phát hành chứ không phải từ một nhánh chưa hoàn thiện. Vào thời điểm chúng tôi kiểm tra, bản phát hành mới nhất là 1.18.0 (xuất bản ngày 2026-10-23).

BướcLệnh
Clone bản phát hành mới nhấtgit clone --branch "$(curl -s https://api.github.com/repos/langgenius/dify/releases/latest | jq -r .tag_name)" https://github.com/langgenius/dify.git
Chuyển vào thư mục Dockercd dify/docker
Sao chép tệp cài đặtcp .env.example .env
Tạo token cho backend của agentopenssl rand -base64 32
Khởi động Difydocker compose up -d

Hãy đặt token mà openssl in ra vào .env dưới tên DIFY_AGENT_LOCAL_SANDBOX_AUTH_TOKEN trước khi khởi động. Hướng dẫn nói rằng backend của agent và sandbox của nó sẽ không khởi động nếu thiếu token này.

Bước 2: tạo tài khoản quản trị viên

Sau khi các container đã chạy, hướng dẫn nói hãy mở trang khởi tạo quản trị viên trước: http://your_server_ip/install trên máy chủ, hoặc http://localhost/install trên máy tính của bạn. Hãy tạo tài khoản ở đó, rồi đăng nhập tại http://your_server_ip.

Tài liệu không nói ai có thể truy cập trang đó trước khi tài khoản được tạo. Khuyến nghị của chúng tôi, không phải phát biểu trong tài liệu: hãy tạo tài khoản ngay sau khi khởi động, và đọc bài về cách bảo vệ máy chủ trước khi để Dify mở ra internet.

Bước 3: thêm plugin Ollama và mô hình

Trong tài liệu hiện tại của Dify, các nhà cung cấp mô hình được cài từ Integrations > Model Provider hoặc từ Marketplace, rồi bạn nhấp Setup trên thẻ của nhà cung cấp đó. Tên menu thay đổi giữa các phiên bản, vì vậy hãy tìm danh sách nhà cung cấp trong phiên bản của bạn. Trang Marketplace của plugin Ollama (phiên bản 1.0.3 vào thời điểm chúng tôi kiểm tra) nói rằng hãy cài Ollama, chạy một mô hình và xác nhận API cục bộ của nó hoạt động trước khi thêm vào Dify.

Đây là các trường của plugin, lấy từ README và trang Marketplace của nó.

TrườngCần nhập gì
Model NameMô hình Ollama, ví dụ gemma3, qwen3, deepseek-r1 hoặc gpt-oss.
Base URLGốc của máy chủ Ollama, http://<your-ollama-host>:11434 với Ollama cục bộ. Đừng thêm /api, vì plugin tự thêm /api/chat, /api/generate và /api/embed.
API KeyKhông bắt buộc với Ollama cục bộ. Chỉ bắt buộc với Ollama cloud.
Model TypeChat cho trò chuyện, gọi công cụ (tool calling) và thị giác (vision). Trang Marketplace còn liệt kê text embedding và rerank.
Model Context LengthKhớp với cửa sổ ngữ cảnh của mô hình.
Upper bound for max tokensGiá trị lớn nhất của max tokens (num_predict) mà Dify cho phép.
Vision support / Function call supportChỉ chọn Yes với mô hình có hỗ trợ.
Attach Dify app_id as request headersMặc định tắt. Khi bật, Dify thêm các header X-Dify-App-Id và X-Dify-Source vào các lời gọi tới Ollama. Ollama không dùng chúng.

Để biết mô hình nào hỗ trợ vision và tool calling, hãy xem bài về những gì các mô hình trong thư viện Ollama làm được.

Bước 4: địa chỉ dùng được từ bên trong Docker

Dify chạy trong các container, còn Ollama chạy trên chính máy chủ. Bên trong một container, localhost là chính container đó, không phải máy chủ. README của plugin nói: hãy dùng địa chỉ máy chủ mà container Dify có thể truy cập, chẳng hạn http://host.docker.internal:11434 hoặc một địa chỉ IP LAN.

Tài liệu Docker giải thích cái tên này. Tùy chọn --add-host hỗ trợ một giá trị đặc biệt, host-gateway, phân giải thành địa chỉ IP nội bộ của máy chủ, và theo thông lệ người ta dùng host.docker.internal cho tên đó. Tài liệu cũng nói rằng Docker Desktop tự động phân giải tên này. Ví dụ trong tài liệu là --add-host host.docker.internal=host-gateway.

Chúng tôi đã kiểm tra gìKết quả
docker-compose.yaml của Dify có định nghĩa host.docker.internal không?Không. Chúng tôi không tìm thấy host.docker.internal và cũng không thấy mục extra_hosts nào trong tệp ở nhánh main.
Tài liệu tham chiếu Docker Compose có mô tả extra_hosts không?Có, dưới dạng ánh xạ tên máy theo dạng HOSTNAME=IP được ghi vào /etc/hosts. Trang chúng tôi đọc không nhắc đến host-gateway cho extra_hosts.
Ollama có lắng nghe trên các địa chỉ khác ngoài 127.0.0.1 không?Mặc định thì không. FAQ của Ollama nói nó gắn vào 127.0.0.1 cổng 11434, và biến môi trường OLLAMA_HOST thay đổi địa chỉ gắn này.

Cách hiểu của chúng tôi, không phải phát biểu trong tài liệu: trên máy chủ Linux, bạn tự thêm tên máy, hoặc dùng địa chỉ của máy chủ, và có thể còn phải đổi địa chỉ mà Ollama lắng nghe. Chúng tôi chưa thử cách kết hợp này. Nếu bạn đổi OLLAMA_HOST, cổng 11434 có thể được truy cập từ các máy khác, mà Ollama không có mật khẩu riêng, vì vậy hãy đóng cổng đó với bên ngoài trong tường lửa. Các bài về cài đặt Ollama và về đặt nginx phía trước nó mô tả các thiết lập này.

Bước 5: embedding, và những gì plugin không làm

Trang Marketplace của plugin nói rằng nó hỗ trợ streaming, thinking, vision, tool calling và text embedding, và các vector embedding được L2-normalized. Với embedding, bạn thêm mô hình thứ hai thuộc loại text embedding, dùng một mô hình embedding từ thư viện Ollama.

Trang đó cũng liệt kê những gì không có. Ollama không có endpoint rerank gốc, nên mô hình rerank cần một dịch vụ rerank tương thích OpenAI. Tìm kiếm web cũng không đi kèm. Nó cần một plugin công cụ riêng của Dify hoặc một workflow bên ngoài.

Nếu kết nối thất bại

  • Chạy ollama ps và kiểm tra mô hình đã được nạp chưa, rồi mở http://127.0.0.1:11434 trên máy chủ để xem Ollama có phản hồi không.
  • Kiểm tra Base URL. Đó là gốc của máy chủ, có cổng và không có /api.
  • Kiểm tra xem các container Dify có truy cập được địa chỉ đó không. Tài liệu Dify nói rằng các yêu cầu đi ra của nó được định tuyến qua một proxy chặn các dải IP nội bộ và riêng tư. Trang đó nêu các node HTTP và việc tải ảnh, và không nói liệu các yêu cầu của nhà cung cấp mô hình có đi cùng đường đó hay không. Nếu bạn dùng địa chỉ riêng và bị từ chối, đây là một chỗ để xem xét.
  • Đọc nhật ký của các container bằng docker compose logs. Chúng tôi không tìm thấy danh sách thông báo lỗi trong tài liệu.

Cập nhật Dify thường xuyên

Hướng dẫn nói rằng các bước nâng cấp khác nhau giữa các bản phát hành, vì vậy hãy làm theo hướng dẫn nâng cấp của phiên bản bạn chuyển tới, có trên trang Dify Releases. Sau khi nâng cấp, hãy so sánh .env.example với .env của bạn để tìm biến mới hoặc biến đã thay đổi. Nếu bạn đã sửa docker-compose.yaml, hãy áp dụng lại các thay đổi của bạn vào tệp của bản phát hành mới, vì một bản phát hành có thể thêm các dịch vụ bắt buộc.

Nguồn

Đọc tiếp