快速结论:该报错通常出现在自托管(Docker Compose)部署的 LobeChat 服务器向 market.lobehub.com 发起服务端请求时,请求被 Cloudflare 以 403 拦截,导致 M2M token 获取返回 HTML 页面而非 JSON。优先排查服务器出口 IP 是否被 Cloudflare 封禁,并考虑使用 FEATURE_FLAGS=-market 临时禁用 Market 功能。
适用环境:LobeHub 2.2.14,Docker Compose 部署,macOS 客户端,Chrome 浏览器,腾讯云轻量服务器(香港、新加坡地域),HTTPS 域名访问。
最快修复方案:暂无确认的一步修复方案。Issue 中明确验证过的首选处理方法是设置 FEATURE_FLAGS=-market 禁用 Market 功能,可立即停止相关报错。
注意事项:FEATURE_FLAGS=-market 会完全禁用 Market UI 和后端 API 调用;仅设置 -skill-store 不足以隐藏全部 API 请求。MARKET_TRUSTED_CLIENT_ID/SECRET 需要在 Market 服务端白名单,官方未提供自助获取渠道。
问题场景
用户在自托管的 LobeHub 2.2.14(Docker Compose 部署)中,通过 HTTPS 域名访问以下功能时触发问题:设置 → 凭据(Credentials)、MCP Marketplace、Skills Marketplace、推荐任务模板。无论部署在香港还是新加坡的腾讯云轻量服务器,问题均稳定复现。
报错原文
Error [TRPCError]: Failed to list credentials
code: 'INTERNAL_SERVER_ERROR',
[cause]: Error [MarketAPIError]: Forbidden
status: 403,
errorBody: undefined
Error fetching M2M token:
SyntaxError: Unexpected token '<', "<!DOCTYPE "... is not valid JSON
HTTP/2 403
server: cloudflare
原因分析
可能原因:自托管服务器向 market.lobehub.com 发起服务端请求时,被 Cloudflare 的 WAF/机器人防护拦截(返回 403)。Market API 已不再允许匿名/未认证访问,同时服务器出口 IP 触发 Cloudflare 拦截,导致 M2M token 请求返回 HTML 错误页,而非预期的 JSON 响应,从而引发 SyntaxError: Unexpected token '<'。
需要说明的是,虽然 HTTPS 已正确配置,但腾讯云轻量服务器的 IP 段可能被 Cloudflare 视为高风险来源,导致服务端请求被拦截。这与客户端浏览器能否访问无关,问题发生在服务器的出站请求上。
环境排查
- 确认 LobeHub 版本为 2.2.14
- 确认部署方式为 Docker Compose
- 确认服务器地域(Issue 中测试了香港、新加坡腾讯云轻量服务器)
- 确认 Market 端点为
https://market.lobehub.com - 检查
MARKET_TRUSTED_CLIENT_ID和MARKET_TRUSTED_CLIENT_SECRET环境变量是否已配置 - 检查
FEATURE_FLAGS环境变量的当前值 - 验证服务器到
market.lobehub.com的出站请求是否被拦截
解决步骤
- 临时禁用 Market 功能(可优先尝试):在 Docker Compose 环境变量中设置
FEATURE_FLAGS=-market,重启服务。此方案可立即停止所有 Market 相关报错,但会完全禁用 Market UI 和后端 API 调用。 - 联系 LobeHub 团队申请 M2M 凭据:如需恢复 Market 功能,可联系 LobeHub 团队申请白名单的
MARKET_TRUSTED_CLIENT_ID/MARKET_TRUSTED_CLIENT_SECRET。Issue 中明确指出,这些凭据需要在 Market 服务端白名单,无法自助获取。 - 尝试更换出口 IP:可能原因之一是服务器 IP 被 Cloudflare 封禁,可尝试更换云服务商或使用代理等方式更换服务器出口 IP,验证是否仍被拦截。
- 使用
MARKET_BASE_URL指向替代 Marketplace:可将MARKET_BASE_URL配置为兼容@lobehub/market-sdkAPI 的自托管或替代 Marketplace。但 Issue 中明确指出,目前尚无公开的参考实现。 - 关注错误处理优化进展:Market 403 被转换为 tRPC 500 的问题已被单独记录(Issue #18443),可关注后续版本是否优化了错误降级处理。
验证方法
设置 FEATURE_FLAGS=-market 并重启服务后,打开设置 → 凭据页面,确认不再返回 HTTP 500,且日志中不再出现 market.creds.list、market.registerM2MToken 等相关 tRPC 调用错误。若使用代理更换出口 IP 后,可直接访问 market.lobehub.com 验证是否仍返回 403。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。
![[Bug]: `/v1/responses` can replay `chatcmpl-*` message IDs into OpenAI Responses during cross-provider handoffs](https://www.chat-gpts.plus/wp-content/uploads/2026/08/27333-72c0e243-768x403.jpg)

