不使用docker部署open-webui

文章目录

  • 不使用docker部署open-webui
    • 一、为什么不使用docker
    • 二、如何部署
    • 三、遇到问题
    • 四、注意事项

一、为什么不使用docker

采用docker部署固然方便,但是不利于二次开发。

  • docker部署缺点:
    1. 容器启动端口不能随意改变,想要改变只能重启新服务;
    2. 代码修改麻烦;
    3. 不易移植,进行二开可能使用容器内没有的依赖包,每次开新容器还需要导包,或者新创建容器。

二、如何部署

  1. 首先克隆项目源码,open-webui项目地址https://github.com/open-webui/open-webui/tree/main;
  2. 项目运行需要python(3.11+)和nodejs(22.10+)环境;
 #0.卸载当前nodejs
 sudo apt remove nodejs npm -y
 #1.安装最新版nodejs
 curl -fsSL https://deb.nodesource.com/setup_22.10.x | sudo -E bash -
 apt install nodejs -y
 #2.测试nodejs npm是否安装正确
 echo nodejs版本为:`node -v`
 echo npm 版本为:`npm -v`
 #3.设置npm淘宝源
 npm config set registry https://mirrors.huaweicloud.com/repository/npm/
  1. conda创建python虚拟环境;
conda create -n open-webui python=3.11
  1. 启动:
#1.进入项目目录
cd open-webui
cp -RPp .env.example .env
#2.安装前端依赖
npm install --force
#3.激活名为 open-webui 的 Conda 环境
conda activate open-webui 
#4.安装后端依赖
cd backend
pip install -r requirements.txt
#5.启动后端
bash start.sh
#5. 启动后端
cd /home/open-webui/backend
python -m open_webui.main
#6. 在另一个终端启动前端
cd /home/open-webui
npm run dev
  1. .env文件示例
    使用时删除中文注释
# Ollama URL for the backend to connect
# The path '/ollama' will be redirected to the specified backend URL
OLLAMA_BASE_URL='http://localhost:11434'

OPENAI_API_BASE_URL=''
OPENAI_API_KEY=''

# AUTOMATIC1111_BASE_URL="http://localhost:7860"

# For production, you should only need one host as
# fastapi serves the svelte-kit built frontend and backend from the same host and port.
# To test with CORS locally, you can set something like
# CORS_ALLOW_ORIGIN='http://localhost:5173;http://localhost:8080'
CORS_ALLOW_ORIGIN='*'

# For production you should set this to match the proxy configuration (127.0.0.1)
FORWARDED_ALLOW_IPS='*'

# DO NOT TRACK
SCARF_NO_ANALYTICS=true
DO_NOT_TRACK=true
ANONYMIZED_TELEMETRY=false



BYPASS_EMBEDDING_AND_RETRIEVAL=True


USER_AGENT=OpenWebUI/1.0


OFFLINE_MODE=True
# 禁用嵌入和检索功能以加快启动速度
# 设置用户代理以避免警告
# 可选:设置离线模式

三、遇到问题

  1. node安装完成下载前端依赖之后,报错

0.删除 package-lock.json(依赖版本锁定文件,避免旧版本冲突)
rm -f package-lock.json
1.卸载当前 esbuild:
cd /root/open-webui
npm uninstall esbuild
2.安装兼容版本: npm install esbuild@0.20.2 --save-dev
3.启动服务: npm run dev

2.构建build目录产生:ENOSPC - 系统文件监听数不足(直接导致服务崩溃)
官方已经给出解决方案

export NODE_OPTIONS="--max-old-space-size=4096" # For Linux/macOS (bash, zsh)
# set NODE_OPTIONS=--max-old-space-size=4096 # For Windows (Command Prompt)
# $env:NODE_OPTIONS="--max-old-space-size=4096" # For Windows (PowerShell)
npm run dev

3.配置文件(.env)文件带有中文报错

删掉中文即可

4.前端构建目录缺失,警告如下

WARNI [open_webui.main] Frontend build directory not found at '/root/open-webui/build'. Serving API only.

这很可能不会影响后端启动,但是当你访问端口的时候,由于open-webui使用的是后端服务加载前端,没有前端“构建目录build",会导致页面无法正常访问。

原因是下载完前端依赖之后,没有构建,命令如下:
npm run build

四、注意事项

  1. 打开网页后,注册的第一个用户默认为管理员账号,以后注册的账号角色均为pending(待分配权限)。

  2. 修改权限的方法。

    • 管理员账号可以在用户组修改,只需要点一下用户组用户的权限标识:
      在这里插入图片描述

    • 方法二:数据存放在backend/data/webui.db中,可以用数据库可视化软件打开数据库,将账号由pending修改为user或admin。

    • 方法三:修改backend/config.py文件中第358行,DEFAULT_USER_ROLE = os.getenv(“DEFAULT_USER_ROLE”, “pending”),将pending修改为user(普通用户)或admin(管理员),以后每次注册的账号就不需要管理员分配权限。

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐