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 验证。

🔗 参考资料

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

相关推荐
Agent产品评测局1 天前
国企制造企业vs民营工厂,AI Agent方案选型对比 —— 2026制造业智能体落地全景拆解
人工智能·ai·chatgpt·制造
zxd0203111 天前
EFK(Elasticsearch + Fluentd + Kibana) 日志收集系统
运维·docker·jenkins
黑暗中的影子1 天前
N5105 4口2.5g V3 Intel i225 PVE 6.2下的Openclaw安装
ai
终端行者1 天前
Jenkins Pipeline 企业级用法 参数化构建+Ansible发布---上
docker·ansible·jenkins·cicd
Lyon198505281 天前
ChatGPT的最终总结分析-《文字定律》随笔
人工智能·ai·chatgpt
爱编程的小新☆1 天前
LangGraph4j工作流框架
前端·数据库·ai·langchain·langgraph4j
@蔓蔓喜欢你1 天前
Web Components:构建可复用组件的未来
人工智能·ai
庚昀◟1 天前
ClaudeCode安装教程,基础使用、进阶推荐
人工智能·python·ai
Mr_sst1 天前
Codex 部署、使用教程 & Vibe Coding 实战指南
java·ai·语言模型·chatgpt·ai编程
亚空间仓鼠1 天前
Docker容器化高可用架构部署方案(十三)
docker·容器·架构