Ollama 本地語言模型服務
Ollama 是開源的大型語言模型(LLM)運行平台,讓同仁能在本地環境中使用各種開源語言模型進行開發、測試與研究。
服務背景
本服務架設於 Justyn 的 Mac Studio 上,目的是對本地部署 LLM 進行更完整的實驗,協助數位巡航等相關業務使用。透過實際部署和測試,我們可以更深入了解本地 LLM 的效能、限制和應用場景,為未來更大規模的部署提供實務經驗。
服務資訊
- 服務網址:https://ollama.nicsra.moda/
- 使用方式:透過 Web UI 介面使用,需使用院內信箱認證
- 官方網站:https://ollama.com/
- 官方 GitHub:https://github.com/ollama/ollama
可用模型
通用語言模型
- Llama 3.2 - Meta 開發的開源語言模型,適合一般對話和文本生成任務
- Gemma 3 - Google 開發的輕量級語言模型,效能優異且資源需求較低
專用模型
目前尚未部署專用模型。如有需求,請聯繫管理員。
使用方法
透過 Web UI
- 開啟瀏覽器前往 https://ollama.nicsra.moda/
- 使用院內信箱進行認證登入
- 在介面中選擇欲使用的模型
- 開始對話或進行測試
API 金鑰管理
ra-5 群組的成員可以領取 API 金鑰,用於程式化存取 Ollama 服務:
- 登入 https://ollama.nicsra.moda/
- 點擊右上角頭像,進入「設定」(Settings)
- 選擇「帳號」(Account)分頁
- 找到「API 金鑰」(API Keys)區塊
- 點擊「建立新金鑰」或管理現有金鑰
- 妥善保存金鑰,它只會顯示一次
注意:
- API 金鑰具有與您帳號相同的權限
- 請勿將金鑰分享給他人或提交至版本控制系統
- 如金鑰外洩,請立即撤銷並建立新的金鑰
API 使用範例:
# 1. 測試不需要認證的端點
curl https://ollama.nicsra.moda/api/config
# 2. 使用 API 金鑰存取需要認證的端點
curl -X GET https://ollama.nicsra.moda/api/models \
-H "Authorization: Bearer YOUR_API_KEY"將 YOUR_API_KEY 替換為您實際取得的 API 金鑰。
安裝部署說明
系統需求
- 作業系統:macOS(本次部署於 Mac Studio)
- 必要套件:Homebrew、Docker Desktop
- 雲端服務:
- Google Cloud(用於 OAuth SSO 認證)
- Tailscale(用於內部網路存取)
- Cloudflare Pages(用於流量轉發)
- Cloudflare DNS(用於域名設定)
安裝步驟
1. 安裝 Ollama
# 安裝 Ollama
brew install ollama
# 啟動 Ollama 服務(背景執行)
brew services start ollama
# 下載模型
ollama pull llama3.2
ollama pull gemma3
# 確認已安裝的模型
curl http://localhost:11434/api/tags2. 安裝並設定 Podman
# 安裝 Podman(容器管理工具)
brew install podman
brew install podman-compose3. 部署 Open WebUI
在部署前,需先完成以下雲端服務設定:
- Google Cloud Console:建立 OAuth 2.0 用戶端 ID,取得
CLIENT_ID和CLIENT_SECRET - Tailscale:安裝並設定 Tailscale,啟用 MagicDNS
- Cloudflare Pages:建立 redirect 頁面
- Cloudflare DNS:設定 CNAME 記錄
建立 docker-compose.yml:
version: '3'
services:
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: open-webui
restart: always
ports:
- "3000:8080"
extra_hosts:
- "host.containers.internal:host-gateway"
volumes:
- open-webui:/app/backend/data
environment:
OLLAMA_BASE_URL: "http://host.containers.internal:11434"
WEBUI_URL: "/"
WEBUI_NAME: "NICS AI Platform"
WEBUI_BANNERS: '[{"id":"welcome","type":"info","title":"歡迎使用","content":"這是 NICS 內部 AI 模型推論平台,請使用公司 Google 帳號登入。有問題請聯絡 Justyn。","dismissible":false,"timestamp":1705214400}]'
ENABLE_OAUTH_SIGNUP: "true"
OAUTH_PROVIDER_NAME: "NICS Google"
OPENID_PROVIDER_URL: "https://accounts.google.com/.well-known/openid-configuration"
OAUTH_CLIENT_ID: "${GOOGLE_CLIENT_ID}"
OAUTH_CLIENT_SECRET: "${GOOGLE_CLIENT_SECRET}"
OAUTH_SCOPES: "openid email profile"
ENABLE_LOGIN_FORM: "false"
DEFAULT_USER_ROLE: "pending"
volumes:
open-webui:
external: true建立環境變數檔案:
在 docker-compose.yml 同目錄下建立 .env 檔案:
GOOGLE_CLIENT_ID=你的_CLIENT_ID
GOOGLE_CLIENT_SECRET=你的_CLIENT_SECRET啟動/停止服務:
podman-compose \
--env-file podman-compose-ollama-open-webui.env \
-f podman-compose-ollama-open-webui.yaml \
up -d
podman-compose \
--env-file podman-compose-ollama-open-webui.env \
-f podman-compose-ollama-open-webui.yaml \
down4. 設定網路存取
本服務採用多層網路架構對外提供服務:
Mac Studio 本機:
- Open WebUI 運行於
localhost:3000 - Ollama 運行於
localhost:11434
- Open WebUI 運行於
Cloudflare Tunnel 設定:
- 安裝 cloudflared:
brew install cloudflared - 建立並設定 Tunnel 連接本機服務
- 將
localhost:3000對應到公開網域 - 最終對外服務網址:
https://ollama.nicsra.moda/
- 安裝 cloudflared:
存取方式:
- 對外網址:
https://ollama.nicsra.moda/ - 所有流量透過 Cloudflare 加密通道傳輸
- 無需在路由器設定 port forwarding
- 對外網址:
認證方式:
- Open WebUI 整合 Google SSO 認證
- 新使用者預設角色為
pending,需管理員核准後才能使用
安全性說明:
- 服務透過 Cloudflare Tunnel 加密通道對外開放
- Google SSO 身份驗證確保僅授權使用者可登入
- 管理員可透過 Open WebUI 後台管理使用者權限
模型管理
新增模型
管理員權限:目前僅 Justyn 和靜芬擁有伺服器管理權限。如需安裝新模型,請聯繫他們。
管理員注意事項:Ollama 下載模型時需要存取 Cloudflare R2,但此服務被院內網路政策禁止且無法申請開通。目前解決方案是透過 Outline VPN 連線後進行模型更新作業。
本地安裝(透過 CLI):
# 在伺服器上執行
ollama pull <model-name>
# 查看已安裝的模型
ollama list透過 Web UI 安裝:
- 登入 https://ollama.nicsra.moda/
- 點擊左側選單的「Models」或「模型」
- 在搜尋欄中輸入模型名稱(如
llama3.2) - 點擊「下載」或「Download」按鈕
- 等待模型下載完成即可使用
注意事項
- 此服務為實驗性質,供同仁進行開發測試與研究使用
- 請勿將敏感或機密資訊輸入至語言模型中
- 模型生成的內容僅供參考,請自行判斷正確性
- 使用時請遵守院方相關資安規範
常見問題
如何選擇適合的模型?
建議先從較小的模型開始測試,確認符合需求後再嘗試更大的模型。
模型回應速度較慢?
可能的原因與解決方式:
- 選用的模型過大:嘗試切換到較小的模型(如 9b 或 27b 參數版本)
- 伺服器負載過高:避開尖峰時段使用,或等待其他使用者任務完成
- 對話歷史過長:開啟新對話可以加快回應速度
- 首次載入模型:第一次使用某個模型時需要載入時間,請稍候片刻
如果持續遇到效能問題,請聯繫管理員反映。
如何申請新增模型?
請聯繫管理員,說明需要的模型名稱和使用目的。管理員會評估伺服器資源並協助安裝。
可以上傳檔案嗎?
可以。Open WebUI 支援上傳以下檔案類型:
- 文件:PDF, Word, Text, Markdown
- 圖片:支援視覺模型可分析圖片內容
- 程式碼:各種程式語言的原始碼檔案
上傳後模型可以讀取並分析檔案內容。
對話記錄會被保存嗎?
- 所有對話記錄儲存在你的個人帳號下
- 其他使用者無法查看你的對話
- 管理員基於隱私原則不會查看使用者對話內容
- 如需刪除對話,可在介面中手動刪除
忘記密碼怎麼辦?
本平台採用 Google SSO 登入,請使用公司 Google 帳號登入即可,無需記憶密碼。