Ubuntu使用docker安装Open WebUI:修订间差异

来自个人维基
跳转到导航 跳转到搜索
Hovercool留言 | 贡献
无编辑摘要
Hovercool留言 | 贡献
无编辑摘要
 
(未显示同一用户的4个中间版本)
第53行: 第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: 256m     # 硬上限 256MB
     mem_limit: 512m     # 硬内存上限
     cpus: '0.5'      # 最多用半个核
     cpus: '0.5'      # 最多用半个核
</source>
</source>
第79行: 第92行:


=== 5. 创建nginx配置文件 ===
=== 5. 创建nginx配置文件 ===
<source lang="xml">
# 请确认 /etc/nginx/nginx.conf 中已包含,且位于所有 include 或 server 块的上方:
# http {
#    map $http_upgrade $connection_upgrade {
#        default upgrade;
#        ''      close;
#    }
#    # ... 其他配置
# }
server {
server {
     server_name ai.xx.xx;
     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 / {
     location / {
         proxy_pass http://localhost:3000;
         proxy_pass http://127.0.0.1:52060;
         proxy_set_header Host $host;
         proxy_set_header Host $host;
         proxy_set_header X-Real-IP $remote_addr;
         proxy_set_header X-Real-IP $remote_addr;
第92行: 第124行:
         proxy_http_version 1.1;
         proxy_http_version 1.1;
         proxy_set_header Upgrade $http_upgrade;
         proxy_set_header Upgrade $http_upgrade;
         proxy_set_header Connection "upgrade";
         proxy_set_header Connection $connection_upgrade;
        proxy_read_timeout 86400;
    }


    listen 443 ssl; # managed by Certbot
        # 长连接超时
    ssl_certificate /etc/letsencrypt/live/ai.xx.xx/fullchain.pem; # managed by Certbot
        proxy_read_timeout 30m;
    ssl_certificate_key /etc/letsencrypt/live/ai.xx.xx/privkey.pem; # managed by Certbot
         proxy_send_timeout 10m;
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
 
}
server {
    if ($host = ai.xx.xx) {
         return 301 https://$host$request_uri;
    } # managed by Certbot


        # 缓冲设置(优化大文件传输)
        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;
     listen 80;
    server_name ai.xx.xx;
    return 404; # managed by Certbot
}
}
</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      Started

5. 创建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)。