openwebui
https://docs.openwebui.com/getting-started/advanced-topics/development
开发指南-本机部署
前端启动
conda activate open-webui
cd open-webui
npm run dev
后端启动
首先进入cd ~
cd backend
sh dev.sh
先启动openwebui,外部连接中输入api,用模型test一下
one-api https://github.com/songquanpeng/one-api
为什么用one-api:azure的endpoint需要中转,除openai外,其他大模型也需要统一api格式接入openwebui
如果仔细看了openwebui的文档可以发现社区有很多工具,有可以用来连接azure模型的工具
One api启动
构建前端
cd one-api/web/default
npm install
npm run build
# 构建后端
cd ../..
go mod download
go build-ldflags "-s -w" -o one-api
langfuse监控
https://cloud.langfuse.com
集成openwebui,langfuse可以以轨迹的形式监控openwebui上的行为
开发指南-docker compose部署
提前说明的问题
在不更改源码的情况下,部署好的前后端容器是两个容器,存在跨域的情况并且目前还没有解决,后端config的代码中不允许用‘*’配置cross_origin,目前通过浏览器插件access-control-allow-origin解决跨域问题进行后续开发
且代码中配置项较多,在.env中配置不生效,目前跨过验证接口直接跳转登录的情况也未解决
开始部署
local 部署方案非常容易,下面我们整理适用于docker开发部署的方案
1、安装docker,我这里是在服务器linux centos上安装
官方docker文档https://docs.docker.com/engine/install/
docker hub 部署时需要配置镜像加速。阿里云的镜像已经不能使用,我在网上搜到了这些镜像加速,目前可用https://www.xuxlc.cn/article/details-40.html
# 如果没有就创建目录,有就跳过这一步
sudo mkdir -p /etc/docker
# 写入配置文件
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.1ms.run",
"https://doublezonline.cloud"
]
}
EOF
# 重启docker服务
sudo systemctl daemon-reload
sudo systemctl restart docker
2、本地拉取openwebui代码
自己创建docker compose文件或者直接从git 拉取,里面有docker compose
1. 拉取源代码
首先,你需要将源代码从 Git 仓库拉取到本地。如果你还没有源代码,可以通过以下命令进行拉取:
git clone https://github.com/open-webui/open-webui.git
cd open-webui
这里遇到版本问题node
1. 更新 Node.js
使用 Node Version Manager (nvm) 管理 Node.js 版本
-
安装 nvm: 如果系统没有安装 nvm,可以执行以下命令安装:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.4/install.sh | bash
安装完成后,重启终端或运行:
source ~/.bashrc
-
确认 nvm 安装成功:
nvm --version
-
使用 nvm 安装所需的 Node.js 版本:
nvm install 18.17.0
-
设置默认 Node.js 版本:
nvm use 18.17.0 nvm alias default 18.17.0
-
确认 Node.js 和 npm 版本:
node -v npm -v
2. 升级 npm
如果安装了合适版本的 Node.js,npm 版本应该已经满足需求(>=6.0.0)。如果需要手动升级:
npm install -g npm@latest
3. 重新安装项目依赖
在更新 Node.js 和 npm 版本后,清除旧的依赖并重新安装:
rm -rf node_modules package-lock.json
npm install
2. 修改 docker-compose.yml
你可以在之前的 docker-compose.yml
文件基础上,进行一些调整以支持本地代码挂载和开发模式。具体来说,主要是添加 volumes
和修改服务的 command
以及端口配置。以下是修改后的示例:
这里要注意的是端口,例如前端3000:5173,容器向外映射的是3000,内部是5173端口。要保证容器内5173端口没有被占用,服务器对外开放的3000端口没有受规则和防火墙限制
举例:
name: open-webui-dev
services:
frontend:
build:
context: .
target: build
command: ["npm", "run", "dev"]
depends_on:
- backend
ports:
- "3000:5173"
extra_hosts:
- host.docker.internal:host-gateway
volumes:
- ./src:/app/src
backend:
build:
context: .
target: base
command: ["bash", "dev.sh"]
env_file: ".env"
environment:
- ENV=dev
- WEBUI_AUTH=False
ports:
- "8080:8080"
extra_hosts:
- host.docker.internal:host-gateway
volumes:
- ./backend:/app/backend
- data:/app/backend/data
volumes:
data: {}
3. 启动开发环境
配置好 docker-compose.yml
文件后,可以启动 Docker 容器并进入开发模式:
构建镜像:
docker compose -f compose-dev.yaml up --watch
启动镜像
docker compose -f compose-dev.yaml up -d
这里可能再次遇到镜像问题,多试几种镜像
https://www.cnblogs.com/lasding/p/18401704
然后,你就可以通过访问 http://localhost:3000
来访问本地开发环境。
遇到问题:
耗费一天才解决的问题:
1、执行容器build命令,npm ci命令会一直卡住,报网络问题错误,实际上是pyodide这个包要预先下载和node匹配的版本,且npm ci命令需要在前面加镜像源,https://www.cnblogs.com/lasding/p/18401704,自己感觉华为云的镜像源好使
2、dockerfile文件也需要修改,有些没必要的例如ollama相关、pytorch,cuda相关命令直接注释,如果不用在服务器部署
后端模型的话
3、端口开放问题:注意几点:防火墙、服务器的自定义规则、如果是云服务器的话要在控制台开放对应的端口,dockerfile也要做好容器内部和对外的端口映射。
进入容器:
docker exec -it open-webui-dev-frontend-1 sh
在容器内检查服务
netstat -tuln | grep 3000(容器内的端口号)
在容器外测试服务
curl http://<服务器IP>:8698
-
停止容器:
docker compose -f compose-dev.yaml down
docker部署one api
这里one-api是接口管理和分发系统,作用是
git clone https://github.com/songquanpeng/one-api.git
构建容器
# 目前支持 MySQL 启动,数据存储在 ./data/mysql 文件夹内
docker compose up -d
# 查看部署状态
docker-compose ps
5.访问
地址栏输入链接,管理员登录:
用户名:root
初始密码:123456
Langfuse 部署
在服务器上拉下来langfuse的代码,部署后,参考openwebui文档中->集成->https://docs.openwebui.com/tutorials/integrations/langfuse,可以使用管道,首先在docker中启动pipelines
docker run -p 9099:9099 --add-host=host.docker.internal:host-gateway -v pipelines:/app/pipelines --name pipelines --restart always ghcr.io/open-webui/pipelines:main
在openwebui中的在管理设置中,创建并保存一个类型为 OpenAI API 的新连接,其详细信息如下:
- URL: http://host.docker.internal:9099(这是之前启动的Docker容器运行的地方)。
- 密码: 0p3n-w3bu!(标准密码)
- https://langfuse.com/images/docs/openwebui-integration.gif
后续步骤可以详细看openwebui的文档