AI对话平台

liu 017e816edb 新增单点登录功能 1 год назад
backend 017e816edb 新增单点登录功能 1 год назад
cypress 43bfc6eff5 第一次更新项目全部文件 1 год назад
docs 93fff2fd2c 修改logo和字眼 1 год назад
kubernetes 93fff2fd2c 修改logo和字眼 1 год назад
nginx-1.26.3 017e816edb 新增单点登录功能 1 год назад
scripts 43bfc6eff5 第一次更新项目全部文件 1 год назад
src 6c86a90f33 新增不需要nginx启动脚本,修改关于页面 1 год назад
static 93fff2fd2c 修改logo和字眼 1 год назад
test 43bfc6eff5 第一次更新项目全部文件 1 год назад
.dockerignore 43bfc6eff5 第一次更新项目全部文件 1 год назад
.env.example 43bfc6eff5 第一次更新项目全部文件 1 год назад
.eslintignore 43bfc6eff5 第一次更新项目全部文件 1 год назад
.eslintrc.cjs 43bfc6eff5 第一次更新项目全部文件 1 год назад
.gitattributes 43bfc6eff5 第一次更新项目全部文件 1 год назад
.gitignore 6ff826908d 上传忽略文件 1 год назад
.npmrc 43bfc6eff5 第一次更新项目全部文件 1 год назад
.prettierignore 43bfc6eff5 第一次更新项目全部文件 1 год назад
.prettierrc 43bfc6eff5 第一次更新项目全部文件 1 год назад
CHANGELOG.md 93fff2fd2c 修改logo和字眼 1 год назад
CODE_OF_CONDUCT.md 43bfc6eff5 第一次更新项目全部文件 1 год назад
Caddyfile.localhost 43bfc6eff5 第一次更新项目全部文件 1 год назад
Dockerfile 43bfc6eff5 第一次更新项目全部文件 1 год назад
INSTALLATION.md 43bfc6eff5 第一次更新项目全部文件 1 год назад
LICENSE 43bfc6eff5 第一次更新项目全部文件 1 год назад
Makefile 43bfc6eff5 第一次更新项目全部文件 1 год назад
README.md b650fefc78 新增一键启动脚本 1 год назад
TROUBLESHOOTING.md 93fff2fd2c 修改logo和字眼 1 год назад
confirm_remove.sh 43bfc6eff5 第一次更新项目全部文件 1 год назад
cypress.config.ts 43bfc6eff5 第一次更新项目全部文件 1 год назад
demo.gif 43bfc6eff5 第一次更新项目全部文件 1 год назад
docker-compose.a1111-test.yaml 43bfc6eff5 第一次更新项目全部文件 1 год назад
docker-compose.amdgpu.yaml 43bfc6eff5 第一次更新项目全部文件 1 год назад
docker-compose.api.yaml 43bfc6eff5 第一次更新项目全部文件 1 год назад
docker-compose.data.yaml 43bfc6eff5 第一次更新项目全部文件 1 год назад
docker-compose.gpu.yaml 43bfc6eff5 第一次更新项目全部文件 1 год назад
docker-compose.playwright.yaml 43bfc6eff5 第一次更新项目全部文件 1 год назад
docker-compose.yaml 43bfc6eff5 第一次更新项目全部文件 1 год назад
hatch_build.py 43bfc6eff5 第一次更新项目全部文件 1 год назад
i18next-parser.config.ts 43bfc6eff5 第一次更新项目全部文件 1 год назад
package-lock.json 43bfc6eff5 第一次更新项目全部文件 1 год назад
package.json 43bfc6eff5 第一次更新项目全部文件 1 год назад
postcss.config.js 43bfc6eff5 第一次更新项目全部文件 1 год назад
pyproject.toml 93fff2fd2c 修改logo和字眼 1 год назад
run-compose.sh 43bfc6eff5 第一次更新项目全部文件 1 год назад
run-ollama-docker.sh 43bfc6eff5 第一次更新项目全部文件 1 год назад
run.sh 43bfc6eff5 第一次更新项目全部文件 1 год назад
start_server.bat 6c86a90f33 新增不需要nginx启动脚本,修改关于页面 1 год назад
start_server_with_nginx_on_windows.bat 8027cfc6ec 更新启动脚本 1 год назад
svelte.config.js 43bfc6eff5 第一次更新项目全部文件 1 год назад
tailwind.config.js 43bfc6eff5 第一次更新项目全部文件 1 год назад
tsconfig.json 43bfc6eff5 第一次更新项目全部文件 1 год назад
update_ollama_models.sh 43bfc6eff5 第一次更新项目全部文件 1 год назад
uv.lock 43bfc6eff5 第一次更新项目全部文件 1 год назад
vite.config.ts 43bfc6eff5 第一次更新项目全部文件 1 год назад

README.md

OpenWebUI 二次开发指南

📖 目录


📦 数据库配置

连接参数配置

该项目原本只支持Sqlite,postgresql,如需支持其他库,要修改挺多代码的,不过不复杂,可以研究。

  • 在 .env文件中加上一下内容

    # 不配置postgresql,默认会使用Sqlite
    # 配置postgresql只需要在环境变量中申明
    # 数据库中可以没有任何信息,项目启动的时候自己会建表
    DATABASE_URL="postgresql://myuser:mysecretpassword@localhost:5432/mydatabase"
    
    • 配置系统环境变量 bash export DATABASE_URL="postgresql://myuser:mysecretpassword@localhost:5432/mydatabase"

当前测试postgresql是用一下docker命令搭建的

sudo docker pull postgres
sudo docker run -d \
  --name my-postgres \
  --restart unless-stopped \
  -e POSTGRES_PASSWORD=mysecretpassword \
  -e POSTGRES_USER=myuser \
  -e POSTGRES_DB=mydatabase \
  -p 5432:5432 \
  -v postgres_data:/var/lib/postgresql/data \
  postgres:latest

⚙️ 开发模式启动

系统要求

最低运行环境需求

  • 操作系统:Linux(或 Windows 的 WSL)/macOS
  • Python 版本:3.11+
  • Node.js 版本:22.10+
  • 内存:建议 4GB 以上
  • 磁盘空间:至少 2GB 可用空间

安装ollama

# docker 下载镜像
sudo docker pull ollama/ollama
# 创建本地存储目录
mkdir -p ~/ollama-data

# 运行容器并挂载目录
sudo docker run -d -p 11434:11434 -v ~/ollama-data:/root/.ollama --restart unless-stopped --network host --name ollama olla
ma/ollama

克隆项目

git clone https://XXXXXXXX/open-webui.git
cd open-webui

前端配置

  • 创建 .env 文件:

    # linux/Unix
    cp -RPp .env.example .env
    # windows
    Copy-Item -Path .env.example -Destination .env -Force
    
    • 安装依赖 bash npm install
  • 启动前端服务

    npm run dev
    

    后端配置

    • 进入后端目录 bash cd backend
  • 安装虚拟环境

    conda create --name open-webui python=3.11
    conda activate open-webui
    
    • 安装依赖 bash pip install -r requirements.txt -U -i https://pypi.tuna.tsinghua.edu.cn/simple
  • 启动后端 这种启动后端遇到跨域问题没法解决,开发模式暂时用生产环境部署方式进行开发

    sh dev.sh
    
    • hugging face模型下载失败的问题,配置环境 ```bash import os

    在导入任何 huggingface_hub 模块前设置环境变量

    os.environ["HF_ENDPOINT"] = "https://hf-mirror.com"

    from huggingface_hub import snapshot_download from sentence_transformers import SentenceTransformer

    示例:下载模型

    model = SentenceTransformer("sentence-transformers/all-MiniLM-L6-v2") ```


二次开发修改的地方

静态资源


🚀 生产环境部署

编译前端

npm run build
#如果运到内存不足,请使用
NODE_OPTIONS="--max-old-space-size=4096" npm run build

数据库配置

# windows 上配置环境变量
# 密码含特殊字符:将password中的@ $等字符替换为%40 %24
DATABASE_URL="postgresql://myuser:mysecretpassword@localhost:5432/mydatabase"

反向代理配置(windows)

# nginx-1.26.3(windows)
http {
    ...

    # 全局优化
    client_max_body_size 100M; # 允许大文件上传

    # 压缩传输
    gzip on;

    server {
        listen       80;
        server_name  localhost;

        # 指向构建后的静态文件目录(使用 Windows 路径)
        root C:/Users/liu78/Desktop/workspace/open-webui-main/build;
        index index.html;

        location / {
            try_files $uri $uri/ /index.html;
        }

        # 代理后端API请求(关键配置)
        location /api/ {
            proxy_pass http://localhost:8080/api/;  # 后端服务地址
            # 连接后端超时(默认60秒)
            proxy_connect_timeout 60s;
            # 发送请求到后端的超时(默认60秒)
            proxy_send_timeout 600s;
            # 从后端读取响应的超时(默认60秒)
            proxy_read_timeout 600s;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
        # 处理/ws路径的Socket.IO连接(需添加协议升级头)
        location /ws/ {
            proxy_pass http://localhost:8080;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "Upgrade";
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_read_timeout 86400; # 保持长连接
        }

        # 其他路由代理(根据FastAPI挂载路径)
        location ~ ^/(ollama|openai|auth|users|chats|models|files|retrieval)/ {
            proxy_pass http://localhost:8080;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
        # 若静态文件通过FastAPI服务(如/static和/cache路径)
        location /static/ {
            proxy_pass http://localhost:8080/static/;
            expires 30d; # 缓存优化
        }

        location /cache/ {
            proxy_pass http://localhost:8080/cache/;
            expires 1h;
        }
        ...
    }