当前位置: 首页 > ai >正文

dify离线插件打包步骤

目录

  • 背景
  • 步骤
  • 总结

背景

Dify 是一个开源的 AI 应用开发平台 ,让你能轻松搭建各种智能应用,比如聊天机器人、客服助手、文档分析工具等,而不用从零开始写复杂的代码。

今天我们就来看看如何在离线环境安装 Dify 插件。

步骤

  1. 下载 Dify 插件

登录 Dify 界面,进入插件市场,找到要安装的插件

图片

进入详情,点下载。这里下载的插件包一般之后几十KB,直接安装的话,会联网下载依赖包,所以离线服务器不能在这里直接安装。

在这里插入图片描述

  1. 下载打包工具

下载地址:https://github.com/junjiem/dify-plugin-repackaging

这个工具用于重新打包 Dify 插件,它会拉取插件所需的所有第三方库,并重新整合成完整的 Dify 插件包。安装插件时,直接从该包内加载依赖,避免联网下载。

图片

注:工具支持 Linux 和 MacOS,打包机器和目标机器的架构要一样。

  1. 重新打包插件

进入打包工具目录下

cd dify-plugin-repackaging-mainchmod a+x plugin_repackaging.sh# 重新打包 ollama 插件
./plugin_repackaging.sh local ./langgenius-ollama_0.0.6.difypkg

打包完成后会自动生成离线插件包 langgenius-ollama_0.0.6-offline.difypkg,一般有几十到上百兆

4、修改 Dify 配置
Dify 默认只能安装官方的插件,需要关闭这个校验,同时修改 Nginx 上传文件大小上限,修改完重建 Dify 容器。

FORCE_VERIFYING_SIGNATURE=false
PLUGIN_MAX_PACKAGE_SIZE=52428800
NGINX_CLIENT_MAX_BODY_SIZE=500M

5、安装离线包
登录 Dify 界面,进入插件中心,本地安装

选择我们打包的插件安装即可

安装完成,插件右下角会显示本地安装

遇见的一些小问题,如ssl的问题

#!/bin/bash
set -ePYTHON_VERSION=3.11.9
OPENSSL_VERSION=1.1.1wecho "🔧 安装构建依赖..."
yum install -y gcc make wget tar \zlib-devel libffi-devel bzip2-devel xz-devel \readline-devel sqlite-devel ncurses-devel tk-devel gdbm-devel \git patchecho "📥 下载并安装 OpenSSL ${OPENSSL_VERSION}..."
cd /usr/local/src
wget https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz
tar xzvf openssl-${OPENSSL_VERSION}.tar.gz
cd openssl-${OPENSSL_VERSION}./config --prefix=/usr/local/openssl-${OPENSSL_VERSION} --openssldir=/usr/local/openssl-${OPENSSL_VERSION}
make -j$(nproc)
make installecho "✅ OpenSSL 安装完成"# 设置环境变量(当前 shell 生效)
export LD_LIBRARY_PATH=/usr/local/openssl-${OPENSSL_VERSION}/lib:$LD_LIBRARY_PATH
export CFLAGS="-I/usr/local/openssl-${OPENSSL_VERSION}/include"
export LDFLAGS="-L/usr/local/openssl-${OPENSSL_VERSION}/lib"echo "📥 下载并安装 Python ${PYTHON_VERSION}..."
cd /usr/local/src
wget https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}.tgz
tar xzf Python-${PYTHON_VERSION}.tgz
cd Python-${PYTHON_VERSION}./configure \--prefix=/usr/local/python-${PYTHON_VERSION} \--enable-optimizations \--with-openssl=/usr/local/openssl-${OPENSSL_VERSION}make -j$(nproc)
make altinstallecho "✅ Python ${PYTHON_VERSION} 安装完成: /usr/local/python-${PYTHON_VERSION}/bin/python3.11"# 测试 SSL 模块
/usr/local/python-${PYTHON_VERSION}/bin/python3.11 -m ssl || {echo "❌ SSL 模块测试失败"exit 1
}echo "✅ SSL 模块导入成功"
/usr/local/python-${PYTHON_VERSION}/bin/python3.11 -c "import ssl; print(ssl.OPENSSL_VERSION)"
ln -sf /usr/local/python-3.11.9/bin/python3.11 /usr/bin/python
ln -sf /usr/local/python-3.11.9/bin/pip3.11 /usr/bin/pip
python -V      # 应该是 Python 3.11.9
pip -V         # 应该显示 pip 对应 Python 3.11

导入dify插件需要的依赖(可以先下载whl文件,然后pip install *.whl)
https://pypi.org/project/dify_plugin/0.3.5/

在这里插入图片描述

这样再执行打包命令的时候就没问题了

./plugin_repackaging.sh local ./langgenius-ollama_0.0.6.difypkg

大功告成!生成offline 文件就可以倒到内网使用啦~

在这里插入图片描述

总结

为什么不能外网直接下载直接导入内网使用呢?产品这样设计的目的是什么呢?所有现象都要打一问号“?”

插件包含 Python 源码 + 第三方依赖(如 openai、pandas 等)
Dify 无法只靠一份 .py 下载就让插件在内网跑起来
如果 Dify 下载了插件代码,还得自动处理依赖(这就需要联网或本地 PyPI 镜像),这一步平台目前不做。

插件打包时,你自己知道要用哪个版本的依赖、是否需要额外的 wheel 文件
如果平台来帮你打包,就必须有编译环境 + PyPI 镜像 + 模型支持 + 安全沙箱
这对平台来说是一个巨大的维护负担,也会让插件安全性不可控。

未来思考:
官方可以未来提供「插件商店 + 离线导出 .difypkg」

http://www.xdnf.cn/news/16535.html

相关文章:

  • 手撕设计模式——智能家居之外观模式
  • C++线程详解
  • C++11 std::function 详解:通用多态函数包装器
  • 从0开始学习R语言--Day62--RE插补
  • 【ssh】ubuntu服务器+本地windows主机,使用密钥对进行ssh链接
  • Linux常用基础命令
  • 反射核心:invoke与setAccessible方法详解
  • Git 从入门到精通
  • linux命令ps的实际应用
  • SQL注入SQLi-LABS 靶场less26-30详细通关攻略
  • 深入解析Java元注解与运行时处理
  • ​第七篇:Python数据库编程与ORM实践
  • 前缀和-974.和可被k整除的子数组-力扣(LeetCode)
  • [mcp: JSON-RPC 2.0 规范]
  • 机器学习之线性回归——小白教学
  • LRU(Least Recently Used)原理及算法实现
  • 最新优茗导航系统源码/全开源版本/精美UI/带后台/附教程
  • BreachForums 黑客论坛强势回归
  • sqLite 数据库 (2):如何复制一张表,事务,聚合函数,分组加过滤,列约束,多表查询,视图,触发器与日志管理,创建索引
  • JAVA_TWENTY—ONE_单元测试+注解+反射
  • 学习Python中Selenium模块的基本用法(3:下载浏览器驱动续)
  • Seq2Seq学习笔记
  • 前端优化之虚拟列表实现指南:从库集成到手动开发
  • 嵌入式学习日志————TIM定时中断之定时器定时中断
  • Python算法实战:从排序到B+树全解析
  • 算法精讲:二分查找(一)—— 基础原理与实现
  • 自学嵌入式 day37 HTML
  • 信号上升沿时间与频谱分量的关系
  • FastAPI后台任务:异步魔法还是同步噩梦?
  • Simulink建模-Three-Phase V-I Measurement 模块详解