导出镜像
# 安装一个底层工具
yum install skopeo -y
# 拉取指定平台amd64或arm64的镜像
skopeo copy --override-os linux --override-arch amd64 \
docker://ghcr.io/open-webui/open-webui:0.8.10 \
docker-archive:open-webui-0.8.10_amd64.tar:ghcr.io/open-webui/open-webui:0.8.10
# 二次压缩
gzip open-webui-0.8.10_amd64.tar
# 本地加载docker镜像
docker load -i open-webui-0.8.10_amd64.tar.gz
docker-compose.yml
- 预备目录:mkdir -p /www/open-webui/data/open-webui
services:
open-webui:
image: ghcr.io/open-webui/open-webui:0.8.12 # github源根本拉不动
container_name: open-webui
environment:
# --- 基础与 API 设置 ---
- TZ=Asia/Shanghai
- WEBUI_AUTH=True
- WEBUI_SECRET_KEY=kaicong # session加盐
# - OPENAI_API_BASE_URL=http://192.168.1.120:1234/v1
# - OPENAI_API_KEY=sk-lm-G69sckC7
- USE_OLLAMA_DOCKER=False
- ENABLE_OLLAMA_API=False
# --- 联网搜索 ---
- ENABLE_RAG_WEB_SEARCH=True
- RAG_WEB_SEARCH_ENGINE=searxng
- SEARXNG_QUERY_URL=http://searxng:8080/search?q=<query>
- RAG_WEB_SEARCH_RESULT_COUNT=10
- RAG_WEB_SEARCH_CONCURRENT_REQUESTS=15
# --- 语音与 RAG 本地化设置 ---
- HF_HUB_OFFLINE=1 # 不下载模型
- OFFLINE_MODE=True # 离线模型
# --- RAG & Embedding ---
- RAG_EMBEDDING_MODEL=/root/.cache/huggingface/bge-small-zh-v1.5
- RAG_TOP_K=5
volumes:
- ./data/open-webui:/app/backend/data
- ./data/hf_cache:/root/.cache/huggingface # 关键:映射模型缓存目录
- /etc/localtime:/etc/localtime:ro
networks:
- ghost_net
restart: unless-stopped
networks:
ghost_net:
external: true # 声明使用已存在的外部网络
语音和Rag小模型本地化
# 1. 安装工具: huggingface_hub 1.8.0(新版),CLI 已改名 hf
sudo dnf install python3-pip -y
pip3 install -U huggingface_hub
# 2. 设置国内镜像加速(Oracle 连海外通常快,但用镜像更稳)
# export HF_ENDPOINT=https://hf-mirror.com
# RAG 嵌入模型(bge-small-zh-v1.5)
hf download BAAI/bge-small-zh-v1.5 --local-dir /www/open-webui/data/hf_cache/bge-small-zh-v1.5
# OpenWebUI 优先加载 safetensors,你可以删除其他框架的权重文件
cd /www/open-webui/data/hf_cache/bge-small-zh-v1.5;rm pytorch_model.bin
# 4. 开启rag和语音
设置 - 文档 - 绕过绕过嵌入和检索 勾选,重建索引
语音输入小模型
# 语音识别模型(whisper-base)
- HF_HUB_OFFLINE=0 # 临时打开
- OFFLINE_MODE=False
通过界面操作,语音模型下载后,再关闭网络
- HF_HUB_OFFLINE=1
- OFFLINE_MODE=ture
失败~~~~~~~~放弃
conf.d/open-webui.conf
server {
listen 80;
server_name chat.atibm.com;
# 强制跳转 HTTPS
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name chat.atibm.com ;
# ==================== SSL 证书配置 ====================
ssl_certificate /etc/letsencrypt/live/ghost.atibm.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ghost.atibm.com/privkey.pem;
# SSL 安全优化(标准配置)
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
# ==================== 日志 ====================
access_log /var/log/nginx/chat-access.log main;
error_log /var/log/nginx/chat-error.log;
# 上传文件大小限制
client_max_body_size 100M;
location / {
proxy_pass http://open-webui:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# WebSocket + 流式输出
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_cache off;
proxy_buffering off;
proxy_read_timeout 300s;
}
}
后续管理
- 添加用户
- 模型权限设为全员可用
- 添加更多的openai,以及模型前缀便于识别不同来源
- yml配置里 模型市场访问开关和仅限本地模型开关