Ubuntu 22.04 架設 Ollama + Open WebUI 教學|私有 ChatGPT 完整指南(Docker 部署)

Ubuntu 22.04 架設 Ollama + Open WebUI 教學|私有 ChatGPT 完整指南(Docker 部署)

在 Ubuntu 22.04 上架設 Ollama 與 Open WebUI,可以打造一套完全本地運行的私有 ChatGPT 系統:所有對話、模型運算都在自己的主機上完成,不需要 OpenAI API 金鑰,資料也不會被送到任何雲端服務。對企業來說,這代表內部文件、機密資料可以安全地拿來做 AI 應用;對個人來說,則代表不用擔心 API 費用,也不受第三方服務的使用限制。

本篇教學會完整帶你走過整個流程:先在 Ubuntu 上原生安裝 Ollama 作為模型執行引擎,再用 Docker 部署 Open WebUI 圖形化介面,並提供系統需求、模型選擇建議、GPU 加速設定,以及每一步都能自行驗證的檢查方式,確保照著做不會卡關。

系統需求

在開始之前,先確認主機硬體條件是否足夠。Ollama 本身對硬體的要求不高,但實際能流暢運行的模型大小,取決於記憶體容量:

項目最低需求建議需求
作業系統Ubuntu 22.04 LTSUbuntu 22.04 LTS(保持更新)
記憶體(RAM)8GB(可跑 7B 以下小模型)16GB 以上(可跑 7B~13B 模型)
硬碟空間20GB 可用空間50GB 以上(多個模型並存)
GPU非必要(可用 CPU 運行)NVIDIA GPU(大幅提升生成速度)

簡單來說:純 CPU 也能運行,只是生成速度較慢;如果有 NVIDIA 獨立顯卡,安裝好驅動後 Ollama 會自動偵測並啟用 GPU 加速,體驗會好上許多,設定方式在後面「GPU 加速設定」章節會說明。

第一步:安裝 Ollama

Ollama 是本地 LLM 執行核心工具,負責下載、管理與執行大型語言模型,並對外提供 API。以下示範完整安裝流程、服務啟動確認與 API 驗證。

項目說明
Ollama 功能本地執行 LLM 模型,並提供 API
預設埠11434
執行方式systemd 服務,開機自動啟動
支援模型Llama3 / Mistral / Qwen2.5 / Phi3 等
# 更新系統套件
sudo apt update && sudo apt upgrade -y

# 安裝 Ollama(官方一鍵安裝腳本)
curl -fsSL https://ollama.com/install.sh | sh

# 確認 Ollama 服務狀態(應顯示 active (running))
systemctl status ollama

# 確認 API 是否正常回應
curl http://localhost:11434/api/tags

# 下載並執行模型測試(第一次執行會自動下載模型)
ollama run llama3

安裝腳本執行完成後,Ollama 會自動註冊為 systemd 服務並開機自動啟動,監聽在本機的 11434 埠。ollama run llama3 第一次執行時,會先自動下載 llama3 模型(約 4.7GB),下載完成後會直接進入互動式對話模式,輸入 /bye 即可離開。

模型選擇建議

Ollama 支援多款開源模型,選擇時主要考量記憶體容量與使用情境。以下是幾款常見模型的參考資訊:

模型下載指令大小(約)建議 RAM
Llama 3(8B)ollama pull llama34.7GB8GB 以上
Mistral(7B)ollama pull mistral4.1GB8GB 以上
Qwen2.5(7B)ollama pull qwen2.54.7GB8GB 以上
Phi3(Mini)ollama pull phi32.3GB4GB 以上(輕量首選)

如果主機記憶體有限,建議先從 Phi3 這類輕量模型測試,確認整體環境運作正常後,再視需求下載體積較大、回答品質更好的模型。多個模型可以同時存放,用 ollama list 查看已下載的模型,用 ollama rm <模型名稱> 移除不需要的模型釋放空間。

第二步:用 Docker 部署 Open WebUI

Open WebUI 是 Ollama 的圖形化操作介面,透過瀏覽器就能像使用 ChatGPT 一樣跟本地模型對話,還支援多使用者帳號、對話紀錄、RAG 文件問答等功能。以下說明如何安裝 Docker,並用官方建議的方式部署 Open WebUI。

# 安裝 Docker
sudo apt install docker.io -y

# 設定開機自動啟動並啟動服務
sudo systemctl enable docker
sudo systemctl start docker

# 確認安裝成功
docker --version

方法一:Bridge 模式(官方預設建議,推薦)

這是 Open WebUI 官方文件建議的預設做法,適用於 Ollama 安裝在同一台主機上的情況:

docker run -d \
  -p 3000:8080 \
  --add-host=host.docker.internal:host-gateway \
  -v open-webui:/app/backend/data \
  --name open-webui \
  --restart always \
  ghcr.io/open-webui/open-webui:main

指令說明:-p 3000:8080 把主機的 3000 埠對應到容器內部監聽的 8080 埠,因此完成後在瀏覽器開啟 http://主機IP:3000 即可連上介面;--add-host=host.docker.internal:host-gateway 讓容器內部可以透過 host.docker.internal 這個名稱連回主機,藉此存取執行在主機上的 Ollama(11434 埠),不需要額外指定 OLLAMA_BASE_URL;-v open-webui:/app/backend/data 務必保留,這是資料庫掛載,沒有這行資料會在容器重建後遺失。

方法二:Host Network 模式(適用於 host-gateway 無法解析的環境)

部分較舊版本的 Docker 或特定網路環境,host.docker.internal 可能無法正確解析,這時可以改用 --network=host,讓容器直接共用主機網路:

docker run -d \
  --network=host \
  -e OLLAMA_BASE_URL=http://127.0.0.1:11434 \
  -v open-webui:/app/backend/data \
  --name open-webui \
  --restart always \
  ghcr.io/open-webui/open-webui:main
⚠️ 注意埠號差異:方法二使用 --network=host 時不會做 port mapping,存取埠號會變成容器內部實際監聽的 8080,而不是方法一的 3000。也就是說,方法二完成後要開啟的是 http://主機IP:8080,兩種方法的埠號並不相同,設定時務必對應清楚。

兩種方法擇一即可,一般情況下建議優先採用方法一(Bridge 模式),設定較單純、也是官方文件的預設建議;只有在方法一連線失敗、確認是 host.docker.internal 解析問題時,才需要切換到方法二。

首次登入與帳號建立

容器啟動後,在瀏覽器開啟對應網址(方法一為 http://主機IP:3000,方法二為 http://主機IP:8080),第一次進入會要求建立管理員帳號(Email + 密碼)。這組帳號是 Open WebUI 自己的登入帳號,跟 Ollama 或主機系統帳號無關。建立完成後,左上角切換模型選單應該就能看到先前用 ollama pull 或 ollama run 下載過的模型,選擇模型後即可開始對話。

GPU 加速設定(選用)

如果主機有 NVIDIA 獨立顯卡,建議啟用 GPU 加速,生成速度會明顯提升。步驟如下:

# 確認 NVIDIA 驅動已正確安裝,並能偵測到顯卡
nvidia-smi

# Ollama 原生安裝(非 Docker)預設會自動偵測並使用 NVIDIA GPU,
# 安裝完驅動後不需要額外設定,重新執行 ollama run 即可套用 GPU 加速

由於本教學的 Ollama 是直接原生安裝在 Ubuntu 上(非 Docker 容器),只要 nvidia-smi 能正常顯示顯卡資訊,Ollama 就會自動偵測並使用 GPU,不需要額外設定容器 GPU 直通。若你之後改用容器化方式安裝 Ollama(例如官方 ollama/ollama 映像檔),才需要另外安裝 NVIDIA Container Toolkit,並在 docker run 指令加上 --gpus all 參數。

系統驗證

完成安裝後,建議依序確認以下項目,確保 Ollama 與 Open WebUI 都正常運作、且兩者之間已成功連線。

檢查項目指令正常結果
Ollama 模型列表ollama list顯示已下載的模型清單
Ollama API 測試curl http://localhost:11434/api/tags回傳 JSON 格式的模型清單
Docker 容器狀態docker psopen-webui 容器狀態為 Up
Open WebUI 日誌docker logs open-webui沒有連線錯誤訊息
# 查看已安裝模型
ollama list

# Ollama API 測試
curl http://localhost:11434/api/tags

# 確認容器是否正常運行
docker ps

# 查看 Open WebUI 容器日誌(排查連線問題時很有用)
docker logs open-webui

如果瀏覽器打開 Open WebUI 介面後,選單看不到任何模型,通常代表 Open WebUI 沒有成功連上 Ollama API,這時可以優先看 docker logs open-webui 的輸出,並對照前面「方法一 / 方法二」的埠號與連線方式,確認設定是否對應正確。

常見問題排除

除了 FAQ 列出的項目,這裡整理幾個實務上比較常遇到的狀況:

  • curl http://localhost:11434/api/tags 沒有回應:先確認 systemctl status ollama 是否為 active (running),若服務沒有啟動,執行 sudo systemctl start ollama 後再重試。
  • 模型下載到一半中斷:重新執行 ollama pull <模型名稱> 即可,Ollama 支援續傳,不需要從頭下載。
  • Open WebUI 容器一直重啟:執行 docker logs open-webui 查看錯誤訊息,常見原因是 -v open-webui:/app/backend/data 這個資料庫掛載被誤刪或路徑衝突。
  • 主機重開機後 Open WebUI 連不上:確認 Docker 服務本身是否開機自動啟動(systemctl is-enabled docker),以及容器是否有加上 --restart always(本文指令都已包含)。

FAQ 常見問題

Ollama 安裝完成但無法啟動怎麼辦?
通常是服務未正常啟動或系統狀態異常。可以使用 systemctl restart ollama 重新啟動服務,並透過 systemctl status ollama 確認是否為 active (running)。若仍失敗,建議重新執行官方安裝腳本,確保環境完整。
Open WebUI 無法連接 Ollama API?
最常見原因是容器連不到主機的 127.0.0.1:11434。用 -p 3000:8080 搭配 –add-host=host.docker.internal:host-gateway 是官方建議的預設做法;如果環境不支援 host-gateway,可改用 –network=host 模式,但存取埠號會變成 8080 而非 3000。
Ollama 模型下載速度很慢怎麼辦?
模型下載速度取決於網路環境,可改用較小模型如 mistral 或 phi3 測試。企業環境可使用代理或內網快取提升下載速度,也可以預先使用 ollama pull 下載模型。
用 –network=host 部署時,為什麼要連 8080 而不是 3000?
因為 –network=host 模式下容器直接共用主機網路,不會做 port mapping,這時存取埠號會變成容器內部實際監聽的 8080,而不是 -p 參數指定的 3000。
Ollama 是否支援 GPU 加速?
支援 NVIDIA GPU 自動 CUDA 加速,但需正確安裝 NVIDIA 驅動與 NVIDIA Container Toolkit。若沒有 GPU,仍可正常運行,只是速度較慢,適合測試或輕量使用。
這套系統適合企業使用嗎?
適合,因為 Ollama + Open WebUI 完全在本地運行,不需外部 API,資料不會離開內網。非常適合企業內部 AI 助手、文件查詢與私有聊天系統建置。