~/ / 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 指南的說明 |
|---|---|
| CPU | CPU >= 2 Core |
| 記憶體 | RAM >= 4 GiB |
| Docker Compose | Dify requires Docker Compose 2.24.0 or later. |
| Git, curl, jq | 下方的 clone 指令會用到 git、curl 與 jq。 |
試試看: Local LLM Memory Estimator
估算結果
- 模型權重
- 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 |
| 啟動 Dify | docker 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 Name | Ollama 的模型,例如 gemma3、qwen3、deepseek-r1 或 gpt-oss。 |
| Base URL | Ollama 主機的根位址,本機 Ollama 為 http://<your-ollama-host>:11434。請不要加上 /api,因為外掛會自己加上 /api/chat、/api/generate 與 /api/embed。 |
| API Key | 本機 Ollama 可以不填。只有 Ollama cloud 才必填。 |
| Model Type | Chat 用於對話、工具呼叫與視覺。Marketplace 頁面也列出了文字 embedding 與 rerank。 |
| Model Context Length | 與模型的上下文視窗一致。 |
| Upper bound for max tokens | Dify 允許的 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,請把你的修改再套用到新發行版的檔案上,因為新發行版可能會加入必要的服務。
資料來源
- Dify documentation: Deploy with Docker Compose
- Dify documentation: Model providers
- Dify documentation: Environment variables
- Dify official plugins: Ollama plugin README
- Dify Marketplace: Ollama plugin
- Dify repository: docker-compose.yaml
- Docker documentation: docker container run (--add-host)
- Docker documentation: Compose services (extra_hosts)
- Ollama documentation: FAQ
接著閱讀
- 不買昂貴電腦也能跑本機 LLM:使用 VPS 的新手入門指南沒有高效能電腦?租一台 VPS,從瀏覽器執行小型本機 LLM:從估算記憶體到受保護的聊天畫面共六個步驟,並誠實說明其限制。
- 在 Ollama 前面放 nginx:基本驗證、HTTPS 與串流設定從外部安全地連到 Ollama:以 nginx 作為代理、基本驗證、HTTPS、串流與逾時設定,以及防火牆規則,內容皆出自官方文件。
- 在 VPS 上用 Docker 執行 Open WebUI,並連接 Ollama在自己的伺服器上用 Docker 執行 Open WebUI 並連接 Ollama:指令、第一個帳號、兩種連線類型與更新方式。
- 在自己的程式中呼叫本機模型:Ollama 的結構化輸出與 OpenAI-compatible API用 JSON Schema 限制本機模型的輸出,並從 OpenAI 風格的用戶端呼叫 Ollama:官方文件怎麼說,以及哪些功能不支援。