# 打造公司內部的私有 ChatGPT：Open WebUI＋Ollama 地端部署教學

> 地端世界 · https://onpremworld.com/zh-tw/guides/private-chatgpt-open-webui · 更新日期: 2026-10-14 · CC BY 4.0

**在一台有像樣顯示卡的伺服器上裝好 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](https://onpremworld.com/zh-tw/hardware/rtx-4090.md) 這類 24 GB 顯示卡可以跑：

| 模型 | 參數量 | 放得下的最佳量化 | 所需記憶體 | tok/s（估） |
|---|---:|---|---:|---:|
| [gpt-oss-20b](https://onpremworld.com/zh-tw/models/gpt-oss-20b.md) | 21B (3.6B 啟用) | Q8_0 | 22.7 GiB | 135 |
| [Qwen3.6-27B](https://onpremworld.com/zh-tw/models/qwen3.6-27b.md) | 27B | Q6_K | 23.2 GiB | 30 |
| [Gemma 4 31B IT](https://onpremworld.com/zh-tw/models/gemma-4-31b.md) | 30.7B | Q5_K_M | 23.3 GiB | 30 |
| [Qwen3.6-35B-A3B](https://onpremworld.com/zh-tw/models/qwen3.6-35b-a3b.md) | 35B (3B 啟用) | Q4_K_M | 21.6 GiB | 218 |
| [Mistral Small 3.2 24B Instruct (2506)](https://onpremworld.com/zh-tw/models/mistral-small-3.2-24b.md) | 24B | Q6_K | 22.3 GiB | 33 |

*以上為依本站[估算方法](https://onpremworld.com/zh-tw/methodology.md)算出的估計值，資料日期 2026-10-16。實際速度會因執行環境、驅動程式與提示詞長度而不同。*

換成 [RTX PRO 6000 Blackwell Workstation Edition](https://onpremworld.com/zh-tw/hardware/nvidia-rtx-pro-6000-blackwell.md) 這類 96 GB 工作站顯示卡，就能升級到 70B 密集模型和 100B 以上的 MoE 模型：

| 模型 | 參數量 | 放得下的最佳量化 | 所需記憶體 | tok/s（估） |
|---|---:|---|---:|---:|
| [Qwen3.6-35B-A3B](https://onpremworld.com/zh-tw/models/qwen3.6-35b-a3b.md) | 35B (3B 啟用) | Q8_0 | 37.2 GiB | 220 |
| [Gemma 4 31B IT](https://onpremworld.com/zh-tw/models/gemma-4-31b.md) | 30.7B | Q8_0 | 33.8 GiB | 36 |
| [Llama 3.3 70B Instruct](https://onpremworld.com/zh-tw/models/llama-3.3-70b.md) | 70B | Q8_0 | 78.2 GiB | 16 |
| [gpt-oss-120b](https://onpremworld.com/zh-tw/models/gpt-oss-120b.md) | 117B (5.1B 啟用) | Q6_K | 95.3 GiB | 187 |
| [GLM-4.5-Air](https://onpremworld.com/zh-tw/models/glm-4.5-air.md) | 106B (12B 啟用) | Q6_K | 88.8 GiB | 101 |
| [Qwen3.5-122B-A10B](https://onpremworld.com/zh-tw/models/qwen3.5-122b-a10b.md) | 122B (10B 啟用) | Q5_K_M | 85.7 GiB | 130 |

*以上為依本站[估算方法](https://onpremworld.com/zh-tw/methodology.md)算出的估計值，資料日期 2026-10-16。實際速度會因執行環境、驅動程式與提示詞長度而不同。*

大記憶體的 Mac Studio 則是跑大型 MoE 模型的安靜選擇，請看[用 Mac 跑本地 LLM](https://onpremworld.com/zh-tw/guides/mac-local-llm.md)。其他組合可以用[「跑得動嗎？」試算](https://onpremworld.com/zh-tw/can-i-run.md)，或參考[顯示卡選購指南](https://onpremworld.com/zh-tw/guides/choosing-a-gpu.md)。

**同時使用人數。** Ollama 預設一個模型一次只處理一個請求，其餘排隊。調高 `OLLAMA_NUM_PARALLEL` 可以同時處理多個請求，但 Ollama 文件提醒，所需記憶體會隨「平行請求數 × 上下文長度」增加。幾個人斷斷續續地用，預設值通常就夠；如果很多人在同一時間使用、排隊變成問題，vLLM 這類服務引擎就是為此設計的（請看[執行工具比較](https://onpremworld.com/zh-tw/guides/ollama-vs-lm-studio-vs-llama-cpp-vs-vllm.md)）。

## 步驟一：安裝與設定 Ollama

在 Linux 伺服器上，用官方安裝指令安裝 Ollama，它會一併建立 systemd 服務：

```bash
curl -fsSL https://ollama.com/install.sh | sh
```

接著替辦公室伺服器調整幾個設定。打開服務的覆寫設定：

```bash
sudo systemctl edit ollama.service
```

在 `[Service]` 底下加入：

```ini
[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 放得下的模型：

```bash
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 用它來簽發登入憑證；如果重建容器時密鑰改變，所有人都會被登出，所以請設定一次後妥善保存：

```bash
openssl rand -hex 32
```

用官方快速入門的指令啟動 Open WebUI，把 `your-secret-key` 換成剛剛產生的值：

```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` 讓介面開在 3000 埠；`--add-host` 讓容器連得到主機上的 Ollama；`-v open-webui:...` 把所有資料存在具名 volume，更新時不會遺失；`--restart always` 讓它在重開機後自動啟動。第一次啟動約需一分鐘，可以追蹤記錄檔，看到 `Application startup complete` 就完成了：

```bash
docker logs -f open-webui
```

**如果 Open WebUI 連不到 Ollama：** 在 Linux 上，容器連不到只綁在主機 `127.0.0.1` 的服務。Open WebUI 的疑難排解頁面提供兩種解法。第一種是讓容器使用主機網路，Ollama 就能維持只對本機開放，介面則改在 8080 埠：

```bash
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 的話，[官方快速入門](https://docs.openwebui.com/getting-started/quick-start/)也有對應的 `docker-compose.yml`。

## 步驟三：建立管理員帳號，邀請同事加入

用辦公室網路裡的電腦打開 `http://<伺服器位址>:3000`。第一個畫面會要你**建立管理員帳號**：第一個建立的帳號就是管理員，所以請在其他人連得到之前立刻完成。（也可以在第一次啟動前設定 `WEBUI_ADMIN_EMAIL` 和 `WEBUI_ADMIN_PASSWORD`，管理員帳號就會自動建立。）

之後註冊功能會自動關閉。要讓同事註冊：

1. 點你的頭像 → **Settings** → **Admin** → **Authentication**，開啟 **New Sign Ups**。
2. 新帳號一開始是 **Pending**（待審核），到 **Admin Panel** → **Users** 核准。
3. 在 **Admin Panel** → **Users** → **Groups** 建立群組（例如依部門），並在 **Default Permissions** 設定所有人的基本權限。權限是累加的：使用者會得到所屬各群組權限的聯集。
4. 想限制某個模型或知識庫的使用範圍，把它設為 **Private**，再授予特定群組讀取或編輯權限。

規模較大的組織，Open WebUI 也支援透過 OAuth／OIDC（包含 Google、Microsoft、GitHub）單一登入，以及 LDAP。

## 步驟四：讓它回答公司文件的問題

Open WebUI 的知識庫功能，能把它變成文件助理：

1. 到 **Workspace** → **Knowledge** → **Create**，上傳檔案。
2. 對話時輸入 `#` 選擇知識庫，或在 **Workspace** → **Models** 把知識庫固定掛到某個模型上。
3. 切塊大小等檢索設定，在 **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 名稱=值` 帶入，完整清單請看[環境變數說明](https://docs.openwebui.com/reference/env-configuration/)。

## 步驟六：備份與更新

Open WebUI 的所有資料都在 `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 和裡面的資料會保留），拉取新映像檔，再用步驟二的同一行指令重新啟動：

```bash
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](https://onpremworld.com/zh-tw/models/qwen3.6-27b.md) | Alibaba Qwen | Apache-2.0 | 可以 |
| [Qwen3.6-35B-A3B](https://onpremworld.com/zh-tw/models/qwen3.6-35b-a3b.md) | Alibaba Qwen | Apache-2.0 | 可以 |
| [Gemma 4 31B IT](https://onpremworld.com/zh-tw/models/gemma-4-31b.md) | Google DeepMind | Apache-2.0 | 可以 |
| [gpt-oss-20b](https://onpremworld.com/zh-tw/models/gpt-oss-20b.md) | OpenAI | Apache-2.0 | 可以 |
| [gpt-oss-120b](https://onpremworld.com/zh-tw/models/gpt-oss-120b.md) | OpenAI | Apache-2.0 | 可以 |
| [Mistral Small 3.2 24B Instruct (2506)](https://onpremworld.com/zh-tw/models/mistral-small-3.2-24b.md) | Mistral AI | Apache-2.0 | 可以 |
| [Llama 3.3 70B Instruct](https://onpremworld.com/zh-tw/models/llama-3.3-70b.md) | Meta | Llama 3.3 Community License | 可以 |
| [GLM-4.5-Air](https://onpremworld.com/zh-tw/models/glm-4.5-air.md) | 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 組織](https://huggingface.co/taide)，需要註冊並同意授權條款才能下載。
- 授權由國研院提供（非專屬、無償），同時也要遵守上游的 Llama 或 Gemma 授權；條款禁止軍事或違法用途，衍生作品需標示修改並註明出處。
- 條款規定只能從國研院或其授權的網站取得模型。Ollama 官方模型庫沒有 TAIDE，社群上傳的版本並非授權來源。
- 官方只提供 safetensors 權重，要在 Ollama 中使用，需要依 [Ollama 匯入文件](https://docs.ollama.com/import) 自行匯入。

## 常見問題

### 公司用 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
