在 Ubuntu 22.04 上架設 Ollama 與 Open WebUI,可以打造一套完全本地運行的私有 ChatGPT 系統:所有對話、模型運算都在自己的主機上完成,不需要 OpenAI API 金鑰,資料也不會被送到任何雲端服務。對企業來說,這代表內部文件、機密資料可以安全地拿來做 AI 應用;對個人來說,則代表不用擔心 API 費用,也不受第三方服務的使用限制。
本篇教學會完整帶你走過整個流程:先在 Ubuntu 上原生安裝 Ollama 作為模型執行引擎,再用 Docker 部署 Open WebUI 圖形化介面,並提供系統需求、模型選擇建議、GPU 加速設定,以及每一步都能自行驗證的檢查方式,確保照著做不會卡關。
系統需求
在開始之前,先確認主機硬體條件是否足夠。Ollama 本身對硬體的要求不高,但實際能流暢運行的模型大小,取決於記憶體容量:
| 項目 | 最低需求 | 建議需求 |
|---|---|---|
| 作業系統 | Ubuntu 22.04 LTS | Ubuntu 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 llama3 | 4.7GB | 8GB 以上 |
| Mistral(7B) | ollama pull mistral | 4.1GB | 8GB 以上 |
| Qwen2.5(7B) | ollama pull qwen2.5 | 4.7GB | 8GB 以上 |
| Phi3(Mini) | ollama pull phi3 | 2.3GB | 4GB 以上(輕量首選) |
如果主機記憶體有限,建議先從 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 ps | open-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(本文指令都已包含)。
