最近好多朋友私信问我同一件事:Dify 到底怎么装?尤其是第一次接触 LLM 应用开发的同学,往往在“环境准备”这一步就卡住了。我特别理解这种挫败感——Dify 官方文档写得不算差,但它默认你懂 Docker、懂 Git、懂环境变量,而这些前置知识恰恰是新手最容易栽跟头的地方。这篇文章不打算复述官方 README,而是把我自己从零到一部署 Dify 的完整过程扒开来讲:每一步命令为什么要执行、配置文件里每个变量改的是什么、启动失败时该看哪个日志、以后想升级怎么操作。内容同时覆盖 Windows 和 Linux 两种场景,不管你是想在笔记本上本地体验,还是打算部署到云服务器当团队平台,照着走基本都能顺利落地。
我还会把一些网上搜不到的细节补上,比如 .env 里容易忽略的 SECRET_KEY、向量数据库的选型逻辑、以及用 Ollama 接本地模型的设置方法。当然,实操中肯定有坑,我也会把踩坑记录整理成排查清单,帮你避开我当初折腾过的那些弯路。
1. 动手之前:理解 Dify 的部署逻辑与资源清单
很多人在安装 Dify 时失败,不是因为命令敲错了,而是根本没搞懂自己到底在装什么。Dify 不是一个单文件程序,它是一组服务的组合,需要 Docker 这样的容器编排工具把它们一起拉起来。先把这一点弄清楚,后面遇到任何报错都不会懵。
1.1 Dify 是什么、安装它到底装了哪些东西
Dify 是一个开源的大语言模型(LLM)应用开发平台。你可以把它理解成一个“AI 应用工作台”:在网页界面上拖拽节点就能编排 Prompt、搭建工作流、挂知识库、创建 Agent,还能统一管理多家模型厂商的 API Key。它内置了模型管理、数据集管理、日志分析、API 发布等能力,省掉了从零搭后端的巨大工作量。
当你执行安装命令之后,Dify 并不是启动一个进程,而是会按照编排文件拉起一整套互相协作的容器服务。典型的服务包括:
- api:后端 API 服务,负责业务逻辑、鉴权、知识库检索、工作流执行。
- worker:异步任务队列消费者,处理文档索引、数据集切分、批处理任务。
- web:前端界面服务,也就是你浏览器里看到的初始化页面和操作台。
- db:PostgreSQL 数据库,存储用户、应用、工作流配置等元数据。
- redis:缓存与消息队列,支撑 worker 任务分发。
- sandbox:代码执行沙箱,用于安全运行工作流中的 Python/Node 代码节点。
- ssrf_proxy:请求代理服务,防止服务端请求伪造攻击。
- nginx:反向代理入口,统一转发到 web 和 api。
- weaviate / qdrant:向量数据库(二选一),存放知识库的向量化数据。
我第一次部署时看到容器列表也有点头大,后来总结了一句话:只要记住“nginx 是门卫、api 是大脑、db 是记事本、向量库是索引卡”就够用了。排查问题时,顺着这条链路去查日志,基本不会跑偏。
1.2 部署前需要准备的环境清单
先别急着敲命令,对照下面的清单确认一下你的机器是否达标。Dify 对硬件要求其实不高,但太弱跑起来会卡,尤其是知识库切分和模型调用时很吃内存。
| 项目 | 最低要求 | 推荐配置 | 说明 |
|---|---|---|---|
| CPU | 2 核 | 4 核及以上 | 工作流编排、文档处理时 CPU 占用明显 |
| 内存 | 4 GB | 8 GB 或更高 | 全家桶容器加起来大概占 3~4 GB 空闲内存 |
| 磁盘 | 50 GB | 100 GB SSD | Docker 镜像大约 10 GB,知识库和日志会持续增长 |
| Docker | 20.10+ | Docker Desktop 4.x / Docker Engine 24.x | 必须支持 docker compose v2 |
| Git | 任意较新版本 | 2.30+ | 用来拉取 Dify 源码仓库 |
| 操作系统 | Windows 10/11、macOS、主流 Linux | Linux 服务器更稳 | Windows 建议开 WSL2 跑 Docker Desktop |
| 网络 | 能正常访问 Docker Hub 和 GitHub | 建议配置镜像加速器 | 拉镜像和源码这两个环节最容易超时 |
很多人忽略端口占用问题。Dify 默认用 80 端口对外提供服务,如果本机 80 端口已经被其他 Web 服务占用,启动后页面会打不开。提前用 netstat -ano | findstr :80(Windows)或 ss -tlnp | grep :80(Linux)检查一下,省得到时候一头雾水。
