toolkitbox

~/ / AI 文章 / 在 VPS 上跑本機 LLM / 在自己的 VPS 上將 Dify 連接到 Ollama

在自己的 VPS 上將 Dify 連接到 Ollama

Dify 是可以在自己的伺服器上執行、用來打造 AI 應用程式的平台,而模型則由 Ollama 負責執行。本文會在同一台 VPS 上把兩者連接起來:伺服器需要多大、如何啟動 Dify、Ollama 外掛會要求填哪些欄位,以及為什麼在筆電上能用的位址到了 Docker 內部卻可能連不上。文中也會說明文件在哪裡就沒有再說明了,讓你知道哪些部分需要自己測試。

發布: · 約 8 分鐘讀完 · 以上事實已於 2026-10-27 對照官方文件與官方儲存庫確認。Dify 更新很快,請閱讀你所安裝版本的版本說明。

開始之前需要準備什麼

Dify 的自行架設指南列出了 Dify 本身的最低需求。模型還需要另外的記憶體,所以兩個數字要加起來。下方的估算工具會給出模型所需的數字。把它加到 Dify 的最低需求上,是我們自己的經驗法則,並不是 Dify 文件中的說法。

項目Dify 指南的說明
CPUCPU >= 2 Core
記憶體RAM >= 4 GiB
Docker ComposeDify requires Docker Compose 2.24.0 or later.
Git, curl, jq下方的 clone 指令會用到 git、curl 與 jq。

試試看: Local LLM Memory Estimator

模型

Ollama 標籤 qwen3:8b,量化 Q4_K_M,下載大小 5.2 GB。

估算結果

模型權重
4.84 GiB
KV cache
0.56 GiB
保留量
1.00 GiB
合計
6.41 GiB (6.88 GB)
容得下的最小常見記憶體容量
8 GiB

這是估算值。其中不包含執行環境的運算緩衝區,並假設每一層的 KV 形狀都相同。在選擇方案之前,請先量測實際執行的情況。

模型資料確認日期:2026-10-26。

資料來源: Ollama library · 模型設定 (config.json) · Ollama FAQ

所有處理都在你的瀏覽器中進行,不會上傳任何內容。

步驟 1:用 Docker Compose 啟動 Dify

以下是 Dify 自行架設指南中的指令。第一個指令會從 GitHub 下載最新的發行版標籤,讓你從正式發行版開始,而不是從未完成的分支開始。在我們檢查的當下,最新發行版是 1.18.0(發布於 2026-10-23)。

步驟指令
複製最新發行版git clone --branch "$(curl -s https://api.github.com/repos/langgenius/dify/releases/latest | jq -r .tag_name)" https://github.com/langgenius/dify.git
進入 Docker 資料夾cd dify/docker
複製設定檔cp .env.example .env
為 agent 後端建立權杖openssl rand -base64 32
啟動 Difydocker compose up -d

啟動之前,請把 openssl 印出的權杖,以 DIFY_AGENT_LOCAL_SANDBOX_AUTH_TOKEN 的名稱填入 .env。指南中說明,沒有這個權杖,agent 後端與其沙盒就不會啟動。

步驟 2:建立管理員帳號

容器啟動後,指南說明要先開啟管理員初始化頁面:在伺服器上是 http://your_server_ip/install,在自己的電腦上則是 http://localhost/install。請在那裡建立帳號,然後在 http://your_server_ip 登入。

文件沒有說明在帳號建立之前,誰可以連到那個頁面。以下是我們的建議,並非文件中的說法:啟動後立刻建立帳號,並在把 Dify 開放到網際網路之前,先閱讀關於保護伺服器的文章。

步驟 3:新增 Ollama 外掛與模型

依照目前的 Dify 文件,模型供應商是從 Integrations > Model Provider 或 Marketplace 安裝,接著點選供應商卡片上的 Setup。選單名稱會隨版本而改變,所以請在你的版本中找到供應商清單。Ollama 外掛的 Marketplace 頁面(在我們檢查的當下是 1.0.3 版)說明,要先安裝 Ollama、執行模型,並確認它的本機 API 可以運作,然後才新增到 Dify。

以下是外掛的欄位,取自它的 README 與 Marketplace 頁面。

欄位填入的內容
Model NameOllama 的模型,例如 gemma3、qwen3、deepseek-r1 或 gpt-oss。
Base URLOllama 主機的根位址,本機 Ollama 為 http://<your-ollama-host>:11434。請不要加上 /api,因為外掛會自己加上 /api/chat、/api/generate 與 /api/embed。
API Key本機 Ollama 可以不填。只有 Ollama cloud 才必填。
Model TypeChat 用於對話、工具呼叫與視覺。Marketplace 頁面也列出了文字 embedding 與 rerank。
Model Context Length與模型的上下文視窗一致。
Upper bound for max tokensDify 允許的 max tokens(num_predict)的最大值。
Vision support / Function call support只有模型支援時才選 Yes。
Attach Dify app_id as request headers預設為關閉。開啟後,Dify 在呼叫 Ollama 時會加上 X-Dify-App-Id 與 X-Dify-Source 標頭。Ollama 不會使用這些標頭。

想知道哪些模型支援視覺與工具呼叫,請參閱關於 Ollama library 中的模型能做什麼的文章。

步驟 4:在 Docker 內部也能連上的位址

Dify 在容器中執行,而 Ollama 則在伺服器本身執行。在容器裡,localhost 指的是容器自己,而不是伺服器。外掛的 README 說明:請使用 Dify 容器能夠連到的主機位址,例如 http://host.docker.internal:11434 或 LAN 的 IP 位址。

Docker 文件對這個名稱有說明。--add-host 選項支援一個特殊值 host-gateway,會解析成主機的內部 IP 位址,並且習慣上會用 host.docker.internal 作為這個名稱。文件也說明 Docker Desktop 會自動解析這個名稱。文件中的範例是 --add-host host.docker.internal=host-gateway。

我們檢查的項目結果
Dify 的 docker-compose.yaml 有定義 host.docker.internal 嗎?沒有。在 main 分支的該檔案中,我們沒有找到 host.docker.internal,也沒有找到 extra_hosts 項目。
Docker Compose 參考文件有說明 extra_hosts 嗎?有,它是以 HOSTNAME=IP 的形式寫入 /etc/hosts 的主機名稱對應。我們讀到的頁面中,沒有提到 extra_hosts 可以搭配 host-gateway。
Ollama 會在 127.0.0.1 以外的位址監聽嗎?預設不會。Ollama FAQ 指出,它綁定在 127.0.0.1 的 11434 連接埠,而 OLLAMA_HOST 環境變數可以改變綁定的位址。

以下是我們自己的解讀,並非文件中的說法:在 Linux 伺服器上,你需要自己加入主機名稱,或使用伺服器的位址,也可能必須更改 Ollama 監聽的位址。我們沒有測試過這個組合。如果你更改了 OLLAMA_HOST,其他機器就能連到 11434 連接埠,而 Ollama 本身沒有密碼,所以請在防火牆中對外關閉該連接埠。關於安裝 Ollama 以及在它前面放置 nginx 的文章會說明這些設定。

步驟 5:embedding,以及外掛不做的事

外掛的 Marketplace 頁面說明,它支援串流、思考、視覺、工具呼叫與文字 embedding,而且 embedding 向量是 L2-normalized。若要使用 embedding,你要再新增一個類型為文字 embedding 的模型,並使用 Ollama library 中的 embedding 模型。

頁面也列出了不包含的功能。Ollama 沒有原生的 rerank 端點,所以 rerank 模型需要與 OpenAI 相容的 rerank 服務。網路搜尋也沒有內建,需要另外的 Dify 工具外掛或外部的工作流程。

連線失敗時

  • 執行 ollama ps,確認模型已載入,並在伺服器上開啟 http://127.0.0.1:11434,確認 Ollama 有回應。
  • 檢查 Base URL。它是主機的根位址,要有連接埠,而且不要加 /api。
  • 檢查 Dify 容器是否連得到該位址。Dify 文件說明,它對外的請求會經過一個會封鎖內部與私有 IP 範圍的代理伺服器。該頁面提到了 HTTP 節點與圖片下載,並沒有說明模型供應商的請求是否走同一條路徑。如果你使用私有位址而被拒絕,這是可以檢查的地方之一。
  • 用 docker compose logs 讀取容器的日誌。我們在文件中沒有找到錯誤訊息的清單。

讓 Dify 保持在最新版本

指南說明,各發行版的升級步驟會有所不同,所以請依照你要升級到的版本的升級指南操作,該指南位於 Dify 的 Releases 頁面。升級之後,請將 .env.example 與你的 .env 比對,找出新增或變更的變數。如果你修改過 docker-compose.yaml,請把你的修改再套用到新發行版的檔案上,因為新發行版可能會加入必要的服務。

資料來源

接著閱讀