DIFY本地部署开源模型配置ollama,提示修改成功却没有加载模型问题解决

Dify 对接 AutoDL Ollama 模型加载失败:问题排查与处理手册

场景:Dify(Docker 部署于腾讯云)通过内网隧道连接 AutoDL 实例上的 Ollama(http://10.206.0.15:6006),模型供应商配置保存成功,但模型无法加载/对话。

结论速览:与 Ollama、隧道、网络均无关。根因是 plugin_daemon 初始化插件 Python 环境时访问 PyPI 超时,导致 Ollama 插件启动失败;期间"删除 plugin 文件"的误操作造成 Dify 崩溃,本手册同时给出安全修复与恢复流程。

使用dify版本:https://gitee.com/changdong199700/dify.git

成果结果:

docker异常日志检查命令:

复制代码
sudo docker logs docker-plugin_daemon-1 -f --tail 30

一、问题现象

  1. Dify 中配置 Ollama 供应商(基础 URL http://10.206.0.15:6006),提示"修改成功"
  2. 添加/调用模型(qwen3:4b、qwen3.5:2b)时无响应或报错,模型未正常加载
  3. docker-api-1 日志大量重复报错:
javascript 复制代码
PluginDaemonInternalServerError: no available node, plugin not found
get custom model schema failed
  1. docker-plugin_daemon-1 日志报错:
javascript 复制代码
init environment failed: failed to install dependencies: signal: killed
Failed to download distribution due to network timeout. Try increasing UV_HTTP_TIMEOUT (current value: 30s).
plugin launch error: init environment ... failed too many times, you should consider the package is corrupted or your network is unstable

二、架构背景(理解问题的前提)

  • Dify 1.x 中,Ollama 等模型供应商不再是 api 容器内置代码,而是作为插件 由独立的 plugin_daemon 容器运行
  • 插件安装后,plugin_daemon 会用 uv 为每个插件创建独立 Python 环境,从 PyPI 下载依赖(gevent、numpy、tiktoken 等)
  • "保存供应商配置成功"仅写入数据库,不做连通性校验;真正调用时才经 plugin_daemon → Ollama → 隧道 → AutoDL
  • 国内服务器访问官方 PyPI 超时(默认 30s),依赖装不上 → 插件反复初始化失败被标记退出 → api 报 "plugin not found"

三、排查路径(本案例实际验证过程)

步骤 操作 结果 结论
1 宿主机 curl http://10.206.0.15:6006/api/tags 正常返回模型列表 隧道 + Ollama 正常
2 sudo docker exec -it docker-api-1 curl .../api/tags 容器内同样正常 容器网络无问题
3 检查 Dify 模型配置(名称/URL/类型) 无异常 排除配置错误
4 sudo docker logs docker-api-1 "plugin not found" 问题锁定 plugin 层
5 sudo docker logs docker-plugin_daemon-1 依赖下载超时/被杀 定位根因:PyPI 网络问题

经验:网络层验证要分别在宿主机和容器内各测一次;配置"保存成功"不代表可用;日志优先看 plugin_daemon。

四、正确处理方案

4.1 治本:为 plugin_daemon 配置 PyPI 国内镜像源

编辑 ~/dify/docker/docker-compose.yaml,在 plugin_daemon 服务的 environment: 段新增(与其他环境变量同级,注意两空格缩进):

yaml 复制代码
  plugin_daemon:
    environment:
      UV_INDEX_URL: https://pypi.tuna.tsinghua.edu.cn/simple
      PIP_INDEX_URL: https://pypi.tuna.tsinghua.edu.cn/simple
      UV_HTTP_TIMEOUT: 300

注意:UV_INDEX_URL 是 uv 的源配置;个别 uv 版本更认 UV_DEFAULT_INDEX,若配置后仍走官方源,两个都配上。

4.2 检查内存("signal: killed" 可能是 OOM)

bash 复制代码
free -h
dmesg | grep -i oom | tail -5

内存小(≤2G)时加 swap:

bash 复制代码
sudo fallocate -l 4G /swapfile && sudo chmod 600 /swapfile
sudo mkswap /swapfile && sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

4.3 清理损坏的插件环境(安全方式)

⚠️ 不要直接 rm -rf volumes/plugin_daemon/ 整个目录,其中包含插件注册表与运行数据,整目录删除会导致 Dify 插件系统崩溃(本案例中的误操作)。

安全做法:

bash 复制代码
# 1. 先停服务(避免写冲突)
cd ~/dify/docker && sudo docker compose down

# 2. 备份(任何删除操作前必须做)
sudo cp -r volumes/plugin_daemon volumes/plugin_daemon.bak.$(date +%F)

# 3. 只删除出问题的插件的环境缓存(按插件名精确删除)
sudo rm -rf volumes/plugin_daemon/cwd/langgenius/ollama*

# 4. 重建容器(重新加载 compose 环境变量,restart 不够)
sudo docker compose up -d --force-recreate plugin_daemon

4.4 验证

bash 复制代码
sudo docker logs docker-plugin_daemon-1 -f --tail 30

成功标志:init environment for plugin langgenius/ollama 之后不再出现 ERROR,插件状态 running。然后到 Dify 界面测试对话。

五、误删 plugin 数据后的恢复流程

若已执行整目录删除导致 Dify 崩溃(api 反复重启、界面打不开):

  1. 若做过备份 :sudo docker compose down → 还原备份 → sudo docker compose up -d
  2. 无备份时,plugin 数据可重建(不影响业务数据库):
bash 复制代码
   cd ~/dify/docker
   sudo docker compose down
   sudo mkdir -p volumes/plugin_daemon
   sudo docker compose up -d
  1. 重建后需到 Dify 插件页面重新安装 Ollama 插件(其他插件同理)
  2. 重新安装后模型供应商配置仍在数据库中(volumes/db 未动),确认模型名与 ollama list 一致即可
  3. 若数据库也受损:从 volumes/db 的备份/快照恢复,或接受数据重置

六、相关但独立的优化:Docker 镜像加速器

拉取 docker 镜像慢是另一回事,编辑 /etc/docker/daemon.json(JSON 格式严格,末尾不能有多余逗号,引号必须半角):

json 复制代码
{
  "registry-mirrors": [
    "https://mirror.ccs.tencentyun.com",
    "https://<你的ID>.mirror.aliyuncs.com",
    "https://docker.m.daocloud.io",
    "https://docker.nju.edu.cn"
  ]
}
bash 复制代码
python3 -m json.tool /etc/docker/daemon.json   # 校验格式
sudo systemctl daemon-reload && sudo systemctl restart docker
sudo docker info | grep -A 10 "Registry Mirrors"
  • 腾讯源 mirror.ccs.tencentyun.com 仅限腾讯云内网
  • 阿里源为个人加速器地址,控制台获取
  • 配错会导致 docker.service 启动失败,用 sudo journalctl -u docker -n 30 定位

七、操作守则(防再犯)

  1. 删除任何 volumes/ 下内容前先备份,并按插件名精确删除,禁止整目录清空
  2. 改 docker-compose.yaml 环境变量后必须 --force-recreate,restart 不生效
  3. 修改配置文件后用工具校验(JSON 用 json.tool,YAML 注意缩进)
  4. 分清三类镜像源,别配混:
  • Docker 镜像加速器(daemon.json)→ 加速 docker pull
  • PyPI 镜像源(plugin_daemon 环境变量)→ 加速插件依赖安装
  • Ollama 模型源(OLLAMA_HOST、模型 pull)→ 与本问题无关
  1. 每次只改一处、验证一处,出问题好回退

八、问题根因总结

层级 状态 说明
AutoDL Ollama ✅ 正常 模型已拉取,/api/tags 正常
隧道(内网 10.206.0.15:6006) ✅ 正常 宿主机与 Dify 容器内均通
Dify 供应商配置 ✅ 正常 模型名与 Ollama 一致
plugin_daemon 插件环境 ❌ 根因 PyPI 下载依赖超时 → 插件初始化失败
衍生事故 ⚠️ 误删 plugin 目录 导致 Dify 崩溃,按第五节恢复
相关推荐
熊猫钓鱼>_>1 小时前
开源鸿蒙平台 KMP 三方库 KStore 适配全流程:从 ohosArm64 target 到真机文件持久化验证
人工智能·华为·开源·ai编程·harmonyos·openharmony·kmp
wangchunyu1141 小时前
食韵味简 —— 免费开源的中式菜谱 API 服务
python·django·开源
IvorySQL1 小时前
VACUUM FULL 之后 ROWID 就废了? IvorySQL 兼容性实测
数据库·人工智能·ai·postgresql·开源
GPUStack1 小时前
一张 A800 80GB,跑通 Qwen-Image-2.1:GPUStack 部署、生成与图像编辑实战
人工智能·开源·github·vllm·大模型部署·gpustack
用户47949283569151 小时前
我免费开源的 Archify 约 8 万 Star,别人先做出了 $19/月的在线版
开源·资讯
承渊政道1 小时前
【从零开始大模型开发与微调:基于PyTorch与ChatGLM】(开源大模型ChatGLM使用详解)
人工智能·pytorch·开源·llm·chatglm
miofly2 小时前
GitHub 日榜趋势速报 | 2026-10-09
开源·github
冬奇Lab14 小时前
一天一个开源项目(第230篇):HandRaw-Style —— 把 327 种手绘风格、165 种排版、36 种配色编号化,让 AI 画图不再每次都飘
人工智能·开源·资讯