Dify本地部署与使用全攻略:从零搭建你自己的AI工作流
说实话,我最开始接触Dify的时候,纯粹是因为受够了各种云端AI平台的限制——数据隐私问题、调用次数计费、模型不能自选……折腾了一圈之后,发现Dify这个开源项目是真的香。下面把我踩过的坑和摸索出来的经验都分享给大家,希望你们少走弯路。
为什么我选了本地部署而不是直接用云服务
Dify,全称"Do It For You",是一个开源的AI工作流构建平台。说白了就是让你用拖拖拽拽的方式,把大模型的能力串成一个完整的应用。
我选本地部署的原因很简单:
- 数据不想出去:公司内部的知识库、客户数据,你敢传到别人的服务器上?
- 想用啥模型就用啥模型:云端平台一般就给你几个选项,本地部署你可以接OpenAI、接DeepSeek、甚至自己跑Ollama拉个开源模型下来
- 省钱:高频调用场景下,按token计费能把你搞破产,自己部署一劳永逸
- 能改代码:源码都在手上,想怎么定制就怎么定制
我之前给公司搭了一个内部知识库问答系统,用的就是Dify,效果出乎意料的好,老板还以为我花了大价钱请人开发的(其实就是我自己撸的)。
部署实战:我踩过的那些坑
先把环境准备好
硬件要求其实不高:
- CPU至少2核
- 内存至少4GB,但我强烈建议8GB以上,不然跑起来会卡
- 硬盘20GB起步
软件方面需要Docker和Docker Compose:
| 1 | |
| 2 | |
| 3 | |
| 4 | |
| 5 | |
| 6 | |
| 7 | |
踩坑提醒:我第一次用的是一台2GB内存的机器,结果启动到一半各种容器OOM挂掉,排查了半天才发现是内存不够。Docker Desktop用户记得在设置里把内存分配调到8GB以上。
拉代码、改配置
| 1 | |
| 2 | |
| 3 | |
| 4 | |
| 5 | |
| 6 | |
| 7 | |
| 8 | |
.env文件里有一大堆配置项,新手直接用默认值就行。但如果你要上生产环境,密码一定要改!我见过太多人直接用默认密码然后被扫的案例了。
启动服务
| 1 | |
| 2 | |
| 3 | |
| 4 | |
| 5 | |
| 6 | |
| 7 | |
| 8 | |
启动之后会拉起13个容器,第一次可能要等几分钟。主要的几个:
- api:后端API服务,处理所有请求
- worker:干活的,处理文档解析、模型推理这种耗时任务
- web:前端页面
- db_postgres:PostgreSQL数据库
- redis:缓存
- weaviate:向量数据库,知识库检索靠它
- nginx:反向代理,统一入口
访问 http://localhost 就能看到Dify的控制台了,第一次会让你设置管理员账号。
又一个坑:我有次在服务器上部署,80端口被nginx占了,Dify的nginx容器起不来。解决办法是改.env里的端口映射,或者把原来的nginx停掉。
模型接入:别只盯着OpenAI
接云端API
进"设置"->"模型供应商",添加你想用的模型。
我个人推荐的组合:
- 主力模型:GPT-4o,综合能力确实强,但贵
- 日常模型:DeepSeek Chat,性价比极高,日常任务完全够用
- 离线模型:Ollama跑本地开源模型,完全不联网
拿DeepSeek举例,在模型供应商里选DeepSeek,填入API Key,选个模型(比如deepseek-chat),验证一下连接就行了。
本地跑模型(Ollama)
这个是我特别想说的,因为很多场景确实需要完全离线:
| 1 | |
| 2 | |
| 3 | |
| 4 | |
| 5 | |
| 6 | |
| 7 | |
| 8 | |
然后在Dify里配置Ollama:
- 模型供应商选"Ollama"
- 基础URL填:
http://host.docker.internal:11434(这个地址是Docker内部访问宿主机的特殊地址,别填成localhost) - 模型名称填:
qwen2.5:7b
大坑警告:很多人填http://localhost:11434发现连不上,那是因为Dify跑在Docker容器里,localhost指的是容器自己,不是宿主机。必须用host.docker.internal或者宿主机的实际IP。我在这卡了快一个小时才反应过来。
动手做几个应用
聊天机器人:5分钟搞定
最简单的入门方式:
- "创建应用" -> 选"聊天助手"
- 起个名字,选个模型
- 写个系统提示词,比如:
| 1 | |
| 2 | |
| 3 | |
- 右边调试区试试效果,觉得OK就发布
工作流编排:这才是Dify的杀手锏
我搭过一个"小红书读书卡片生成器",流程是这样的:
- 开始节点:接收书名和简评
- LLM节点1:生成吸引人的标题和核心观点
- LLM节点2:写适合社交媒体的文案
- 代码节点:格式化输出
- 结束节点:返回最终结果
LLM节点的提示词大概长这样:
| 1 | |
| 2 | |
| 3 | |
| 4 | |
| 5 | |
| 6 | |
| 7 | |
| 8 | |
| 9 | |
把节点之间连线串起来,调试几轮,一个完整的小应用就出来了。整个过程不需要写一行代码(除了代码节点里那点格式化逻辑)。
知识库:企业内部问答的神器
这个功能我用得最多,步骤也不复杂:
- 创建知识库,上传文档(PDF、Word、TXT、Markdown都支持)
- 选择分段策略,我一般用自动分段
- 索引方式选"高质量模式"(基于向量检索)
- 在聊天助手的编排里加上"知识检索"节点,关联这个知识库
实战经验:
- 文档质量很重要,乱七八糟的格式会影响检索效果,上传前先清理一下
- 分段太长太短都不好,500-1000字一段比较合适
- 知识库要定期更新,业务变了文档也要跟着变
- 用"知识库调试"功能多测几轮,看看检索出来的东西是不是你想要的
智能体:让AI自己调工具
Dify的Agent模式可以集成外部工具,比如我搭过一个数据库查询助手:
- 创建Agent类型的应用
- 添加数据库工具,填上连接信息
- 给Agent写个指令,告诉它怎么用SQL查数据
| 1 | |
| 2 | |
- 开启"思考过程",这样用户能看到AI的推理步骤,增加可信度
生产环境:别光能跑就行
性能优化
数据库和Redis的调优很关键:
| 1 | |
| 2 | |
| 3 | |
| 4 | |
Redis内存限制在.env里改:
| 1 | |
| 2 | |
安全问题
这个真的不能马虎:
- 所有默认密码必须改掉
- 配HTTPS,用nginx挂SSL证书
- 只暴露80/443端口,其他服务都放内网
- 定期备份数据库:
| 1 | |
| 2 | |
升级维护
| 1 | |
| 2 | |
| 3 | |
| 4 | |
| 5 | |
| 6 | |
| 7 | |
| 8 | |
| 9 | |
| 10 | |
升级前一定要先备份,别问我怎么知道的。
最后说几句
Dify这个项目真的改变了我对AI应用开发的看法。以前觉得搭一个AI应用得从头写代码,现在用Dify拖拖拽拽就能搞定大部分场景。
几个建议:
- 从简单的聊天助手开始,别一上来就搞复杂工作流
- 多试试不同的模型,不同场景下最优选择不一样
- 关注Dify的MCP协议支持和插件系统,这是未来的方向
- 遇到问题先看官方文档和GitHub Issues,大部分坑前人都踩过了
技术这东西,光看不练永远学不会。建议你现在就拉个Dify下来跑起来,遇到问题再回来翻这篇文章,效果绝对比光看不动手好十倍。