导出镜像
# 安装一个底层工具
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.9.2
container_name: open-webui
# user: "1000:1000" # 以 UID 1000 运行,会有静态文件写入权限问题,owui需要root运行
restart: unless-stopped
networks:
- ghost_net
volumes:
- ./data/open-webui:/app/backend/data # 核心数据持久化
- ./data/hf_cache:/root/.cache/huggingface # 映射本地 Embedding 模型物理路径
- /etc/localtime:/etc/localtime:ro # 时区同步
environment:
# === 基础安全设置 ===
- TZ=Asia/Shanghai # 容器时区
- WEBUI_AUTH=True # 强制登录认证
- WEBUI_SECRET_KEY=kaicong # Session 加密密钥
- ANONYMOUS_TELEMETRY=False # 禁用匿名遥测
- CHECK_UPDATE=False # 禁用检查更新
- ENABLE_GRAVATAR=False # 禁用第三方头像加载
# === 模型与 RAG 本地化 (核心修改区) ===
- OFFLINE_MODE=True # 全局开启离线模式
- HF_HUB_OFFLINE=1 # 强制禁用 HuggingFace 在线连接
- RAG_EMBEDDING_MODEL=/root/.cache/huggingface/bge-small-zh-v1.5 # 指定本地向量模型路径
- RAG_TOP_K=5 # 检索片段数量
- USE_OLLAMA_DOCKER=False # 不在容器内启动 Ollama
- ENABLE_OLLAMA_API=False # 禁用内网 Ollama 自动探测(防止误连)
# === 联网搜索设置 (基于 SearXNG) ===
- ENABLE_RAG_WEB_SEARCH=True # 开启联网增强功能
- RAG_WEB_SEARCH_ENGINE=searxng # 使用 SearXNG 作为后端
- SEARXNG_QUERY_URL=http://searxng:8080/search?q=<query> # 内网搜索接口
- RAG_WEB_SEARCH_RESULT_COUNT=10 # 搜索抓取条数
- RAG_WEB_SEARCH_CONCURRENT_REQUESTS=15 # 并发搜索请求数
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配置里 模型市场访问开关和仅限本地模型开关