打造公司內部的私有 ChatGPT:Open WebUI+Ollama 地端部署教學
更新日期: · Markdown
在一台有像樣顯示卡的伺服器上裝好 Ollama 和 Open WebUI,團隊就能透過瀏覽器使用一個 ChatGPT 風格的 AI 助理,而且提示詞和文件都不會離開公司網路。 Ollama 負責在伺服器的 GPU 上執行模型;Open WebUI 只要一個 Docker 容器,就補上辦公室需要的功能:使用者帳號、群組與權限、對話紀錄,以及針對公司文件的問答。同事在內部網路打開一個網址就能用;只要使用本地模型、並關掉 Ollama 的雲端模型與 Open WebUI 的網路搜尋,就不會有任何資料送到外部的 AI 服務。一台搭載 24 GB 顯示卡的伺服器,就能讓小團隊使用目前熱門的 27B 到 35B 模型,整套環境一個下午就能架好。以下步驟依據 2026 年 10 月的 Open WebUI(v0.12.0)與 Ollama(v0.40.4)官方文件。
整體架構
- Ollama 裝在伺服器上,把模型載入 GPU。它監聽 11434 埠,預設只接受伺服器本機的連線。
- Open WebUI 以 Docker 容器的形式跑在同一台伺服器上,負責呼叫 Ollama,並在 3000 埠提供網頁介面。使用者、對話紀錄、上傳的檔案等資料,都存在名為
open-webui的 Docker volume 裡。 - 同事在辦公室網路用瀏覽器連線,出差在外則透過 VPN。整套系統不對網際網路開放。
步驟零:估算硬體
決定硬體的有兩件事:你想用的模型,以及同時有多少人在用。
模型。 擬稿、摘要、文件問答這類辦公室工作,用 27B 到 35B 以上的模型效果比較好,而文件問答需要的上下文也比閒聊長。以 16K 上下文計算,GeForce RTX 4090 這類 24 GB 顯示卡可以跑:
| 模型 | 參數量 | 放得下的最佳量化 | 所需記憶體 | tok/s(估) |
|---|---|---|---|---|
| gpt-oss-20b | 21B (3.6B 啟用) | Q8_0 | 22.7 GiB | 135 |
| Qwen3.6-27B | 27B | Q6_K | 23.2 GiB | 30 |
| Gemma 4 31B IT | 30.7B | Q5_K_M | 23.3 GiB | 30 |
| Qwen3.6-35B-A3B | 35B (3B 啟用) | Q4_K_M | 21.6 GiB | 218 |
| Mistral Small 3.2 24B Instruct (2506) | 24B | Q6_K | 22.3 GiB | 33 |
以上為依本站估算方法算出的估計值,資料日期 2026-10-16。實際速度會因執行環境、驅動程式與提示詞長度而不同。
換成 RTX PRO 6000 Blackwell Workstation Edition 這類 96 GB 工作站顯示卡,就能升級到 70B 密集模型和 100B 以上的 MoE 模型:
| 模型 | 參數量 | 放得下的最佳量化 | 所需記憶體 | tok/s(估) |
|---|---|---|---|---|
| Qwen3.6-35B-A3B | 35B (3B 啟用) | Q8_0 | 37.2 GiB | 220 |
| Gemma 4 31B IT | 30.7B | Q8_0 | 33.8 GiB | 36 |
| Llama 3.3 70B Instruct | 70B | Q8_0 | 78.2 GiB | 16 |
| gpt-oss-120b | 117B (5.1B 啟用) | Q6_K | 95.3 GiB | 187 |
| GLM-4.5-Air | 106B (12B 啟用) | Q6_K | 88.8 GiB | 101 |
| Qwen3.5-122B-A10B | 122B (10B 啟用) | Q5_K_M | 85.7 GiB | 130 |
以上為依本站估算方法算出的估計值,資料日期 2026-10-16。實際速度會因執行環境、驅動程式與提示詞長度而不同。
大記憶體的 Mac Studio 則是跑大型 MoE 模型的安靜選擇,請看用 Mac 跑本地 LLM。其他組合可以用「跑得動嗎?」試算,或參考顯示卡選購指南。
同時使用人數。 Ollama 預設一個模型一次只處理一個請求,其餘排隊。調高 OLLAMA_NUM_PARALLEL 可以同時處理多個請求,但 Ollama 文件提醒,所需記憶體會隨「平行請求數 × 上下文長度」增加。幾個人斷斷續續地用,預設值通常就夠;如果很多人在同一時間使用、排隊變成問題,vLLM 這類服務引擎就是為此設計的(請看執行工具比較)。
步驟一:安裝與設定 Ollama
在 Linux 伺服器上,用官方安裝指令安裝 Ollama,它會一併建立 systemd 服務:
curl -fsSL https://ollama.com/install.sh | sh
接著替辦公室伺服器調整幾個設定。打開服務的覆寫設定:
sudo systemctl edit ollama.service
在 [Service] 底下加入:
[Service]
Environment="OLLAMA_NO_CLOUD=1"
Environment="OLLAMA_CONTEXT_LENGTH=16384"
OLLAMA_NO_CLOUD=1 會停用 Ollama 的雲端模型和網路搜尋,確保所有模型都在你的伺服器上執行。明確設定上下文長度則有兩個方向的好處:VRAM 小於 24 GiB 時,Ollama 預設只有 4K token,處理文件太短;VRAM 在 48 GiB 以上時,預設則是 256K,可能預留遠超過你需要的記憶體。套用設定後,下載一個你的 GPU 放得下的模型:
sudo systemctl daemon-reload
sudo systemctl restart ollama
ollama pull qwen3.6:27b
Ollama 的 API 沒有任何驗證機制,所以它預設只監聽 127.0.0.1。請維持這樣,只讓 Open WebUI 和它溝通。
步驟二:用 Docker 啟動 Open WebUI
先在伺服器上安裝 Docker,再產生一組密鑰。Open WebUI 用它來簽發登入憑證;如果重建容器時密鑰改變,所有人都會被登出,所以請設定一次後妥善保存:
openssl rand -hex 32
用官方快速入門的指令啟動 Open WebUI,把 your-secret-key 換成剛剛產生的值:
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 讓介面開在 3000 埠;--add-host 讓容器連得到主機上的 Ollama;-v open-webui:... 把所有資料存在具名 volume,更新時不會遺失;--restart always 讓它在重開機後自動啟動。第一次啟動約需一分鐘,可以追蹤記錄檔,看到 Application startup complete 就完成了:
docker logs -f open-webui
如果 Open WebUI 連不到 Ollama: 在 Linux 上,容器連不到只綁在主機 127.0.0.1 的服務。Open WebUI 的疑難排解頁面提供兩種解法。第一種是讓容器使用主機網路,Ollama 就能維持只對本機開放,介面則改在 8080 埠:
docker run -d --network=host -v open-webui:/app/backend/data -e OLLAMA_BASE_URL=http://127.0.0.1:11434 -e WEBUI_SECRET_KEY=your-secret-key --name open-webui --restart always ghcr.io/open-webui/open-webui:main
第二種是設定 OLLAMA_HOST=0.0.0.0:11434,讓 Ollama 監聽所有網路介面。這麼做的話,請用防火牆擋掉其他電腦對 11434 埠的連線,因為任何連得到這個埠的人,都能不經登入直接使用你的模型。
習慣用 Docker Compose 的話,官方快速入門也有對應的 docker-compose.yml。
步驟三:建立管理員帳號,邀請同事加入
用辦公室網路裡的電腦打開 http://<伺服器位址>:3000。第一個畫面會要你建立管理員帳號:第一個建立的帳號就是管理員,所以請在其他人連得到之前立刻完成。(也可以在第一次啟動前設定 WEBUI_ADMIN_EMAIL 和 WEBUI_ADMIN_PASSWORD,管理員帳號就會自動建立。)
之後註冊功能會自動關閉。要讓同事註冊:
- 點你的頭像 → Settings → Admin → Authentication,開啟 New Sign Ups。
- 新帳號一開始是 Pending(待審核),到 Admin Panel → Users 核准。
- 在 Admin Panel → Users → Groups 建立群組(例如依部門),並在 Default Permissions 設定所有人的基本權限。權限是累加的:使用者會得到所屬各群組權限的聯集。
- 想限制某個模型或知識庫的使用範圍,把它設為 Private,再授予特定群組讀取或編輯權限。
規模較大的組織,Open WebUI 也支援透過 OAuth/OIDC(包含 Google、Microsoft、GitHub)單一登入,以及 LDAP。
步驟四:讓它回答公司文件的問題
Open WebUI 的知識庫功能,能把它變成文件助理:
- 到 Workspace → Knowledge → Create,上傳檔案。
- 對話時輸入
#選擇知識庫,或在 Workspace → Models 把知識庫固定掛到某個模型上。 - 切塊大小等檢索設定,在 Settings → Admin → Documents。
文件會在你的伺服器上切塊並轉成向量。Open WebUI 預設使用一個小型的本地嵌入模型(sentence-transformers/all-MiniLM-L6-v2),也可以改用 Ollama 提供的嵌入模型(RAG_EMBEDDING_ENGINE=ollama);公司文件以中文為主的話,值得實際比較看看。另外,請確認對話模型的上下文長度足以讀完檢索到的段落:Open WebUI 文件指向 Settings → Admin → Models → Advanced Params 裡的個別模型設定,步驟一設定的 Ollama 上下文長度也會生效。
步驟五:資料不外流檢查清單
- 只用本地模型。 維持
OLLAMA_NO_CLOUD=1,除非確定需要,否則不要在 Open WebUI 加入外部 API 連線。 - 關閉網路搜尋。 預設就是關閉(
ENABLE_WEB_SEARCH=False);一旦開啟,搜尋關鍵字會送到外部服務商。 - 離線模式。 嵌入模型下載完成後,設定
OFFLINE_MODE=True,就會停止檢查更新和從 Hugging Face 下載模型。 - 關閉社群分享。
ENABLE_COMMUNITY_SHARING預設為 true,會顯示分享到 Open WebUI 社群的選項;內部工具請設為 false。 - 決定管理員能否看對話。
ENABLE_ADMIN_CHAT_ACCESS預設為 true,也就是管理員可以讀取使用者的對話。若公司政策要求,請把它和ENABLE_ADMIN_EXPORT設為 false;不論怎麼設定,都要讓員工知道。 - 分析追蹤。 官方 Docker 映像檔已預先設定
SCARF_NO_ANALYTICS=true、DO_NOT_TRACK=true、ANONYMIZED_TELEMETRY=false。 - 網路。 Open WebUI 的安全強化指南說明,它是為私有、可信任的網路設計的。不要直接開放到網際網路;遠端同事透過 VPN 連線,並放在支援 HTTPS 的反向代理後面(官方文件有 Nginx 與 Caddy 的設定說明)。
- 靜態資料加密。 正式環境下,Open WebUI 文件建議使用搭配加密儲存的 PostgreSQL;如果沿用預設的 SQLite 資料庫,則把資料目錄放在加密的檔案系統上。
以上設定都可以在 docker run 指令中用 -e 名稱=值 帶入,完整清單請看環境變數說明。
步驟六:備份與更新
Open WebUI 的所有資料都在 open-webui volume 裡。用一個用完即丟的容器備份:
docker run --rm -v open-webui:/data -v $(pwd):/backup alpine tar czf /backup/openwebui-$(date +%Y%m%d).tar.gz /data
更新時,先移除容器(volume 和裡面的資料會保留),拉取新映像檔,再用步驟二的同一行指令重新啟動:
docker rm -f open-webui
docker pull ghcr.io/open-webui/open-webui:main
資料庫遷移只能往前、不能退回,所以更新前一定要先備份。團隊共用的環境,官方文件建議固定使用特定版本標籤(ghcr.io/open-webui/open-webui:vX.Y.Z),有計畫地手動更新,而不是自動更新。Ollama 則是重新執行安裝指令即可更新。
授權:軟體與模型
- Ollama 採用 MIT 授權。
- Open WebUI 採用 Open WebUI License:從 0.6.6 版(2025 年 4 月)起是 BSD-3 加上品牌條款。只要保留「Open WebUI」的名稱與標誌,公司內部不論多少人都能免費使用。移除或更改品牌,只限任一連續 30 天內使用者不超過 50 人的部署、取得書面同意,或擁有企業授權。
- 模型各有自己的授權。多數熱門開源模型允許商用,但請確認你實際部署的那一個:
| 模型 | 開發者 | 授權 | 可商用 |
|---|---|---|---|
| Qwen3.6-27B | Alibaba Qwen | Apache-2.0 | 可以 |
| Qwen3.6-35B-A3B | Alibaba Qwen | Apache-2.0 | 可以 |
| Gemma 4 31B IT | Google DeepMind | Apache-2.0 | 可以 |
| gpt-oss-20b | OpenAI | Apache-2.0 | 可以 |
| gpt-oss-120b | OpenAI | Apache-2.0 | 可以 |
| Mistral Small 3.2 24B Instruct (2506) | Mistral AI | Apache-2.0 | 可以 |
| Llama 3.3 70B Instruct | Meta | Llama 3.3 Community License | 可以 |
| GLM-4.5-Air | Zhipu AI (Z.ai) | MIT | 可以 |
台灣企業與公部門要知道的事
台灣對「地端 AI」的興趣,很大一部分來自資料保護的考量。以下是幾份值得了解的官方文件。本節只是背景整理,不是法律意見;實際義務請與法務或法遵單位確認。
行政院生成式 AI 參考指引
行政院於 2023 年 8 月 31 日院會通過《行政院及所屬機關(構)使用生成式AI參考指引》。其中第三點規定,製作機密文書應由承辦人親自撰寫,禁止使用生成式 AI;第四點規定,不得向生成式 AI 提供公務應保密、個人及未經同意公開的資訊,但也明文保留了地端部署的空間:
「但封閉式地端部署之生成式 AI 模型,須確認系統環境安全性後,方得依機密等級分級使用。」
這份指引適用於行政院及所屬機關,公營事業、公立學校、行政法人與政府捐助的財團法人可以準用;對民間企業來說,則是很好的內部規範參考。另外,行政院 2025 年 2 月 6 日院會決議公務機關原則上全面禁用 DeepSeek 的 AI 服務;公部門單位若考慮在地端使用相關模型,請先向主管單位確認適用範圍。
人工智慧基本法
《人工智慧基本法》於 2025 年 12 月 23 日經立法院三讀通過,2026 年 1 月 14 日公布施行,中央主管機關為國科會。第 4 條把「隱私保護與資料治理」列為基本原則,並要求採用資料最小化原則。對公部門特別相關的是第 19 條:
「政府使用人工智慧執行業務或提供服務,應進行風險評估,規劃風險因應措施。政府應依使用人工智慧之業務性質,訂定使用規範或內控管理機制。」
本文步驟三的群組權限、步驟五的檢查清單,都可以當作訂定內控機制時的技術基礎。
個人資料保護法
員工輸入系統的個人資料,不論 AI 跑在哪裡,都受《個人資料保護法》規範。地端部署可以避免把個資交給第三方 AI 服務,但蒐集、處理、利用與安全維護的義務並不會因此消失。個資法最近一次修正於 2025 年 11 月 11 日公布,其中部分條文的施行日期由行政院另定;未來的主管機關「個人資料保護委員會」目前仍由籌備處運作。
數位發展部的參考手冊
數位發展部發布的《公部門人工智慧應用參考手冊》(V1.0,2026 年 1 月)比較了雲端、地端與混合雲三種部署方式:地端部署的優點是掌控度高、不依賴網際網路、適合嚴格的隱私要求,缺點則是需要硬體投資、自行維運,擴充性也較有限。這和本文的取捨大致相同。
台灣在地模型:TAIDE
國科會「推動臺灣可信任生成式AI發展計畫」(TAIDE)由國家實驗研究院開發,以台灣的語料強化繁體中文能力。目前的模型包括 Gemma-3-TAIDE-12b-Chat-2602(2026 年 2 月)、Llama-3.1-TAIDE-LX-8B-Chat(2025 年 2 月),以及針對台灣法律文本微調的嵌入模型 Embeddinggemma-GTAIDE-300m-2605(2026 年 6 月),後者可以考慮拿來評估文件問答的效果。使用前請注意:
- 模型發布在 Hugging Face 的 taide 組織,需要註冊並同意授權條款才能下載。
- 授權由國研院提供(非專屬、無償),同時也要遵守上游的 Llama 或 Gemma 授權;條款禁止軍事或違法用途,衍生作品需標示修改並註明出處。
- 條款規定只能從國研院或其授權的網站取得模型。Ollama 官方模型庫沒有 TAIDE,社群上傳的版本並非授權來源。
- 官方只提供 safetensors 權重,要在 Ollama 中使用,需要依 Ollama 匯入文件 自行匯入。
常見問題
公司用 Open WebUI 要付費嗎?
公司內部使用不用付費,人數也沒有上限,前提是保留 Open WebUI 的品牌標示。從 0.6.6 版(2025 年 4 月)起,它的授權是 BSD-3 加上品牌條款:只有在任一連續 30 天內使用者不超過 50 人、取得書面同意,或購買企業授權時,才能移除或更改 Open WebUI 的名稱與標誌。官方也說明這份授權並不是 OSI 認可的開源授權。
員工輸入的內容和上傳的文件會傳到公司外面嗎?
只要使用本地模型、並把對外功能關掉,就不會。Ollama 在你的伺服器上執行模型,用 OLLAMA_NO_CLOUD=1 可以停用它的雲端模型。Open WebUI 的網路搜尋預設關閉,請維持關閉;離線模式則會停止檢查更新與下載模型。官方 Docker 映像檔也已經預設關閉分析追蹤。
小團隊要準備什麼等級的硬體?
一台搭載 24 GB 顯示卡的伺服器,就能讓小團隊使用熱門的 27B 到 35B 模型;依本站估算,Qwen3.6-27B 用 Q4_K_M、16K 上下文約需 17.5 GiB。96 GB 的工作站顯示卡或大記憶體的 Mac Studio,則能跑 70B 密集模型或 100B 以上的 MoE 模型。另外要考慮同時使用的人數:每個同時進行的請求都需要自己的上下文記憶體。
管理員看得到員工的對話紀錄嗎?
預設看得到:Open WebUI 的 ENABLE_ADMIN_CHAT_ACCESS 預設為 true。如果公司政策不允許,請把它和 ENABLE_ADMIN_EXPORT 都設為 false,並清楚告知員工實際的政策。這既是技術設定,也是治理決策。
可以讓它回答公司內部文件的問題嗎?
可以。在 Workspace 的 Knowledge 建立知識庫並上傳文件,對話時輸入 # 選擇知識庫,或把知識庫直接掛到某個模型上。Open WebUI 預設用本地的嵌入模型處理文件。記得調高模型的上下文長度,因為 VRAM 小於 24 GiB 時,Ollama 預設只有 4K,會限制模型能讀進多少檢索到的內容。
AI 地端部署就符合個資法了嗎?
有幫助,但不等於自動合規。資料留在自己的硬體上,可以避免把資料交給第三方 AI 服務,但蒐集、處理、利用與安全維護個人資料的義務仍然存在。本文不是法律意見,實際義務請與公司的法務或法遵單位確認。
資料來源
- https://docs.openwebui.com/getting-started/quick-start/
- https://docs.openwebui.com/reference/env-configuration/
- https://docs.openwebui.com/features/authentication-access/rbac/
- https://docs.openwebui.com/features/authentication-access/rbac/groups
- https://docs.openwebui.com/features/authentication-access/auth/sso/
- https://docs.openwebui.com/features/authentication-access/auth/ldap
- https://docs.openwebui.com/features/workspace/knowledge
- https://docs.openwebui.com/features/chat-conversations/rag/
- https://docs.openwebui.com/security/chat-data-privacy-and-encryption
- https://docs.openwebui.com/security/accepted-risks/first-run-bootstrap-window
- https://docs.openwebui.com/getting-started/updating
- https://docs.openwebui.com/reference/https/
- https://docs.openwebui.com/getting-started/advanced-topics/hardening
- https://docs.openwebui.com/troubleshooting/connection-error
- https://docs.openwebui.com/license
- https://github.com/open-webui/open-webui/blob/main/LICENSE
- https://github.com/open-webui/open-webui/blob/main/Dockerfile
- https://github.com/open-webui/open-webui/releases/tag/v0.12.0
- https://docs.ollama.com/linux
- https://docs.ollama.com/faq
- https://docs.ollama.com/context-length
- https://docs.ollama.com/api/authentication
- https://docs.ollama.com/import
- https://law.moj.gov.tw/LawClass/LawAll.aspx?pcode=I0050021
- https://www.pdpc.gov.tw/
- https://law.moj.gov.tw/LawClass/LawAll.aspx?pcode=H0160093
- https://www.nstc.gov.tw/folksonomy/detail/ed981806-1852-4b63-8dfd-9eea04157971?l=ch
- https://www.ey.gov.tw/Page/448DE008087A1971/40c1a925-121d-4b6b-8f40-7e9e1a5401f2
- https://www.ey.gov.tw/File/CAE5B756153299FD?A=C
- https://www.ey.gov.tw/Page/448DE008087A1971/454f1fbd-bbad-4251-882d-0d9c7f537569
- https://moda.gov.tw/digital-affairs/digital-service/ai-resource/18248
- https://taide.stpi.niar.org.tw/
- https://taide.stpi.niar.org.tw/public/download-model
- https://huggingface.co/taide