问题背景
将 Dify 从外网迁移到内网后,发现一个令人困惑的问题:明明在外网下载好的插件(.difypkg 文件),导入内网 Dify 后却"消失"了,刷新页面就找不到。
根本原因:Dify v1.x 的插件机制发生了重大变化。插件不再是一个独立的 Docker 镜像,而是一个 Python 应用。安装时需要联网从 PyPI 下载依赖包。内网环境无法访问公网,依赖安装失败,插件自然无法加载。
解决方案:在外网将插件及其所有 Python 依赖打包成一个完整的离线安装包。
🎯 最终成功的命令
直接复制以下命令到 PowerShell 执行(确保 Docker Desktop 已启动):
bash
docker run --rm -it -v "${PWD}:/app" -e DEBIAN_FRONTEND=noninteractive ubuntu:24.04 bash -c "cd /app && apt-get update && apt-get install -y unzip python3 python3-pip tzdata && ln -sf /usr/bin/python3 /usr/bin/python && chmod +x plugin_repackaging.sh && ./plugin_repackaging.sh local ./langgenius-openai_api_compatible_0.0.42.difypkg"
执行成功后输出示例:

🧩 准备工作
1. 环境要求
| 项目 | 要求 |
|---|---|
| 操作系统 | Windows 10/11(专业版/企业版,或家庭版 + WSL2) |
| Docker | Docker Desktop for Windows(已启动) |
| 网络 | 需要能访问外网(下载镜像和 Python 依赖) |
2. 下载打包工具(推荐使用增强版)
理由:原版没成功(对 Python 版本兼容性更好):
bash
git clone https://github.com/xjl456852/dify-plugin-repackaging-plus.git
cd dify-plugin-repackaging-plus
3. 准备插件文件
从 Dify 插件市场下载需要打包的插件(如 langgenius-openai_api_compatible_0.0.42.difypkg),放入上述目录。
🔧 命令参数详解
| 参数 | 作用 |
|---|---|
docker run --rm |
运行容器,执行完毕后自动删除 |
-it |
交互式终端,可以看到打包过程 |
-v "${PWD}:/app" |
将当前目录挂载到容器的 /app 目录 |
-e DEBIAN_FRONTEND=noninteractive |
关键:禁止交互式提示(解决 tzdata 时区选择问题) |
ubuntu:24.04 |
使用 Ubuntu 24.04(自带 Python 3.12,无需额外配置) |
🐛 踩坑记录与解决方案
坑1:路径格式问题
错误 :unzip: cannot find or open .\xxx.difypkg
原因 :在 Git Bash 中使用了 Windows 风格路径 .\
解决 :使用 Unix 风格路径 ./
坑2:Python 版本不兼容
错误 :error: metadata-generation-failed 和 jiter
原因:本地 Python 3.14 太新,某些包没有兼容版本
解决:使用 Docker 容器中的 Python 3.12(Ubuntu 24.04)
坑3:Ubuntu 22.04 找不到 python3.12
错误 :E: Unable to locate package python3.12
原因:Ubuntu 22.04 默认源没有 Python 3.12
解决:改用 Ubuntu 24.04(自带 Python 3.12)
📦 打包前后对比
| 对比项 | 原文件 | 离线包 |
|---|---|---|
| 文件名 | xxx.difypkg |
xxx-offline.difypkg |
| 大小 | ~50 KB | ~50 MB |
| 内容 | 仅插件代码 | 代码 + 所有 Python 依赖 |
| 安装方式 | 需要联网 | 直接安装 |
🖥️ 内网安装步骤
1. 修改 Dify 配置
在 Dify 部署目录 dify/docker/.env 中添加:
bash
# 允许安装未签名的本地插件(必须)
FORCE_VERIFYING_SIGNATURE=false
# 调整上传文件大小限制(离线包可能较大)
PLUGIN_MAX_PACKAGE_SIZE=524288000
NGINX_CLIENT_MAX_BODY_SIZE=500M
2. 重启 Dify 使配置生效
bash
cd /path/to/dify/docker
docker compose down
docker compose up -d
3. 安装离线插件
-
登录 Dify 管理界面
-
点击右上角头像 → 「插件」 → 「管理」
-
点击 「安装插件」 → 「本地安装」
-
选择打包好的
xxx-offline.difypkg文件 -
等待安装完成
4. 验证安装
进入 「设置」 → 「模型供应商」,应该能看到新安装的插件选项。
💡 常见问题 FAQ
Q1:打包后的文件能直接改名吗?
A :可以,但建议保留 -offline 标识,方便区分。
Q2:内网安装时提示"插件签名验证失败"?
A :检查 .env 中是否设置了 FORCE_VERIFYING_SIGNATURE=false。
Q3:打包时提示 Docker 连接失败?
A :确保 Docker Desktop 已启动,执行 docker ps 验证。
🔗 参考资料
如果这篇文章对你有帮助,欢迎点赞收藏!