Linux离网环境部署的Dify1.0+接入离网本地部署的deepseek模型避坑指南
提示:实际尝试了很多方法,均以失败告终,结论是Dify 1.0+对离网部署(信创环境)很不友好,但挺适合有网环境的。自己本机想部署一个作为应用开发还不错,但是离网环境还是多看看网友们的部署情况,找到几个帖子推荐离网部署用Dify 0.15.3版本,准备记完该坑去试试Dify 0.15.5版本哈哈,别问,问就是反骨(活该反复踩坑O(∩_∩)O)!
文章目录
- 前言
- 方式一:离线包安装
- 1、插件本地直接安装法
- 2、离线环境Dify1.0+插件重新打包法
- 3、配置修改法
- 方式二:重新打包插件镜像
- 1、本地有网环境插件安装镜像打包
- 2、离网环境新插件镜像导入及服务重启
- 总结
前言
离网环境:Ubuntu GPU服务器;有网环境:Windows10(我的本机电脑)
4月份开始研究本地部署Dify,准备搭建Dify+deepseek+本地知识库的智能问答模型。由于服务器在内网,一直也是参考离网环境部署的资料。
上一篇我的本机部署成功,也成功接入了我离网环境部署的deepseek模型(URL配置http://ip:11434
);当离网环境Dify部署完成,访问http://ip:80
成功后,以为进度起码完成了50%,后面按有网环境的步骤往下就行,结果卡在了离线环境Dify ollama插件安装,尝试了离线包安装、本地安装插件打包镜像上传两种方式,均不同程度的失败。
方式一:离线包安装
插件安装了两次,第一次安装显示成功,但本地没有插件;再本地上传安装一次,插件有了(就很神奇),在设置中添加模型,保存模型时失败。docker中看了日志,提示是pypi访问失败
的问题,由于Dify中下载的ollama插件存在很多Python库的依赖,而Python很多包是国外源
(离网环境又不能使用魔法o(╥﹏╥)o),所以一直失败,也尝试了离线包采用dify-plugin-repackaging
项目重新打包成新的插件安装包再安装,也失败了,还是报同样的问题。
下面是该方法尝试过程及参考的帖子,大家想尝试的可以看看(可能只是我安装失败,哈哈~)。
1、插件本地直接安装法
部分参考:Dify集成ollama
访问有网环境的Dify服务http://127.0.01:80
(记得先打开docker启动服务),点击工具->Dify市场->模型,选择需要的模型,我这里是ollama,点击模型,选择“安装”按钮旁边的下载图标即可(有网环境点击安装就可以了)。
点击插件->本地插件->安装即可,需要等一会儿,完成会显示成功。
插件有了,开始添加模型,点击右侧用户头像->设置->模型供应厂商->添加模型,配置模型名称、URL。(这里有坑!!在我的有网环境中,到这一步也卡了,主要是模型名称随意起名的问题:模型名称不要填写错误
,因为我用的deepseek32b的模型,所以名称填了deepseek32b,结果报错:An error occurred during credentials validation: API request failed with status code 404: {"error":"model "deepseek32b" not found, try pulling it first"}
;豆老师解答可能是模型原因、可能是名称有误,我的模型正常运行,故可能就是名称了,查了一下自己当时模型部署时起的名称
,改正后就保存成功了!)
查看模型名称,可以在部署模型的离线服务器上执行命令ollama list
我的有网环境配置好后就可以成功使用模型问答了,但是离网环境就是挂在了这步,模型保存失败
,排查下来就是插件的原因。
有网环境部署成功的测试结果如下,和离网环境本地测试对比了一下,效果还不错,速度和离线服务器上差不多,比open webUI好太多了,之前在webUI上,页面加载比较慢,问题回答速度也不太行,模型幻觉严重,后面在离线服务器上的dify接入本地模型后,测试上传文件和建立知识库后的模型工作情况。
离线服务器中运行及退出模型命令(ollama)
# 运行模型
ollama run 模型名称
# 退出问答
/bye 或 Ctrl+d
2、离线环境Dify1.0+插件重新打包法
参考:Dify 实战:纯内网1.0+版本,攻克模型工具插件离线安装难题,链接来源于小红书博主“陆肯”的帮助,非常感谢!
基本就是根据该帖下载 dify-plugin-repackaging
项目(需要使用魔法)做了一遍,该帖up成功了,但是我打包的时候就报错了,提示也是pypi的问题,豆老师让修改 DNS 配置,但是我的服务器只能内网,只能找其他方法了。
3、配置修改法
部分参考:dify1.0.0版本以上添加通过ollama添加模型时无反应或者 internal server error
实践了一下,没解决我的问题。
方式二:重新打包插件镜像
参考:Dify1.X之后内网部署插件如何安装
在本地有网环境的Dify项目中先安装对应的模型插件,再将插件镜像重新打包上传离网环境,重启docker服务,结果离网环境的Dify项目还是识别不到ollama插件。
1、本地有网环境插件安装镜像打包
基本完全参照上面帖子,最后打包镜像有微小区别。
进入项目的plugin_daemon
目录查看是否有插件,参考的博主是dify1.1.2原来没有该目录,教程上写的运行后即有,没有的伙伴可以先运行一下,我的是dify1.1.3
打开有这个目录,但是空目录。
图形界面或命令行启动服务
方式一:命令行
Win+R
输入cmd
打开命令行,进入项目的docker目录cd dify/docker
使用docker ps命令查看是否启动服务
使用docker-compose up -d
命令启动服务,再次查看服务状态,已启动。
方式二:图形界面
桌面打开docker,在images
中查看各个镜像状态,前边圆点空心表示未启动,实心表示已启动,启动服务可以点击对应镜像后边的actions
。启动后容器中也会有相应记录。
浏览器打开127.0.0.1:80
访问本地服务,后续根据“离线包安装”方式中提到的有网环境插件安装、添加模型即可。
插件目录plugin_daemon已存在我们安装的ollama模型插件信息。
打包新的插件镜像
# 关闭服务
docker compose down
# 重新启动服务
docker compose up -d
# 列出正在运行的容器,从中找到 plugin_daemon 服务对应的容器 ID 或名称
docker ps
# 使用 docker commit 命令基于该容器创建新的镜像 <容器ID或名称> 替换成上一步得到的服务对应的ID或完整名称 我用的ID
docker commit <容器ID或名称> langgenius/dify-plugin-daemon:0.0.6-local-25
验证新镜像docker images
,可见新的镜像已存在。
导出镜像,并通过WinSCP上传到离线服务器的dify项目docker目录中
# 导出镜像
docker save 1642c2a6b1fd【镜像images_id】 -o XXX.tar
2、离网环境新插件镜像导入及服务重启
# 关闭服务
docker-compose down
# 查看镜像信息
docker images
# 删除原来的插件镜像 去掉中括号及内容后食用
docker rmi -f【强制删除】 22fe0ebca8ab【镜像images_id】
# 导入镜像
docker load -i dify-25plugin.tar
# 查看镜像信息
docker images
# 修改镜像信息 添加仓库名和标签
docker tag e90cdc3b5f24 langgenius/dify-plugin-daemon:0.0.6-local
重启服务
# 启动服务
docker-compose up -d
# 查看服务状态
docker ps
插件服务启动正常,但是访问http://ip:80
时,没有插件信息,安装失败!
总结
经历以上3大方法及其他尝试后,又找到了其他Dify安装避坑指南的帖子,决定重新出发,下载低版本的Dify继续,等我记坑,下次一定要成功!!O(∩_∩)O哈哈~
参考:本地Dify为什么无法添加Ollama
这个帖子下面的回答,完美阐述了我的心声,扎铁了老心o(╥﹏╥)o~