Dify 自建版接入 Notion 知识库完整排错记录
从 provider not found 到最终成功,在自建 Dify 环境中启用 Notion 知识库时,遇到一个经典错误:
provider not found尤其是在使用 Docker Compose 自行部署的情况下,这个问题更常见。本文记录我从发现问题、逐步排查,到最终成功接入 Notion 的完整流程,希望对遇到相似问题的人有帮助。
一、问题背景
使用的是 Docker Compose 部署的 Dify,API 和 WEB 的版本都是最新的:
- dify-api:1.9.2
- dify-web:1.9.2
但在 Dify 知识库中尝试挂接 Notion 时一直提示:
provider not found即便已经在 .env 中设置了 Notion 的配置项,也把 Integration Token 配置好了,还是无法正常挂接。
二、初步排查:确认服務狀態
我首先查看了当前正在运行的容器:
sudo docker compose ps输出如下:
docker-plugin_daemon-1 langgenius/dify-plugin-daemon:0.3.3-local
docker-api-1 langgenius/dify-api:1.9.2
docker-web-1 langgenius/dify-web:1.9.2
...这里一个非常关键的点出现了:
plugin_daemon 的版本是:0.3.3-local(本地构建版)
而 API / WEB / WORKER 已经是 1.9.2 版本。
Version mismatch(版本不匹配)是根本问题。
三、深入排查:查看 plugin-daemon 日志
我查看 Notion 相关日志:
sudo docker compose logs plugin_daemon --tail=200 | grep notion输出表明 Notion 插件正常加载:
new plugin logged in: langgenius/notion_datasource:0.1.13
plugin langgenius/notion_datasource:0.1.13 started这证明 plugin_daemon 是在运行插件的,并没有挂掉。
但是,因为 plugin-daemon 是 0.3.3-local,它属于非常老的版本,而 Notion Provider 是后期才加入的新插件。
于是导致:
- API 1.9.x → 支持 Notion 数据源插件
- plugin-daemon 0.3.3 → 不完全支持/不兼容
- 知识库挂接 → 报 provider not found
这就解释了为什么插件“看似启动了”,但知识库仍然无法导入 Notion。
四、关键原因:版本体系是独立的
这一点非常重要:
因此:
- plugin-daemon 不随 API 升级
- plugin-daemon:1.9.2 这种镜像不存在
- 使用过老的 plugin-daemon 就会出现 provider 找不到
尝试 docker compose pull 时出现:
manifest for langgenius/dify-plugin-daemon:1.9.2 not found这进一步证明 plugin-daemon 根本没有对应的 1.x 版本。
五、解决方案:升级 plugin-daemon 到最新 0.x 正式版
最关键的一步,就是在 docker-compose.yml 中把 plugin-daemon 的镜像改成最新的版本。
例如:
plugin_daemon:
image: langgenius/dify-plugin-daemon:0.4.3或使用最新版:
plugin_daemon:
image: langgenius/dify-plugin-daemon:latest之后执行:
sudo docker compose pull
sudo docker compose down
sudo docker compose up -d更新后的 plugin-daemon 会自动加载最新的 datasource 插件,包括:
- langgenius/notion_datasource
- langgenius/notion
并完全兼容 API 1.9.x。
六、完成插件配置(否则仍然无法导入)
插件升级成功后,还需要进入 Dify 后台完成配置:
路径:
Dify 控制台 → Plugins(扩展) → Notion Data Source → Configure必须填写:
- Integration Type: internal
- Notion Internal Secret: secret_xxxxxxxx
保存。
⚠ 这是插件自己的配置,与 .env 无关,也不是在知识库里填。
七、创建新的知识库(重要)
最后,再在知识库中新建并选择:
✔ Notion Data Source(插件)
❌ 不要选择旧的 “Notion”(那是历史遗留项)
填写 Page ID → 测试连接 → 导入成功。
八、总结:整个问题的核心点
经过完整排查,我得出了这次问题的最终本质原因:
API / WEB 升级到了 1.9.2,但 plugin-daemon 仍然是旧版本 0.3.3-local。
导致:
- Notion 插件无法兼容
- provider not found
- 无论怎么填 Token 或 Page ID 都无法正常挂接
修复方式非常简单:
把 plugin-daemon 升级到最新版本即可九、最后的工作指令(可直接粘贴)
1. 编辑 compose 文件:
plugin_daemon:
image: langgenius/dify-plugin-daemon:0.4.32. 重启:
sudo docker compose pull
sudo docker compose down
sudo docker compose up -d3. 配置插件:
Dify → Plugins → Notion Data Source → Configure
4. 新建知识库(必须使用插件版 Notion Data Source)
完结:现在拥有完全可复现的解决方案
这一整套排查过程从:
- 初始报错
- 容器检查
- 版本比对
- 插件日志确认
- 到最终升级修复
油管:https://youtu.be/zv-qZ3d6nWw
留言
發佈留言