Skip to content

Ollama 本地語言模型服務

Ollama 是開源的大型語言模型(LLM)運行平台,讓同仁能在本地環境中使用各種開源語言模型進行開發、測試與研究。

服務背景

本服務架設於 Justyn 的 Mac Studio 上,目的是對本地部署 LLM 進行更完整的實驗,協助數位巡航等相關業務使用。透過實際部署和測試,我們可以更深入了解本地 LLM 的效能、限制和應用場景,為未來更大規模的部署提供實務經驗。

服務資訊

可用模型

通用語言模型

  • Llama 3.2 - Meta 開發的開源語言模型,適合一般對話和文本生成任務
  • Gemma 3 - Google 開發的輕量級語言模型,效能優異且資源需求較低

專用模型

目前尚未部署專用模型。如有需求,請聯繫管理員。

使用方法

透過 Web UI

  1. 開啟瀏覽器前往 https://ollama.nicsra.moda/
  2. 使用院內信箱進行認證登入
  3. 在介面中選擇欲使用的模型
  4. 開始對話或進行測試

API 金鑰管理

ra-5 群組的成員可以領取 API 金鑰,用於程式化存取 Ollama 服務:

  1. 登入 https://ollama.nicsra.moda/
  2. 點擊右上角頭像,進入「設定」(Settings)
  3. 選擇「帳號」(Account)分頁
  4. 找到「API 金鑰」(API Keys)區塊
  5. 點擊「建立新金鑰」或管理現有金鑰
  6. 妥善保存金鑰,它只會顯示一次

注意

  • API 金鑰具有與您帳號相同的權限
  • 請勿將金鑰分享給他人或提交至版本控制系統
  • 如金鑰外洩,請立即撤銷並建立新的金鑰

API 使用範例

bash
# 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

bash
# 安裝 Ollama
brew install ollama

# 啟動 Ollama 服務(背景執行)
brew services start ollama

# 下載模型
ollama pull llama3.2
ollama pull gemma3

# 確認已安裝的模型
curl http://localhost:11434/api/tags

2. 安裝並設定 Podman

bash
# 安裝 Podman(容器管理工具)
brew install podman
brew install podman-compose

3. 部署 Open WebUI

在部署前,需先完成以下雲端服務設定:

  • Google Cloud Console:建立 OAuth 2.0 用戶端 ID,取得 CLIENT_IDCLIENT_SECRET
  • Tailscale:安裝並設定 Tailscale,啟用 MagicDNS
  • Cloudflare Pages:建立 redirect 頁面
  • Cloudflare DNS:設定 CNAME 記錄

建立 docker-compose.yml

yaml
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 檔案:

bash
GOOGLE_CLIENT_ID=你的_CLIENT_ID
GOOGLE_CLIENT_SECRET=你的_CLIENT_SECRET

啟動/停止服務

bash
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 \
  down

4. 設定網路存取

本服務採用多層網路架構對外提供服務:

  1. Mac Studio 本機

    • Open WebUI 運行於 localhost:3000
    • Ollama 運行於 localhost:11434
  2. Cloudflare Tunnel 設定

    • 安裝 cloudflared:brew install cloudflared
    • 建立並設定 Tunnel 連接本機服務
    • localhost:3000 對應到公開網域
    • 最終對外服務網址:https://ollama.nicsra.moda/
  3. 存取方式

    • 對外網址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)

bash
# 在伺服器上執行
ollama pull <model-name>

# 查看已安裝的模型
ollama list

透過 Web UI 安裝

  1. 登入 https://ollama.nicsra.moda/
  2. 點擊左側選單的「Models」或「模型」
  3. 在搜尋欄中輸入模型名稱(如 llama3.2
  4. 點擊「下載」或「Download」按鈕
  5. 等待模型下載完成即可使用

注意事項

  • 此服務為實驗性質,供同仁進行開發測試與研究使用
  • 請勿將敏感或機密資訊輸入至語言模型中
  • 模型生成的內容僅供參考,請自行判斷正確性
  • 使用時請遵守院方相關資安規範

常見問題

如何選擇適合的模型?

建議先從較小的模型開始測試,確認符合需求後再嘗試更大的模型。

模型回應速度較慢?

可能的原因與解決方式:

  1. 選用的模型過大:嘗試切換到較小的模型(如 9b 或 27b 參數版本)
  2. 伺服器負載過高:避開尖峰時段使用,或等待其他使用者任務完成
  3. 對話歷史過長:開啟新對話可以加快回應速度
  4. 首次載入模型:第一次使用某個模型時需要載入時間,請稍候片刻

如果持續遇到效能問題,請聯繫管理員反映。

如何申請新增模型?

請聯繫管理員,說明需要的模型名稱和使用目的。管理員會評估伺服器資源並協助安裝。

可以上傳檔案嗎?

可以。Open WebUI 支援上傳以下檔案類型:

  • 文件:PDF, Word, Text, Markdown
  • 圖片:支援視覺模型可分析圖片內容
  • 程式碼:各種程式語言的原始碼檔案

上傳後模型可以讀取並分析檔案內容。

對話記錄會被保存嗎?

  • 所有對話記錄儲存在你的個人帳號下
  • 其他使用者無法查看你的對話
  • 管理員基於隱私原則不會查看使用者對話內容
  • 如需刪除對話,可在介面中手動刪除

忘記密碼怎麼辦?

本平台採用 Google SSO 登入,請使用公司 Google 帳號登入即可,無需記憶密碼。

相關資源