生活分享

Open WebUI:給本機模型一個像 ChatGPT 的介面

Ollama 裝好之後,對話只留在終端機裡。Open WebUI 官方文件給一行 Docker 指令,把介面開在埠 3000:聊天記錄、多模型並排、上傳文件做 RAG、多人帳號都在裡面。這篇照官方文件走完 Docker 與 pip 兩種安裝、用 OLLAMA_BASE_URL 接上 11434 埠、建立第一個管理員帳號、做知識庫與提示詞範本、備份 volume,最後把 LICENSE 裡那條不能拿掉 Open WebUI 標示的條款照原文說清楚。

更新日期: 閱讀時間約 11 分鐘

插圖:一個瀏覽器視窗裡的對話框,兩條線分別連到一台本機電腦與一朵雲,下方有一個資料匣。
圖片:Mokaair (© Mokaair)

Ollama 把模型跑起來以後,對話只活在終端機的畫面裡:關掉視窗就沒了,也沒辦法把檔案丟進去問、沒辦法換一個模型再問一次同樣的問題。Open WebUI 是一套自己架的網頁介面,官方 README 把它寫成「自架的 平台」,支援 Ollama 與任何 OpenAI 相容 API,一行 Docker 指令就能在瀏覽器裡得到聊天記錄、多模型切換、檔案上傳與多人帳號。

這篇照官方文件走完六件事:用 Docker 或 pip 裝起來、接上本機的 Ollama、建立第一個管理員帳號、把文件放進知識庫、把常用指示存成提示詞範本、更新與備份。最後一節談授權,因為 Open WebUI 的授權條款裡有一條品牌標示條款,人數超過門檻就不能把「Open WebUI」的標示拿掉,自架之前值得先看清楚。介面步驟依官方文件描述,實際畫面以官網當天版本為準。

Open WebUI 是什麼:只有介面,模型要自己接

官方快速開始有一句話講得很直白:Open WebUI 本身沒有任何模型,它是一層介面與工具,模型要從連線設定裡接進來。官網首頁把它定位成自架的 AI 介面,強調可以完全離線執行、裝起來不需要帳號。換句話說,它跟 Ollama 不是二選一,而是疊在 Ollama 上面的那一層。

官方 README 的功能清單很長,對一般使用者最有感的是這幾項:

  • 多模型對話:同一個問題同時送給兩個以上的模型,回答並排顯示,可以當場比較。
  • 本機 RAG:上傳文件後由檢索增強生成回答,支援混合檢索(BM25 加向量)與重新排序,README 逐一列出 9 種向量資料庫。
  • 權限與群組:管理員可以設定角色、群組與細部權限,每個人看到的東西不一樣。
  • 提示詞範本、模型預設、筆記、網頁搜尋、語音與視訊對話、用量統計。

安裝:Docker 一行指令,或 pip 裝進 Python

官方快速開始把 Docker 列為正式支援、也是多數人建議走的方式。文件要你先用 openssl rand -hex 32 產生一組祕鑰填進 WEBUI_SECRET_KEY,再執行下面這一行;它會自動拉映像檔並啟動。

用 Docker 啟動 Open WebUI(官方快速開始) · bash
docker run -d -p 3000:8080 \
  --add-host=host.docker.internal:host-gateway \
  -v open-webui:/app/backend/data \
  -e WEBUI_SECRET_KEY=your-secret-key \
  --name open-webui --restart always \
  ghcr.io/open-webui/open-webui:main

文件對每個旗標都給了一句說明:-p 3000:8080 是把容器內部的 8080 對應到你這台機器的埠 3000,3000 被占用就改左邊那個數字;-v open-webui:/app/backend/data 是對話、使用者與設定存放的 volume,文件寫「絕對不要不帶它執行」;--add-host 讓容器連得到跑在你機器上的 Ollama;WEBUI_SECRET_KEY 沒有固定下來的話,每次重建容器都會換一把新鑰匙,所有人都會被登出。

docker-compose.yml(官方快速開始的 Compose 版本) · yaml
services:
  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    ports:
      - "3000:8080"
    volumes:
      - open-webui:/app/backend/data
    extra_hosts:
      - host.docker.internal:host-gateway
    environment:
      - WEBUI_SECRET_KEY=your-secret-key
    restart: unless-stopped

volumes:
  open-webui:

存成 docker-compose.yml 之後執行 docker compose up -d。文件特別提醒要用 Docker Compose 第二版,也就是中間有空格的 docker compose;舊教學裡帶連字號的 docker-compose 是第一版語法。

不想碰容器,官方也提供 pip 安裝,但要先看 Python 版本:文件寫 Open WebUI 支援 Python 3.11 與 3.12,3.13 還不支援,正式使用建議用最新的 3.11。

用 pip 安裝並啟動(官方快速開始) · bash
pip install open-webui
open-webui serve

pip 這條路啟動後介面在埠 8080,跟 Docker 的 3000 不一樣。文件說用 open-webui serve 啟動時 PORT 環境變數不生效,要換埠得加 --port ,例如 open-webui serve --port 9999。資料位置用 DATA_DIR 指定,環境變數說明頁寫它的預設值是 ./data,上傳檔案、快取與都放在底下。

接上 Ollama:埠 11434 與 OLLAMA_BASE_URL

Ollama 的 API 在埠 11434。官方文件說 Open WebUI 裝好啟動後會自動去找 Ollama:從 Docker 裡找的是 host.docker.internal 的 11434 埠,上面那個 --add-host 就是為了這件事;用 pip 跑則是 localhost 的 11434 埠。接上之後,在頭像選單的 Settings → Admin → Connections 裡可以看到 Manage Ollama API Connections 這一區,身為管理員,在新對話的模型選單直接打模型名稱、確認下載,就會叫 Ollama 去拉。

Ollama 跑在另一台機器上,就用 OLLAMA_BASE_URL 指過去。環境變數說明頁寫它的預設值是 localhost 的 11434 埠,在 Docker 裡的預設值改成 host.docker.internal 的同一個埠。文件也提醒:Open WebUI 在 Docker 裡、Ollama 在主機上時,Ollama 那邊要監聽 0.0.0.0,模型清單才不會是空的。

連到另一台機器上的 Ollama(官方快速開始) · bash
docker run -d -p 3000:8080 \
  -e OLLAMA_BASE_URL=https://example.com \
  -v open-webui:/app/backend/data \
  -e WEBUI_SECRET_KEY=your-secret-key \
  --name open-webui --restart always \
  ghcr.io/open-webui/open-webui:main

API 服務商的模型走另一條路:同一頁的 Manage OpenAI API Connections 按加號,填服務商的網址與金鑰後存檔,模型就會自動列出來。文件說 Open WebUI 是協定導向的,只實作 OpenAI Chat Completions 這類通用協定,不替個別服務商寫專用模組;有些服務商沒有 /models 端點,加連線時驗證會失敗,但對話仍然可用,只要手動把模型代號加進 Model IDs 允許清單。反過來,Open WebUI 自己也對外開一個 OpenAI 相容端點 /api/chat/completions,金鑰在 Settings → Account 產生,可以讓其他程式接進來。

架構圖:瀏覽器連到 Open WebUI,Open WebUI 再連到本機 Ollama 與 OpenAI 相容 API,資料存在 volume。
由左往右看:瀏覽器只跟 Open WebUI 說話,模型都是 Open WebUI 從連線設定接進來的,資料留在下方那個 volume 裡。 · 圖片:Mokaair (© Mokaair)
閱讀完整文字說明

由左往右的架構圖。最左邊是瀏覽器,介面開在埠 3000,使用者在這裡聊天、上傳檔案、比較模型;左下角另有一塊說明第一次登入:第一個帳號就是管理員,之後註冊自動關閉,新帳號預設是 pending 待核准。中間是 Open WebUI 本身,容器內部埠是 8080,裡面包含聊天記錄與多模型並排、知識庫與 RAG 檢索、提示詞範本與模型預設、使用者與權限 admin、user、pending 四個部分。右邊是模型來源:上方是本機 Ollama,API 在埠 11434,另一台機器用 OLLAMA_BASE_URL 指過去;下方是 OpenAI 相容 API,填網址與金鑰,服務商沒有 models 端點時手動加模型代號。中間往下連到資料 volume,路徑是 open-webui 冒號斜線 app 斜線 backend 斜線 data,對話、使用者、設定與上傳檔案都存在這裡。左下說明更新只換映像檔、volume 留著,更新前先把 volume 打包備份;右下說明授權:50 人以上不可移除 Open WebUI 標示,門檻算的是任一連續 30 天內可直接使用的人數。

第一次登入:第一個帳號就是管理員

瀏覽器打開埠 3000,第一個畫面寫著 Get started with Open WebUI,按下 Create Admin Account。官方文件講得很清楚:第一個帳號就是管理員,管使用者也管全站設定,而這組帳號跟其他資料一樣留在你自己的 volume 裡。管理員密碼弄丟會鎖住全站設定,文件另外有一頁講怎麼重設,先把密碼記好比較省事。

  1. 開瀏覽器到埠 3000,等到容器日誌出現 Application startup complete。
  2. 在第一個畫面按 Create Admin Account,填 email 與密碼。
  3. 到 Settings → Admin → Connections 確認 Ollama 連線,或加一條 OpenAI 相容連線。
  4. 要讓別人加入,到 Settings → Admin → Authentication 打開 New Sign Ups。
  5. 新帳號會停在 Pending,回 Admin Panel 的 Users 頁核准。

Open WebUI 定義三種系統角色:admin 是超級使用者,預設繞過大部分權限檢查;user 是一般成員,能做什麼完全看全域預設權限與群組給了什麼;pending 是新註冊的預設狀態,在管理員核准前什麼都看不到、什麼都不能做。新帳號拿到哪一種由 DEFAULT_USER_ROLE 決定,文件寫預設值就是 pending,對開放給別人用的站台來說這是建議值。角色一改,那個帳號的連線會馬上被切斷。

把文件丟進去:知識庫、# 指令與引用

Open WebUI 的文件功能分兩種用法。臨時問一份檔案,直接把它拖進對話框;會重複用到的就建成知識庫:側邊欄點 Workspace,選 Knowledge,按 Create 取名字與說明,然後上傳檔案。之後在任何對話裡打一個井字號,就能從跳出來的清單挑知識庫或單一檔案;也可以到 Workspace → Models → Edit 把知識庫綁死在某個模型上,用那個模型時不必每次重挑。

附件有兩種檢索模式,點一下已附加的項目就能切換。預設是 Focused Retrieval,用檢索增強生成只撈出跟問題相關的片段,適合大量文件;Full Context 則是把整份文件一字不漏塞進每一次訊息,適合短的參考文件或風格指南。模型預設裡還有一個 Citations 開關,文件寫它預設開啟,回答會把知識庫、網頁搜尋與內建工具找到的來源列出來。

提示詞範本與模型預設:把重複的指示存起來

同一段指示打第三次就該存起來。到 Workspace → Prompts 按 Create,填名稱、斜線指令(例如 /summarize)與提示詞內容,之後在任何對話打那個斜線指令就整段帶入。提示詞裡可以放變數:{{CURRENT_DATE}}、{{USER_NAME}} 這類系統變數在執行時自動代換;自訂變數則會在送出前跳出一張表單,欄位可以是文字、下拉選單、日期或數字,非技術的同事也能用。每次修改都會留版本,可以比對也可以退回舊版。

Workspace → Models 是更上一層:挑一個基礎模型,綁上系統提示詞、知識庫、工具與參數,存成一個預設,等於一個專用助理。文件提醒系統提示詞是指示不是保證,模型聽不聽話跟基礎模型、服務商的對話樣板與整段上下文都有關;同一份提示詞在別的模型上照樣有效,就不是提示詞格式的問題。

Open WebUI 常用功能的設定位置,依官方文件整理;介面以官網當天版本為準,2026 年 9 月查證。
功能在哪裡設定備註
連 OllamaSettings → Admin → Connections預設自動偵測 11434 埠;另一台機器用 OLLAMA_BASE_URL 指過去
連 OpenAI 相容 API同上,Manage OpenAI API Connections填網址與金鑰;沒有 /models 端點的服務商要手動加 Model IDs
開放註冊Settings → Admin → Authentication管理員建好後自動關閉;新帳號預設角色 pending
核准與調整角色Admin Panel → Users三種角色:admin、user、pending
知識庫Workspace → Knowledge上傳後在對話打井字號引用,可綁到模型;預設 Focused Retrieval
提示詞範本Workspace → Prompts存成斜線指令,支援系統變數與表單欄位,有版本記錄
模型預設Workspace → Models綁系統提示詞、知識庫、工具與參數,可設定誰能用
多模型並排模型選單的 Compare權限在 Admin Panel → Users → Groups 裡開關
備份與還原主機上的 open-webui volume官方更新指南給了 tar 打包與還原指令

更新與備份:資料不在容器裡

官方更新指南第一句話就是重點:你的資料(對話、使用者、設定、上傳的檔案)在 volume 或資料庫裡,不在容器裡,更新就是把容器換成新的映像檔,資料原封不動。手動更新是三步:docker rm -f 砍掉容器、docker pull 拉新映像檔、再用原來那一行把容器跑起來。用 Compose 就是 docker compose pull 加 docker compose up -d,pip 版本是 pip install -U open-webui 再重新 open-webui serve。

更新前先備份。官方更新指南給的做法是開一個臨時的 alpine 容器,把整個 volume 打包成 tar.gz:

備份 open-webui volume(官方更新指南) · bash
docker run --rm -v open-webui:/data -v $(pwd):/backup \
  alpine tar czf /backup/openwebui-$(date +%Y%m%d).tar.gz /data

文件建議每次更新前備份一次,平常也照使用頻率定期備份。還原是先停掉容器,清空 volume 再解開備份檔,所以還原指令會刪掉 volume 裡的東西,執行前要確認拿的是對的檔案。另外文件提醒資料庫遷移是單向的:升級跑過遷移之後,把容器換回舊版本並不會把資料庫改回去,舊版本不一定讀得懂新的結構,那時候只能靠更新前的備份。想要穩定一點,就別用會一直往前滾的 main 標籤,改釘一個版本號。

授權:可以自由改,但別把 Open WebUI 的標示拿掉

Open WebUI 的 LICENSE 檔名稱就叫 Open WebUI License。前三條是 BSD 三條款的標準文字:原始碼散布要保留著作權聲明、二進位散布也要在文件裡附上、不得用著作權人或貢獻者的名義為衍生產品背書。真正要看的是第四條。

第四條寫明,作為本授權所授予權利的實質條件,被授權人嚴格禁止更動、移除、遮蔽或替換任何 Open WebUI 的品牌標示,包含名稱、標誌,以及任何可辨識這套軟體與其介面的視覺、文字或象徵性識別,除非符合三種情況之一:在任一連續 30 天內,可直接使用這套應用的自然人總數不超過 50 人;事先取得著作權人的書面許可;或取得明確允許修改標示的企業授權。不符合又把標示拿掉,條款直接寫成重大違約。

官方授權說明頁補上時間線與退路:這條品牌條款從 v0.6.6 開始生效,日期是 2025 年 4 月 19 日;v0.6.5 以前併入的程式碼仍然是 BSD-3-Clause,想要完全沒有限制的人可以從 v0.6.5 分支出去自己走。說明頁也直接寫了門檻的另一面:50 人以下的自架內部部署,要完全換成自己的品牌是可以的。一般人在家裡或小團隊自架,照原樣用就不會踩到這條。

  • 生活分享

    Claude Code、Codex 搭本機模型:兩種接法怎麼選

    Claude Code 與 Codex 搭配本機模型有兩種接法:代理照常連雲端、把大量雜務交給腳本或 MCP 工具去問本機模型,或是把代理的模型整個換成本機模型。這篇用資料能不能出門、上下文開得夠不夠長、工作的類型三個問題幫你選,並對照 Ollama、LM Studio、Anthropic 與 OpenAI 的官方文件,分清楚本機權重、Ollama 的 cloud 標籤與供應商端點是三種不同的東西。

  • 生活分享

    把本機模型包成 MCP 工具,Claude Code 與 Codex 共用一支伺服器

    用官方 Python SDK 寫一支 stdio 的 MCP 伺服器,把本機的 Ollama 模型包成工具,Claude Code 與 Codex 就能共用:工具只收 inbox 底下的路徑,只回分類結果與結果檔路徑,不回信件原文。文中列出兩邊的登記指令、逾時與輸出上限的官方預設值,以及換成別家本機模型只改環境變數 LOCAL_MODEL 的做法,步驟都來自官方文件。

  • 生活分享

    把 Claude Code、Codex 整個換成本機模型:Ollama 與 LM Studio 設定與還原

    Ollama、LM Studio 與 Codex 的文件寫了把 Claude Code、Codex 整個換成本機模型的接法:Ollama 用 ollama launch 一行指令或手動設定,LM Studio 先開本機伺服器再設環境變數或加 --oss。這篇把四種組合的指令、兩家文件建議的上下文長度、Claude Code 用 /status 確認連到誰的方法,以及用完怎麼還原整理在一起;需要先裝好 Ollama 或 LM Studio,並且已有 Claude Code 或 Codex。

  • 生活分享

    Claude Code、Codex 搭本機模型的注意事項:開工前的檢查清單

    Claude Code 或 Codex 搭本機模型之前,先照一張表逐項核對:代理讀不讀得到原始檔、現在連的是誰、標籤是不是 :cloud、上下文實際開多長、逾時與輸出量、怎麼驗收。每一項寫怎麼檢查,並指出詳見同組哪一篇,另外收進供應商端點、條款與授權、繁體中文用字檢查;檢查方法取自 Anthropic、OpenAI、Ollama 與 DeepSeek 的官方文件。

最新旅遊情報攻略

資料來源

生活分享