issue: Admin Panel Open Terminal integration saves to user settings endpoint instead of config endpoint

该报错 “Admin Panel Open Terminal integration saves to user settings endpoint instead of config endpoint” 通常发生在用户在 用户个人设置面板 (Settings → Integrations)而非 管

快速结论:该报错 “Admin Panel Open Terminal integration saves to user settings endpoint instead of config endpoint” 通常发生在用户在用户个人设置面板(Settings → Integrations)而非管理员面板(Admin Panel → Settings → Integrations → Open Terminal)中添加 Open Terminal 连接时。优先检查你操作的是否为管理员面板(需管理员权限),并确认请求地址为 POST /api/v1/configs/terminal_servers 而非 POST /api/v1/users/user/settings/update

适用环境:Open WebUI 0.11.0(ghcr.io/open-webui/open-webui:main Docker 镜像),部署在 Windows 11 + WSL2 Docker Desktop,Ollama 0.32.5,Helium 0.11.3.2 浏览器。

最快修复方案:从管理员面板(Admin Panel → Settings → Integrations → Open Terminal)点击 “+ Add Connection” 填写 URL、API Key 后保存。确认浏览器控制台或 Docker 日志显示 POST /api/v1/configs/terminal_servers 200 而非用户设置端点。

注意事项:本 Issue 已被标记为 #27621 的重复,修复已在 #27628 中合并。如果仍无法工作,请确认已升级至包含该修复的版本(≥ 0.11.0 后续补丁)。另外,添加后需确认数据库中 terminal_server.connections 非空:python3 -c "import sqlite3; db = sqlite3.connect('/app/backend/data/webui.db'); print(db.execute('SELECT value FROM config WHERE key=\"terminal_server.connections\"').fetchall())"

问题场景

用户在 Open WebUI 管理后台的 “Admin Panel → Settings → Integrations → Open Terminal” 中添加终端连接并点击保存后,终端连接未成功持久化,AI 调用终端时提示 “Terminal server not found”。查看 Docker 日志发现请求发送到了 POST /api/v1/users/user/settings/update 而非预期的 POST /api/v1/configs/terminal_servers,导致 terminal_server.connections 始终为 []

报错原文

POST /api/v1/users/user/settings/update HTTP/1.1" 200
# 期望应为:POST /api/v1/configs/terminal_servers HTTP/1.1" 200
# 数据库查询结果:terminal_server.connections = []

原因分析

Open WebUI 中存在两个不同的 “Integrations” 配置入口:管理员面板(Admin Panel → Settings → Integrations)和用户个人设置面板(Settings → Integrations)。用户个人设置面板中的终端连接保存路径为 POST /api/v1/users/user/settings/update,写入用户私有设置;只有管理员面板中的终端连接保存路径为 POST /api/v1/configs/terminal_servers,写入全局配置表。用户可能误在用户面板中操作,导致连接始终无法被后端全局查找。

另外,关联 Issue #27621 指出:即使连接写在正确位置,如果使用用户面板中添加的 “直接终端”(direct terminal),后端会因 URL 匹配与 ID 匹配不一致而同样报错。本 Issue 的原始报错(请求发错端点)明确证明操作发生在用户面板。

环境排查

  • 确认当前 Open WebUI 版本:推荐 ≥ 0.11.0(本 Issue 重现于 0.11.0 main 镜像)。
  • 确认部署方式:Docker(单容器或多容器共享网络均可复现)。
  • 确认操作的界面路径:浏览器地址栏是否包含 ?settings=integrations 等参数?若从用户头像菜单进入则为用户面板,若从左侧 Admin 图标进入则为管理员面板。
  • 可查看 Docker 日志中的 HTTP 请求路径,区分是 user/settings 还是 configs 端点。

解决步骤

  1. 以管理员身份登录 Open WebUI。
  2. 点击左侧导航栏的 Admin(齿轮图标)进入管理员面板。
  3. 依次进入 Settings → Integrations → Open Terminal。
  4. 点击 “+ Add Connection”,填写 URL(如 http://open-terminal:8080)、API Key(如果使用 Bearer Auth),其他选项保持默认。
  5. 点击 Save 按钮。
  6. 确认浏览器没有 JavaScript 错误,同时查看 Docker 日志(docker logs <容器名> -f)确认请求为 POST /api/v1/configs/terminal_servers 200
  7. 若仍失败,可尝试浏览器硬刷新(Ctrl+F5)后重新操作,排除前端缓存。
  8. (可选)进入容器执行数据库查询验证:python3 -c "import sqlite3; db = sqlite3.connect('/app/backend/data/webui.db'); print(db.execute('SELECT value FROM config WHERE key=\"terminal_server.connections\"').fetchall())",应返回包含连接信息的 JSON 而非 []

验证方法

在管理员面板添加终端连接后,使用 AI 对话并调用终端功能(如 “打开终端” 或运行 shell 命令),观察是否能正常连接。若仍提示 “Terminal server not found”,请检查终端容器是否可被 Open WebUI 后端访问(网络配置、API Key 等)。同时确认数据库中 terminal_server.connections 非空。

参考来源

open-webui/open-webui #27719

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 16045

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注