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

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.lryc.cn/news/604369.html

相关文章:

  • 在Trae中使用MoonBit月兔
  • 【编号65】广西地理基础数据(道路、水系、四级行政边界、地级城市、DEM等)
  • 在 Elasticsearch 8.19 和 9.1 中引入更强大、更具弹性和可观测性的 ES|QL
  • Buck的Loadline和DVS区别和联系
  • Jenkinsfile 报错
  • 一篇讲清Redis中常见数据类型的用法
  • Three.js 与 WebXR:初识 VR/AR 开发
  • 国产化再进一步,杰和科技推出搭载国产芯片的主板
  • LoRaWAN协议,提升公用事业能源效率的“隐形引擎”
  • Ubuntu22.04.1搭建php运行环境
  • C++ 高性能容器:ankerl::unordered_dense::map
  • 元码智能“大眼睛”机器人首发,智启生活新纪元!
  • RabbitMQ 发送方确认的两大工具 (With Spring Boot)
  • Metering Solution for Solar + Storage光伏+储能计量解决方案 UL 2735 Certification功率表能源监测电表
  • 第2章 cmd命令基础:常用基础命令(2)
  • c++之基础B之sort排序(第三个参数没有)(第二课)
  • 在macOS上使用VS Code和Clang配置C++开发环境
  • 湖北大学暑期实训优秀作品:面向美丽中国的数据化可视平台
  • 涉及实验(随机分组)的一些概念
  • 【swoole Windows 开发(swoole-cli 开发 hyperf)】
  • 时间序列预测的自回归方法
  • Product Hunt 每日热榜 | 2025-07-30
  • tplink er2260t配置带vlan的pppoe拨号
  • Java学习第八十九部分——“层”(续)
  • 学会使用golang zap日志库
  • 【动态规划算法】斐波那契数列模型
  • 嵌入式开发学习———Linux环境下数据结构学习(五)
  • 服务器与电脑主机的区别,普通电脑可以当作服务器用吗?
  • 从结构到交互:HTML5进阶开发全解析——语义化标签、Canvas绘图与表单设计实战
  • MCP提示词工程:上下文注入的艺术与科学