open-coreui:把 Open WebUI 从“大餐厅”改成“餐车”的 rust 轻量化方案

我见过很多人第一次想跑 Open WebUI 的时候,心情像这样:

“我就想在自己电脑上跟模型聊两句,怎么打开安装指南以后,像被拉去开一家连锁餐厅?”

Docker、Python、数据库、缓存……菜单还没点,厨房先装修一圈。
这时候 open-coreui 的定位就很清楚了:把“开大餐厅”改成“推一辆餐车出来营业”。

餐车不一定能做满汉全席,但它的优点也很直接:轻、快、上手门槛低。你要的是“现在就能吃上一口热的”,它就合适。


先把话说死:open-coreui 到底是什么

一句人话版定义:

  • open-coreui 是 Open WebUI v0.6.32 的轻量重写(lite fork),不是官方版本。
  • 它的目标是 尽量用单可执行文件跑起来,同时 沿用原版前端,后端换成 rust(主要是 actix-web 这一套)。
  • 项目目前处于 早期开发阶段,官方说明里写得很直白:当前只实现了基本对话功能,其他能力在逐步补齐。

你可以把它理解成:菜单牌子还写着“Open WebUI 风味”,但后厨换了更小更快的炉子;菜品先从“招牌炒饭(聊天)”开始,其他菜慢慢加。

open-coreui 预览界面:沿用 Open WebUI 风格的聊天 UI

为了方便使用场景,它给了两种完全独立的“餐车开法”:

客户端类型适合谁你得到什么
Desktop(桌面端)个人电脑、想开箱即用一个桌面应用,装完就跑
Backend Server / CLI(服务端)放服务器、多人通过浏览器访问一个后端可执行文件,跑起来后浏览器访问

你不需要两个都装。按场景选一个就行。


轻量化到底轻在哪:5 个关键点(别贪,多了反而腻)

  1. 前端沿用原版
    open-coreui 的思路不是“重新设计 UI”,而是尽量复用 Open WebUI 的前端。好处是你上手几乎没学习成本。

  2. 后端换 rust/actix-web
    后端用 rust 写,主框架是 actix-web。这类组合的气质就是:并发下更稳、资源用得更省,像餐车的炉火更集中,出餐更利索。

  3. 默认把“数据库”压到 sqlite
    配置和数据目录默认在 ~/.config/open-coreui,数据库默认是 sqlite:sqlite://{CONFIG_DIR}/data.sqlite3
    这相当于把“仓库”塞进餐车底下的抽屉:够用、好搬、少折腾。

  4. 真的不强制你装一堆依赖
    官方 README 明确写了:不需要 Docker、Python、PostgreSQL、Redis 这些依赖环境。
    这不是在嘲笑它们,而是说:你只想吃个炒饭,就别先盖个中央厨房。

  5. 开关很多,但别被“全家桶”诱惑
    它的 CLI 文档里列了大量环境变量(认证、WebSocket、Web 搜索、代码执行、图片生成……开关一堆)。
    现实一点:项目仍在早期阶段,先把“聊天主链路”跑顺,再考虑加配菜。


实战:用 10 分钟把它跑起来(桌面端 / 服务端二选一)

先上官方入口:

  • Releases:https://github.com/xxnuo/open-coreui/releases/latest
  • CLI 文档:https://github.com/xxnuo/open-coreui/blob/main/CLI.md

方案 A:桌面端(适合“我就想马上用”)

  1. 去 Releases 下载对应系统的桌面客户端
  2. 安装后直接打开

macOS 常见坑:提示“应用已损坏”。别慌,这是系统的隔离属性在闹脾气,终端跑一行就好:

sudo xattr -d com.apple.quarantine "/Applications/Open CoreUI Desktop.app"

方案 B:服务端(适合“放服务器给团队用”)

  1. 去 Releases 下载对应系统的后端二进制
  2. Linux/macOS 赋予执行权限并启动:
chmod +x open-coreui-*
./open-coreui-*
  1. 浏览器打开它输出的地址(通常是 http://localhost:8168

如果你想把餐车只停在自己这台机器上(不让局域网围观),把 HOST 绑到本地回环:

HOST=127.0.0.1 PORT=8168 ./open-coreui-*

让它“连上模型”:OpenAI 兼容接口的最小配置

open-coreui 的配置方式很“餐车”:主要靠环境变量。最常用的就是这俩:

  • OPENAI_API_BASE_URL:接口地址
  • OPENAI_API_KEY:密钥(有的本地服务会忽略,但字段要有)

举个本地模型服务的例子(你把 base_url 换成你自己的就行):

OPENAI_API_BASE_URL="http://127.0.0.1:11434/v1" \\
OPENAI_API_KEY="local-dev" \\
./open-coreui-*

这一步的逻辑很简单:open-coreui 负责当 webui,模型服务负责当“炉子”。 两者之间用 OpenAI 兼容协议对接。


常见坑与对策:别让餐车开到沟里

1) “我以为它什么都支持,结果找不到功能”

官方 README 已经打了预防针:早期阶段,仅基础对话
所以你看到 CLI 里一堆开关,也别急着全打开。先跑通聊天,再逐项验证你需要的能力是否已实现。

2) “我想给同事用,结果一开机就暴露在公网”

默认 HOST=0.0.0.0 意味着可能对外监听。你至少做三件事:

  • 只在内网用:HOST=127.0.0.1 或绑定内网 IP
  • 关掉随便注册:ENABLE_SIGNUP=false
  • 固定会话密钥:设置 WEBUI_SECRET_KEY(别用默认自动生成的临时值)

3) “我换了机器/重装了系统,聊天记录没了”

CONFIG_DIR 找数据目录。默认在:

  • ~/.config/open-coreui

你要迁移/备份,重点看 sqlite 文件(通常叫 data.sqlite3)。
想把数据挪到别的盘,就显式指定:

CONFIG_DIR="/path/to/open-coreui" ./open-coreui-*

4) “端口被占了,启动失败”

两条路:

  • 换端口:PORT=18168
  • 让系统随机分配:ENABLE_RANDOM_PORT=true

三行总结 + 下一步清单

三行总结:

  1. open-coreui 的野心很克制:先把 Open WebUI 的“聊天主链路”做成单文件、轻量、跑得快。
  2. 它像餐车:门槛低、好搬家,但别指望一上来就满配全套。
  3. 真正的“高性能”不是口号,是你在低配机器上也能顺滑聊起来。

下一步清单(照着做就行):

  • 个人用:装 Desktop 版本,先跑通一次聊天
  • 团队用:跑 CLI 服务端,绑定内网地址 + 关闭公开注册
  • 想要更可控:把 CONFIG_DIR 放到你习惯备份的位置
  • 想折腾:从 CLI.md 里挑 1 个开关,开一个测一个

参考链接:

  • 项目仓库:https://github.com/xxnuo/open-coreui
  • Releases:https://github.com/xxnuo/open-coreui/releases/latest
  • CLI 配置:https://github.com/xxnuo/open-coreui/blob/main/CLI.md

觉得有用的话,顺手做个“技术动作”

我不擅长吆喝,但我很懂“操作步骤”,所以给你一份可执行清单:

  1. 点赞:如果这篇把你从“装修大餐厅”里拉出来了,点一下页面的点赞按钮,让它多活一会儿
  2. 转发:把链接发给那个正在 Docker 里迷路的同事,救人一命胜造七级浮屠
  3. 收藏:用浏览器收藏最稳(macOS:Command+D,Windows/Linux:Ctrl+D),下次需要时不用再翻历史记录
  4. 关注:想持续收“轻量化、rust、webui”这类干货,可以订阅本站 RSS(通常是 /index.xml),或者把这个站点加进你的阅读器

你做完这些,我就知道这篇“餐车教程”没白写。