Open WebUI 本地 AI 介面

使用 Open WebUI 打造類似 ChatGPT 的本地 AI 介面,支援 Ollama 和 OpenAI 相容 API

專案簡介

Open WebUI 是一個功能豐富的自架 AI 聊天介面,提供類似 ChatGPT 的使用體驗。支援 Ollama、OpenAI 等多種後端,具備使用者管理、對話歷史、RAG 等功能。

GitHub Stars: 123K+

主要功能

  • 美觀介面 - 類似 ChatGPT 的現代化 UI
  • 多模型支援 - Ollama、OpenAI、Anthropic
  • 使用者管理 - 多用戶、權限控制
  • 對話管理 - 歷史記錄、匯出分享
  • RAG 整合 - 上傳文件進行問答
  • 插件系統 - 擴展功能

快速部署

搭配 Ollama

1
2
3
4
5
6
docker run -d -p 3000:8080 \
  --add-host=host.docker.internal:host-gateway \
  -v open-webui:/app/backend/data \
  --name open-webui \
  --restart always \
  ghcr.io/open-webui/open-webui:main

訪問 http://localhost:3000

內建 Ollama

1
2
3
4
5
6
docker run -d -p 3000:8080 \
  --gpus all \
  -v ollama:/root/.ollama \
  -v open-webui:/app/backend/data \
  --name open-webui \
  ghcr.io/open-webui/open-webui:ollama

Docker Compose

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
version: '3.8'
services:
  ollama:
    image: ollama/ollama
    container_name: ollama
    volumes:
      - ollama:/root/.ollama
    ports:
      - "11434:11434"
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu]

  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    container_name: open-webui
    volumes:
      - open-webui:/app/backend/data
    ports:
      - "3000:8080"
    environment:
      - OLLAMA_BASE_URL=http://ollama:11434
    depends_on:
      - ollama

volumes:
  ollama:
  open-webui:

環境變數設定

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
# Ollama 連線
OLLAMA_BASE_URL=http://ollama:11434

# OpenAI 整合
OPENAI_API_BASE_URL=https://api.openai.com/v1
OPENAI_API_KEY=sk-xxx

# 認證設定
WEBUI_AUTH=true
WEBUI_SECRET_KEY=your-secret-key

# 預設模型
DEFAULT_MODELS=llama3.3

# 允許註冊
ENABLE_SIGNUP=false

# 管理員帳號
WEBUI_ADMIN_EMAIL=admin@example.com

功能設定

使用者管理

  1. 設定 → 管理 → 使用者
  2. 新增使用者或調整權限
  3. 設定模型存取限制

RAG 文件問答

  1. 工作區 → 知識庫 → 新增
  2. 上傳 PDF、TXT、Markdown 檔案
  3. 在對話中 # 引用知識庫

自訂模型

建立 Modelfile:

1
2
3
FROM llama3.3
SYSTEM "你是一位專業的資安顧問"
PARAMETER temperature 0.7

在 Open WebUI 中:

  1. 工作區 → 模型 → 新增
  2. 貼上 Modelfile 內容
  3. 儲存並使用

函數呼叫(Tools)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# tools/security_scan.py
class Tools:
    def __init__(self):
        pass

    def scan_url(self, url: str) -> str:
        """
        掃描指定 URL 的安全性
        :param url: 要掃描的網址
        :return: 掃描結果
        """
        # 實作掃描邏輯
        return f"掃描完成:{url}"

反向代理設定

Nginx

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
server {
    listen 443 ssl;
    server_name ai.example.com;

    ssl_certificate /etc/letsencrypt/live/ai.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/ai.example.com/privkey.pem;

    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

Traefik

1
2
3
4
5
labels:
  - "traefik.enable=true"
  - "traefik.http.routers.openwebui.rule=Host(`ai.example.com`)"
  - "traefik.http.routers.openwebui.tls=true"
  - "traefik.http.routers.openwebui.tls.certresolver=letsencrypt"

備份與還原

備份

1
2
3
4
5
# 備份資料
docker run --rm \
  -v open-webui:/data \
  -v $(pwd):/backup \
  alpine tar czf /backup/open-webui-backup.tar.gz /data

還原

1
2
3
4
docker run --rm \
  -v open-webui:/data \
  -v $(pwd):/backup \
  alpine tar xzf /backup/open-webui-backup.tar.gz -C /

相關連結

延伸閱讀

comments powered by Disqus
Built with Hugo
Theme Stack designed by Jimmy