Ubuntu使用docker安装Open WebUI:修订间差异
跳转到导航
跳转到搜索
无编辑摘要 |
无编辑摘要 |
||
| (未显示同一用户的6个中间版本) | |||
| 第1行: | 第1行: | ||
=== 1. 确保Docker和Docker Compose已安装 === | === 1. 确保Docker和Docker Compose已安装 === | ||
| 第23行: | 第20行: | ||
这个 ~/openwebui目录就是未来迁移时需要整体打包的目录。 | 这个 ~/openwebui目录就是未来迁移时需要整体打包的目录。 | ||
== | === 3. 创建docker-compose.yml === | ||
使用以下命令创建配置文件: | 使用以下命令创建配置文件: | ||
| 第37行: | 第34行: | ||
<source lang="bash"> | <source lang="bash"> | ||
services: | services: | ||
open-webui: | open-webui: | ||
| 第46行: | 第40行: | ||
restart: unless-stopped | restart: unless-stopped | ||
ports: | ports: | ||
- " | - "3000:8080" #服务器端口:docker内端口 | ||
volumes: | volumes: | ||
- ./data:/app/backend/data | - ./data:/app/backend/data | ||
| 第59行: | 第53行: | ||
# - OPENAI_API_KEY=sk-你的密钥 | # - OPENAI_API_KEY=sk-你的密钥 | ||
# 1. 核心(必填) | |||
##- WEBUI_SECRET_KEY=你的强密钥 | |||
##- OLLAMA_BASE_URL=http://你的OllamaIP:11434 | |||
# 2. 生产安全(强烈推荐) | |||
- CORS_ALLOW_ORIGIN=https://xxx.xxx.com | |||
# 3. 网络抓取兼容(强烈推荐) | |||
- USER_AGENT=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 | |||
# 4. Hugging Face 加速(可选) | |||
##- HF_TOKEN=hf_你的实际Token | |||
# 可选:如果你不想注册登录,开启单用户模式 | # 可选:如果你不想注册登录,开启单用户模式 | ||
# - WEBUI_AUTH=False | # - WEBUI_AUTH=False | ||
# ...(端口、环境变量等) | # ...(端口、环境变量等) | ||
# Compose 原生支持,不需要任何额外参数 | # Compose 原生支持,不需要任何额外参数 | ||
mem_limit: | mem_limit: 512m # 硬内存上限 | ||
cpus: '0.5' # 最多用半个核 | cpus: '0.5' # 最多用半个核 | ||
</source> | |||
=== 4. 下载镜像并启动 === | |||
下载镜像: | |||
<source lang="bash"> | |||
docker pull ghcr.io/open-webui/open-webui:main | |||
</source> | </source> | ||
<source lang="bash"> | |||
启动(上一步其实可省略,启动时应该也会自动下载): | |||
$ docker compose up -d | |||
[+] up 2/2 | |||
✔ Network openwebui_default Created 0.2s | |||
✔ Container open-webui Started | |||
</source> | |||
=== 5. 创建nginx配置文件 === | |||
<source lang="xml"> | |||
# 请确认 /etc/nginx/nginx.conf 中已包含,且位于所有 include 或 server 块的上方: | |||
# http { | |||
# map $http_upgrade $connection_upgrade { | |||
# default upgrade; | |||
# '' close; | |||
# } | |||
# # ... 其他配置 | |||
# } | |||
server { | |||
server_name ai.xxx.com; | |||
# 上传文件大小限制(根据需要调整,例如 100M) | |||
client_max_body_size 100M; | |||
# 安全头(防止点击劫持、MIME 嗅探等) | |||
add_header X-Frame-Options "SAMEORIGIN" always; | |||
add_header X-Content-Type-Options "nosniff" always; | |||
add_header X-XSS-Protection "1; mode=block" always; | |||
add_header Referrer-Policy "strict-origin-when-cross-origin" always; | |||
location / { | |||
proxy_pass http://127.0.0.1:52060; | |||
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 $connection_upgrade; | |||
# 长连接超时 | |||
proxy_read_timeout 30m; | |||
proxy_send_timeout 10m; | |||
# 缓冲设置(优化大文件传输) | |||
proxy_buffering off; | |||
# 防止某些极端情况下大 Token 导致 502 错误 | |||
proxy_buffer_size 128k; | |||
proxy_buffers 4 256k; # 补上这两行,防止 Nginx 的数学计算报错 | |||
proxy_busy_buffers_size 256k; # 同步补上 | |||
proxy_cache off; | |||
chunked_transfer_encoding on; | |||
} | |||
listen 80; | |||
} | |||
</source> | |||
*更改域名务必更改 docker-composer.yml中的 CORS_ALLOW_ORIGIN!!! 否则流式传输会认证失效!! | |||
:engineio 服务端 origin 校验:https://ai.new.com 不在 ['https://ai.old.com'] 里 → 拒绝 WS 握手 → uvicorn 渲染成 HTTP 403(空 body、text/plain、Connection: keep-alive)。 | |||
2026年6月24日 (三) 19:38的最新版本
1. 确保Docker和Docker Compose已安装
检查Docker是否已安装
docker --version
docker compose version如果未安装,可以参考之前的教程先安装Docker。
2. 创建Gitea工作目录
创建一个干净的目录,所有Gitea相关文件都会放在这里
mkdir -p ~/openwebui
cd ~/openwebui这个 ~/openwebui目录就是未来迁移时需要整体打包的目录。
3. 创建docker-compose.yml
使用以下命令创建配置文件:
bash
nano docker-compose.yml粘贴以下内容:
services:
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: open-webui
restart: unless-stopped
ports:
- "3000:8080" #服务器端口:docker内端口
volumes:
- ./data:/app/backend/data
# environment:
# --- 根据你的情况选择配置,不需要的可以删除或注释掉 ---
# 方案一:连接远程 Ollama 服务(推荐)
# - OLLAMA_BASE_URL=http://192.168.1.100:11434 # 替换为你的 Ollama 服务器 IP
# 方案二:使用 OpenAI 兼容 API(如 DeepSeek)
# - OPENAI_API_BASE_URL=https://api.deepseek.com/v1
# - OPENAI_API_KEY=sk-你的密钥
# 1. 核心(必填)
##- WEBUI_SECRET_KEY=你的强密钥
##- OLLAMA_BASE_URL=http://你的OllamaIP:11434
# 2. 生产安全(强烈推荐)
- CORS_ALLOW_ORIGIN=https://xxx.xxx.com
# 3. 网络抓取兼容(强烈推荐)
- USER_AGENT=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36
# 4. Hugging Face 加速(可选)
##- HF_TOKEN=hf_你的实际Token
# 可选:如果你不想注册登录,开启单用户模式
# - WEBUI_AUTH=False
# ...(端口、环境变量等)
# Compose 原生支持,不需要任何额外参数
mem_limit: 512m # 硬内存上限
cpus: '0.5' # 最多用半个核4. 下载镜像并启动
下载镜像:
docker pull ghcr.io/open-webui/open-webui:main启动(上一步其实可省略,启动时应该也会自动下载):
$ docker compose up -d
[+] up 2/2
✔ Network openwebui_default Created 0.2s
✔ Container open-webui Started5. 创建nginx配置文件
# 请确认 /etc/nginx/nginx.conf 中已包含,且位于所有 include 或 server 块的上方:
# http {
# map $http_upgrade $connection_upgrade {
# default upgrade;
# '' close;
# }
# # ... 其他配置
# }
server {
server_name ai.xxx.com;
# 上传文件大小限制(根据需要调整,例如 100M)
client_max_body_size 100M;
# 安全头(防止点击劫持、MIME 嗅探等)
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
location / {
proxy_pass http://127.0.0.1:52060;
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 $connection_upgrade;
# 长连接超时
proxy_read_timeout 30m;
proxy_send_timeout 10m;
# 缓冲设置(优化大文件传输)
proxy_buffering off;
# 防止某些极端情况下大 Token 导致 502 错误
proxy_buffer_size 128k;
proxy_buffers 4 256k; # 补上这两行,防止 Nginx 的数学计算报错
proxy_busy_buffers_size 256k; # 同步补上
proxy_cache off;
chunked_transfer_encoding on;
}
listen 80;
}- 更改域名务必更改 docker-composer.yml中的 CORS_ALLOW_ORIGIN!!! 否则流式传输会认证失效!!
- engineio 服务端 origin 校验:https://ai.new.com 不在 ['https://ai.old.com'] 里 → 拒绝 WS 握手 → uvicorn 渲染成 HTTP 403(空 body、text/plain、Connection: keep-alive)。