open webui 部署 以及解决,首屏加载缓慢,nginx反向代理访问404,WebSocket后端服务器链接失败等问题

news/2025/2/22 19:05:51

项目地址:GitHub - open-webui/open-webui: User-friendly AI Interface (Supports Ollama, OpenAI API, ...)

选择了docker部署

如果 Ollama 在您的计算机上,请使用以下命令

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

参数详解

1. -d
  • 含义:此参数表示以 “分离”(detached)模式运行容器。即容器在后台运行,不会将容器的标准输出和错误输出直接显示在终端中。
  • 作用:使得用户在启动容器后可以继续在当前终端执行其他命令,而无需等待容器运行结束。
2. -p 3000:8080
  • 含义:该参数用于进行端口映射,格式为 主机端口:容器端口。这里将主机的 3000 端口映射到容器内部的 8080 端口。
  • 作用:外部客户端可以通过访问主机的 3000 端口来间接访问容器内部运行在 8080 端口上的服务。
3. --add-host=host.docker.internal:host-gateway
  • 含义:向容器的 /etc/hosts 文件中添加一条主机记录。host.docker.internal 是一个自定义的主机名,host-gateway 代表 Docker 主机的 IP 地址。
  • 作用:在容器内部,当使用 host.docker.internal 这个主机名时,会解析到 Docker 主机的 IP 地址,方便容器与主机进行通信。
4. -v open-webui:/app/backend/data
  • 含义:此为挂载卷(volume)的操作。open-webui 是一个 Docker 卷的名称,/app/backend/data 是容器内部的目标路径。
  • 作用:将名为 open-webui 的 Docker 卷挂载到容器内的 /app/backend/data 目录。这样容器内该目录的数据会被存储在 Docker 卷中,实现数据的持久化,即使容器被删除,数据也不会丢失。
5. --name open-webui
  • 含义:为新创建的容器指定一个名称,这里将容器命名为 open-webui
  • 作用:方便后续对容器进行管理和操作,例如使用 docker stop open-webui 可以停止该容器,使用 docker logs open-webui 可以查看容器的日志。
6. --restart always
  • 含义:设置容器的重启策略为 always。即无论容器因何种原因停止(如正常退出、异常崩溃等),Docker 都会自动尝试重新启动该容器。
  • 作用:确保容器在各种情况下都能保持运行状态,提高服务的可用性。
7. ghcr.io/open-webui/open-webui:main
  • 含义:指定要使用的 Docker 镜像。ghcr.io 是 GitHub Container Registry 的域名,open-webui/open-webui 是镜像的名称,main 是镜像的标签。
  • 作用:从 GitHub Container Registry 拉取 open-webui/open-webui 镜像的 main 版本,并基于该镜像创建并启动容器。

如果 Ollama 位于其他服务器上,请使用以下命令:

要连接到另一台服务器上的 Ollama,请将 更改为服务器的 URL:OLLAMA_BASE_URL

docker run -d -p 3000:8080 -e OLLAMA_BASE_URL=https://example.com -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main

部署完成后可直接访问 ip+3000端口

解决访问过程中的一些问题

首次加载缓慢白屏等问题

问题原因 接口 api/models 调用加载模型列表缓慢,访问了默认配置的地址不断的尝试最后失败了

进入管理员面板

OpenAI API默认 chart gpt的访问链接 删除掉

Ollama API默认链接 删除掉

再次访问就快很多了,要注意如果配置了一个校验链接不通的地址又会出现这个情况

配置nginx方向代理后,页面静态资源访问404、WebSocket后端服务器链接失败问题

基于宝塔面板的配置

server
{
    listen 80;
    server_name chart.xxx.com;
    index index.php index.html index.htm default.php default.htm default.html;
    root /www/wwwroot/chart.xxx.com;

    #ERROR-PAGE-START  错误页配置,可以注释、删除或修改
    error_page 404 /404.html;

    #反向代理到open webui
    location / {
      proxy_pass http://127.0.0.1:3000;
    }
    
    #需要配置开启代理到WebSocket后端服务器 不然访问时候WebSocket链接失败
    location /ws {
        # 允许客户端发起跨域请求
        add_header 'Access-Control-Allow-Origin' '*';
        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
        add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';

        # 代理到WebSocket后端服务器
        proxy_pass http://127.0.0.1:3000;

        # 启用WebSocket支持
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header Host $host;

        # 可选:设置代理超时时间
        proxy_read_timeout 86400;
    }

    #禁止访问的文件或目录
    location ~ ^/(\.user.ini|\.htaccess|\.git|\.env|\.svn|\.project|LICENSE|README.md)
    {
        return 404;
    }

    #如果存在静态资源访问配置 缓存啥的
    #需要配置代理到内部的open webui 服务 不然访问404
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
        proxy_pass http://127.0.0.1:3000;
        expires      30d; #这是一个用于设置缓存过期时间的指令
        error_log /dev/null;
        access_log /dev/null;
    }

    #如果存在静态资源访问配置缓存
    #需要配置代理到内部的open webui 服务   不然访问404
    location ~ .*\.(js|css)?$
    {
        proxy_pass http://127.0.0.1:3000;
        expires      12h; #这是一个用于设置缓存过期时间的指令
        error_log /dev/null;
        access_log /dev/null;
    }
}

http://www.niftyadmin.cn/n/5862661.html

相关文章

OkHttp使用和源码分析学习(二)

流程及源码分析 OkHttpClient使用过程主要涉及到OkHttpClient、Request、Response、Call、Interceptor,具体参考OkHttp使用。OkHttp在设计时采用门面模式,将整个系统复杂性隐藏,子系统通过OkHttpClient客户端对外提供。 流程 创建 OkHttp…

基于STM32单片机的智能蔬菜大棚温湿度监测系统设计

引言 在现代农业生产中,温湿度、光照强度和土壤湿度等环境因素对植物的生长起着至关重要的作用。智能蔬菜大棚正是基于这些因素,通过自动化控制和远程监控技术,实现对植物生长环境的精准管理,最终提升蔬菜的产量和质量。本文介绍…

Unity Excel导表工具转Lua文件

思路介绍 借助EPPlus读取Excel文件中的配置数据,根据指定的不同类型的数据配置规则来解析成对应的代码文本,将解析出的字符串内容写入到XXX.lua.txt文件中即可 EPPlus常用API //命名空间 using OfficeOpenXml;//Excel文件路径 var fileExcel new File…

论文概览 |《Urban Analytics and City Science》2023.10 Vol.50 Issue.8

本次给大家整理的是《Environment and Planning B: Urban Analytics and City Science》杂志2023年10月第50卷第8期的论文的题目和摘要,一共包括21篇SCI论文! 论文1 Advances in geospatial approaches to transport networks and sustainable mobility …

YARN的工作机制及特性总结

YARN hadoop的资源管理调度平台(集群)——为用户程序提供运算资源的管理和调度 用户程序:如用户开发的一个MR程序 YARN有两类节点(服务进程): 1. resourcemanager 主节点master ----只需要1个来工作 2. nod…

06、ElasticStack系列,第六章:elasticsearch设置密码

第六章:Elasticsearch设置密码 一、修改配置文件 ##进入容器 docker exec -it elasticsearch bash##启用认证 vi config/elasticsearch.yml 添加如下内容: http.cors.enabled: true http.cors.allow-origin: "*" http.cors.allow-headers: A…

基于Python+Django+Vue的旅游景区推荐系统系统设计与实现源代码+数据库+使用说明

运行截图 功能介绍 前台功能包括:首页、详情页、订单、用户中心。后台功能包括:首页、轮播图管理、管理员、卖家管理、买家管理、景区管理、订单管理非开源功能(分类管理,地区管理,收藏管理,评论管理&a…

echarts找不到了?echarts社区最新地址

前言:在之前使用echarts的时候,还可以通过上边的导航栏找到echarts社区,但是如今的echarts变更之后,就找不到echarts社区了。 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要了解更多内容可以访问我的主页秋刀鱼不做梦-CSDN博客 如今…