快速结论:此报错通常发生在通过 Docker 自托管 Dify 并修改了默认端口(如 80 → 8080)后,点击运行 bot 或绑定 Notion 知识库时因 URL 配置未同步导致 404 错误。优先排查 docker-compose.yml</code 中的 CONSOLE_API_URL、APP_WEB_URL 等变量是否已更新为正确的域名/IP + 端口。
适用环境:Dify 1.0.1,Self Hosted(Docker Desktop),本地部署并将默认端口 80 改为 8080 访问。
最快修复方案:修改 docker-compose.yml 中以下环境变量的值为你的实际访问地址(含端口 8080),例如 http://your-ip-or-domain:8080:CONSOLE_API_URL、CONSOLE_WEB_URL、SERVICE_API_URL、APP_API_URL、APP_WEB_URL。同时检查 .env 中 Notion 相关变量(NOTION_INTEGRATION_TYPE、NOTION_CLIENT_SECRET、NOTION_CLIENT_ID、NOTION_INTERNAL_SECRET)是否按集成类型正确填写。修改后重启所有容器。注意:若仅修改 docker-compose.yml 后问题仍未解决,可能还需要检查前端静态文件是否被浏览器缓存或反向代理配置,本方案来自相似 Issue(#6367)引用,原作者反映配置后仍有遗留问题,建议同时排查 NGINX 或代理层。
注意事项:此方案为社区已验证的通用解决方法,但 Issue 报告者反馈按此操作后 404 错误依然存在,因此可能还需确认 docker-compose.yml 是否被自动生成逻辑覆盖(文件中已注明“auto-generated”),应从 .env 或 docker-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_URLCONSOLE_WEB_URLSERVICE_API_URLAPP_API_URLAPP_WEB_URLFILES_URL(可选)
- 确认 Notion 集成类型(internal 或 public)并与环境变量匹配:
NOTION_INTEGRATION_TYPE(应为"internal"或"public")NOTION_CLIENT_SECRET(public 时需填写)NOTION_CLIENT_ID(public 时需填写)NOTION_INTERNAL_SECRET(internal 时需填写)
解决步骤
- 备份当前
docker-compose.yml和.env文件。 - 打开
.env或docker-compose-template.yaml,将涉及 URL 的变量改为实际访问地址(包含端口 8080),例如:CONSOLE_API_URL=http://127.0.0.1:8080
CONSOLE_WEB_URL=http://127.0.0.1:8080参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。


