Error 404 when creating a bot, error occurs when binding the Notion knowledge base, unable to normally jump to the binding page.

此报错通常发生在通过 Docker 自托管 Dify 并修改了默认端口(如 80 → 8080)后,点击运行 bot 或绑定 Notion 知识库时因 URL 配置未同步导致 404 错误。优先排查 docker-compose.yml CONSOLE_API_URL 、 APP_WEB_URL 等

快速结论:此报错通常发生在通过 Docker 自托管 Dify 并修改了默认端口(如 80 → 8080)后,点击运行 bot 或绑定 Notion 知识库时因 URL 配置未同步导致 404 错误。优先排查 docker-compose.yml</code 中的 CONSOLE_API_URLAPP_WEB_URL 等变量是否已更新为正确的域名/IP + 端口。

适用环境:Dify 1.0.1,Self Hosted(Docker Desktop),本地部署并将默认端口 80 改为 8080 访问。

最快修复方案:修改 docker-compose.yml 中以下环境变量的值为你的实际访问地址(含端口 8080),例如 http://your-ip-or-domain:8080CONSOLE_API_URLCONSOLE_WEB_URLSERVICE_API_URLAPP_API_URLAPP_WEB_URL。同时检查 .env 中 Notion 相关变量(NOTION_INTEGRATION_TYPENOTION_CLIENT_SECRETNOTION_CLIENT_IDNOTION_INTERNAL_SECRET)是否按集成类型正确填写。修改后重启所有容器。注意:若仅修改 docker-compose.yml 后问题仍未解决,可能还需要检查前端静态文件是否被浏览器缓存或反向代理配置,本方案来自相似 Issue(#6367)引用,原作者反映配置后仍有遗留问题,建议同时排查 NGINX 或代理层。

注意事项:此方案为社区已验证的通用解决方法,但 Issue 报告者反馈按此操作后 404 错误依然存在,因此可能还需确认 docker-compose.yml 是否被自动生成逻辑覆盖(文件中已注明“auto-generated”),应从 .envdocker-compose-template.yaml 修改后重新生成。

问题场景

用户在 Docker Desktop 上自部署 Dify 1.0.1,因端口冲突将访问端口从 80 改为 8080。创建任意 bot 或工作流并发布后,点击运行按钮,浏览器无法跳转到正确端口,返回 404 错误。同时,在知识库中绑定 Notion 时也出现错误,无法正常跳转到授权页面。

报错原文

Error 404 when creating a bot, error occurs when binding the Notion knowledge base, unable to normally jump to the binding page.
HTTP Error 404. The requested resource is not found.
Notion bind error: {"error":"invalid_request","error_description":"query failed validation: query.client_id should be a string or `undefined`, instead was `0`."}

原因分析

可能原因:

  • Dify 的 API 服务器、Web 前端等服务的 URL 配置仍指向默认端口 80,导致实际访问路径与预期不符,请求被路由到错误的端口返回 404。
  • Notion OAuth 回调地址或 client_id 等环境变量未正确配置(如使用了内部集成的 NOTION_INTERNAL_SECRET 但变量名拼写错误,或 client_id 被错误设置为 0),导致验证失败。
  • docker-compose.yml 中的环境变量被自动生成脚本覆盖,直接修改该文件可能不会生效,需要从 .env 或模板文件调整后重新生成配置。

环境排查

  • 确认 Dify 版本是否为 1.0.1
  • 确认部署方式为 Docker (docker-compose),且未使用额外反向代理(如 NGINX)
  • 检查浏览器实际请求的 URL(开发工具中 Network 标签页)是否使用了正确的端口(8080)
  • 查看 .env 文件或 docker-compose.yml 中以下变量是否已填写正确的主机地址与端口:
    • CONSOLE_API_URL
    • CONSOLE_WEB_URL
    • SERVICE_API_URL
    • APP_API_URL
    • APP_WEB_URL
    • FILES_URL(可选)
  • 确认 Notion 集成类型(internal 或 public)并与环境变量匹配:
    • NOTION_INTEGRATION_TYPE(应为 "internal""public"
    • NOTION_CLIENT_SECRET(public 时需填写)
    • NOTION_CLIENT_ID(public 时需填写)
    • NOTION_INTERNAL_SECRET(internal 时需填写)

解决步骤

  1. 备份当前 docker-compose.yml.env 文件。
  2. 打开 .envdocker-compose-template.yaml,将涉及 URL 的变量改为实际访问地址(包含端口 8080),例如:
    CONSOLE_API_URL=http://127.0.0.1:8080
    CONSOLE_WEB_URL=http://127.0.0.1:8080

    参考来源

    langgenius/dify #15556

    GamsGo AI

    AI 工具推荐

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

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

    了解 GamsGo AI

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

    这个方案解决了吗?

celebrityanime
celebrityanime
文章: 15904

发表回复

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