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

项目地址: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 webuilocation / {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 服务 不然访问404location ~ .*\.(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 服务   不然访问404location ~ .*\.(js|css)?${proxy_pass http://127.0.0.1:3000;expires      12h; #这是一个用于设置缓存过期时间的指令error_log /dev/null;access_log /dev/null;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/70382.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docker安装ros2 并在windows中显示docker内ubuntu系统窗口并且vscode编程

这里包括docker desktop安装ros2 humble hawkshill , 安装xserver(用来在windows中显示ubuntu中窗口), vscode安装插件连接docker并配置python的一系列方法 1.安装xserver 为了能方便的在windows中显示ubuntu内的窗口,比如rqt窗口 参考文章:https://www.cnblogs.com/larva-zhh…

VMware安装Centos 9虚拟机+设置共享文件夹+远程登录

一、安装背景 工作需要安装一台CentOS-Stream-9的机器环境,所以一开始的安装准备工作有: vmware版本:VMware Workstation 16 镜像版本:CentOS-Stream-9-latest-x86_64-dvd1.iso (kernel-5.14.0) …

C/C++ 中 volatile 关键字详解

volatile 关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,比如:操作系统、硬件或者其它线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊…

处理器架构、单片机、芯片、光刻机之间的关系

这些术语都涉及到半导体和电子设备的设计与制造,但它们的含义和作用有所不同。下面我会逐个解释,并描述它们之间的关系: 1. 处理器架构 (Processor Architecture) 处理器架构指的是处理器(CPU)的设计原理和结构。它定…

python之socket编程

Socket编程是计算机网络编程的基础,它允许两台计算机(或同一个计算机的不同进程)之间进行通信。Python 提供了 socket 模块,可以很方便地进行 Socket 编程。下面是一些基本的 Socket 编程示例,包括 TCP 和 UDP。 TCP …

Docker 的安全配置与优化(二)

Docker 安全优化策略 (一)多阶段构建优化镜像大小 多阶段构建是 Docker 17.05 版本引入的强大功能,它允许在一个 Dockerfile 中定义多个构建阶段,每个阶段都可以使用不同的基础镜像和依赖项,最终只将必要的文件和依赖…

欧洲跨境组网专线:企业出海的高效网络解决方案

在全球化的背景下,越来越多的企业将业务拓展至海外市场,并在欧洲等地设立分支机构。然而,跨境办公中常常面临公网网络延迟高、打开速度慢、丢包严重等问题,这不仅影响办公效率,还增加了IT维护的难度和成本。针对这一痛…

面阵工业相机提高餐饮业生产效率

餐饮行业是一个快节奏、高要求的领域,该领域对生产过程中每一个阶段的效率和准确性都有很高的要求。在食品加工、包装、质量控制和库存管理等不同生产阶段实现生产效率的优化是取得成功的关键步骤。面阵工业相机能够一次性捕捉对象的二维区域图像,并支持…

Renesas RH850 IAR编译时变量分配特定内存

文章目录 1. 核心作用2. 典型使用场景3. 示例代码4. 编译器与链接脚本协作5. 注意事项6. 调试验证在RH850系列微控制器的开发中,#pragma location = "FIRST_RAM" 是一条编译器指令,其核心含义是 将变量或函数分配到名为 FIRST_RAM 的特定内存段。以下是详细解释: …

C++面试题,进程和线程方面(1)

文章目录 前言进程和线程有什么不同进程,线程的通讯方式什么是锁为什么说锁可以使线程安全加锁有什么副作用总结 前言 这是个人总结进程和线程方面的面试题。如果有错,欢迎佬们前来指导!!! 进程和线程有什么不同 进程…

视频mp4垂直拼接 水平拼接

视频mp4垂直拼接 水平拼接 pinjie_v.py import imageio import numpy as np import os import cv2def pinjie_v(dir1,dir2,out_dir):os.makedirs(out_dir, exist_okTrue)# 获取目录下的所有视频文件video_files_1 [f for f in os.listdir(dir1) if f.endswith(.mp4)]video_fi…

Unity摄像机与灯光相关知识

一、Inspector窗口 Inspector窗口可以查看和编辑对象的属性以及设置 其中包含各种组件,例如用Cube对象来举例 1.Sphere(Mesh)组件: 用来决定对象的网格属性,例如球体网格为Sphere、立方体网格为Cube 2.Mesh Renderer组件: 用来设置…

C++(17):为optional类型构造对象

C++(17):optional,多了一个合理的选择_c++17 max-CSDN博客 介绍了optional做为函数返回值的一种方式 其实optional也可以作为对象来使用 #include &

探索关键领域的AI工具:机器学习、深度学习、计算机视觉与自然语言处理

引言 在人工智能(AI)迅猛发展的今天,机器学习(ML)、深度学习(DL)、计算机视觉(CV)和自然语言处理(NLP)已经成为解决复杂问题的关键技术。无论是自动驾驶车辆的视觉识别,还是智能助手的对话理解,这些技术都在改变着世界。本文将介绍在各个领域…

基于vue和微信小程序的校园自助打印系统(springboot论文源码调试讲解)

第3章 系统设计 3.1系统功能结构设计 本系统的结构分为管理员和用户、店长。本系统的功能结构图如下图3.1所示: 图3.1系统功能结构图 3.2数据库设计 本系统为小程序类的预约平台,所以对信息的安全和稳定要求非常高。为了解决本问题,采用前端…

Windows 快速搭建C++开发环境,安装C++、CMake、QT、Visual Studio、Setup Factory

安装C 简介 Windows 版的 GCC 有三个选择: CygwinMinGWmingw-w64 Cygwin、MinGW 和 mingw-w64 都是在 Windows 操作系统上运行的工具集,用于在 Windows 环境下进行开发和编译。 Cygwin 是一个在 Windows 上运行的开源项目,旨在提供类Uni…

MKS SERVO42E57E 闭环步进电机_系列10 STM32_脉冲和串口例程

文章目录 第1部分 产品介绍第2部分 相关资料下载2.1 MKS E系列闭环步进驱动资料2.2 源代码下载2.3 上位机下载 第3部分 脉冲控制电机运行示例第4部分 读取参数示例4.1 读取电机实时位置4.2 读取电机实时转速4.3 读取电机输入脉冲数4.4 读取电机位置误差4.5 读取电机IO端口状态 …

【宏基因组】MaAsLin2

教学手册:学习手册 MaAsLin2 # BiocManager::install("Maaslin2",force TRUE)library(Maaslin2) # 用的是相对丰度,行名为-ID行样本,列为细菌 input_data system.file("extdata", "HMP2_taxonomy.tsv", package"…

【消息队列】认识项目

1. 项目介绍 该项目是去实现一个简单的消息队列,包含服务器,客户端的实现,客户端通过远程方法调用与服务器进行交互。采用自定义应用层协议,下层使用 TCP 协议进行数据在网络中传输,核心功能提供了虚拟主机&#xff0…

vue从入门到精通(十一):条件渲染

条件渲染 1.v-if 写法: (1).v-if“表达式” (2).v-else-if“表达式” (3).v-else“表达式” 适用于:切换频率较低的场景。 特点:不展示的DOM元素直接被移除。 注意:v-if可以和:v-else-if、v-else一起使用,但要求结构不能被“打断” 2.v-show 写法:v-show“…