Dify 插件离线打包完整指南(Windows + Docker 版)

问题背景

将 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-failedjiter

原因:本地 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. 安装离线插件

  1. 登录 Dify 管理界面

  2. 点击右上角头像 → 「插件」「管理」

  3. 点击 「安装插件」「本地安装」

  4. 选择打包好的 xxx-offline.difypkg 文件

  5. 等待安装完成

4. 验证安装

进入 「设置」「模型供应商」,应该能看到新安装的插件选项。

💡 常见问题 FAQ

Q1:打包后的文件能直接改名吗?

A :可以,但建议保留 -offline 标识,方便区分。

Q2:内网安装时提示"插件签名验证失败"?

A :检查 .env 中是否设置了 FORCE_VERIFYING_SIGNATURE=false

Q3:打包时提示 Docker 连接失败?

A :确保 Docker Desktop 已启动,执行 docker ps 验证。

🔗 参考资料

如果这篇文章对你有帮助,欢迎点赞收藏!

相关推荐
前进的李工2 小时前
SSH隧道实现Dify与Ollama跨服务器通信
开发语言·大模型·github·腾讯云·autodl·dify
honortech2 小时前
docker 配置 MySQL 主从数据库
数据库·mysql·docker
wangjinsheng5932 小时前
Vue3 + Element Plus 前端 AI 编码模板
前端·vue.js·ai·elementui·ai编程
safestar20122 小时前
Claude Code源码泄露:AI编码时代的安全警钟与实战指南
ai·ai编程
gis分享者2 小时前
什么是 AI Agent 中的 Skills?它有什么用?
人工智能·ai·agent·作用·概念·实现原理·skills
GJGCY3 小时前
企业级AI智能体平台技术评测:9款产品架构差异与生产落地能力分析
大数据·人工智能·ai·智能体
me8323 小时前
【Linux】Docker部署Jenkins
servlet·docker·jenkins
xmlhcxr3 小时前
kubernetes(K8s)基础配置及资源使用详解
docker·云原生·eureka·k8s
G佳伟3 小时前
阿里云,腾讯云 Docker Hub国内云服务器无法访问解决方案
阿里云·docker·腾讯云