1. 概述:什么是 Dify?
Dify 是一个开源的 LLM 应用开发平台,旨在帮助开发者快速构建、部署和管理基于大语言模型的 AI 应用。它提供了可视化的编排工具、丰富的模型集成、知识库管理、工作流设计等功能,让开发者无需深入底层代码即可创建复杂的 AI 应用。
核心优势:
- 可视化编排:通过拖拽式界面构建复杂的 AI 工作流。
- 多模型支持:无缝集成 OpenAI、Anthropic、国内主流大模型以及开源模型(如 Llama、Qwen 等)。
- 知识库增强:支持上传多种格式文档,构建私有知识库,实现基于文档的精准问答。
- 应用托管:一键部署为 Web 应用、API 或集成到其他系统。
- 开源可私有化:代码完全开源,支持本地部署,保障数据隐私和安全。
下面是 Dify 本地部署的整体流程图:
2. 部署前准备
2.1 系统要求
- 操作系统:Linux (Ubuntu 20.04+/CentOS 7+)、macOS 或 Windows (WSL2 推荐)。
- Docker & Docker Compose:这是最推荐的部署方式,需提前安装。
- 硬件资源:
- CPU:4 核以上。
- 内存:8 GB 以上(运行大模型或知识库检索需要更多内存)。
- 磁盘空间:至少 20 GB 可用空间。
- 网络:能够访问 Docker Hub 和所需的模型仓库(如 Hugging Face)。
2.2 安装 Docker 和 Docker Compose
如果你的系统尚未安装,请参考以下命令(以 Ubuntu 为例):
# 1. 更新软件包索引并安装必要依赖sudoapt-getupdatesudoapt-getinstallca-certificatescurl# 2. 添加 Docker 官方 GPG 密钥sudoinstall-m0755-d/etc/apt/keyringssudocurl-fsSLhttps://download.docker.com/linux/ubuntu/gpg-o/etc/apt/keyrings/docker.ascsudochmoda+r /etc/apt/keyrings/docker.asc# 3. 添加 Docker APT 仓库echo\"deb [arch=$(dpkg --print-architecture)signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \$(./etc/os-release&&echo"$VERSION_CODENAME")stable"|\sudotee/etc/apt/sources.list.d/docker.list>/dev/null# 4. 更新并安装 Docker 引擎sudoapt-getupdatesudoapt-getinstalldocker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin# 5. 验证安装sudodockerrun hello-world3. 使用 Docker Compose 快速部署
这是最简单、最主流的部署方式。
3.1 下载部署文件
# 创建项目目录并进入mkdirdify-local&&cddify-local# 下载 docker-compose.yml 配置文件curl-odocker-compose.yml https://raw.githubusercontent.com/langgenius/dify/main/docker/docker-compose.yaml# 下载环境变量配置文件curl-o.env https://raw.githubusercontent.com/langgenius/dify/main/docker/.env.example3.2 配置环境变量
编辑.env文件,关键配置项如下:
# 数据库配置(使用内置 PostgreSQL)DB_PASSWORD=your_secure_password_here# 外部访问地址(根据你的网络环境修改)CONSOLE_API_URL=http://localhost:5001CONSOLE_WEB_URL=http://localhost:3000APP_API_URL=http://localhost:5001APP_WEB_URL=http://localhost:3000# 可选:邮件服务配置(用于用户注册/密码重置)# MAIL_TYPE=smtp# MAIL_HOST=smtp.gmail.com# MAIL_PORT=587# MAIL_USER=your_email@gmail.com# MAIL_PASSWORD=your_app_password3.3 启动 Dify 服务
# 在项目目录 (dify-local) 下执行sudodockercompose up-d此命令会拉取镜像并启动所有必需的服务(包括 Web 前端、API 后端、数据库等)。
3.4 访问与初始化
- 等待服务启动:首次启动可能需要几分钟拉取镜像和初始化数据库。
- 访问控制台:在浏览器中打开
http://localhost:3000。 - 初始化管理员账户:首次访问会引导你创建第一个管理员账号。
- 登录并开始使用:使用创建的管理员账号登录,即可进入 Dify 控制台。
4. 配置与调优
4.1 配置模型供应商
进入控制台后,首要任务是配置模型供应商,否则无法创建 AI 应用。
- 点击左下角“设置”->“模型供应商”。
- 选择你需要的模型提供商(如 OpenAI、Azure OpenAI、通义千问、DeepSeek 等)。
- 填入对应的 API Key 和 Base URL(如果需要)。
- 点击“保存”并“校验”。
4.2 配置知识库向量数据库(可选)
Dify 默认使用内置的向量数据库(Weaviate)。对于生产环境或大量文档,建议使用外部向量库。
- 修改
.env文件:# 例如,使用 QdrantVECTOR_STORE=qdrantQDRANT_URL=http://qdrant:6333 - 然后重启服务:
sudo docker compose down && sudo docker compose up -d
4.3 数据持久化与备份
Dify 的 Docker 部署默认将数据(数据库、上传文件、向量数据)存储在命名卷中。建议映射到宿主机目录以便备份。
修改docker-compose.yml,为相关服务添加volumes映射,例如:
services:db:volumes:-./data/pg_data:/var/lib/postgresql/datastorage:volumes:-./data/storage:/app/storage5. 常见问题与故障排除
5.1 端口冲突
如果 3000 或 5001 端口被占用,可以在.env文件中修改:
CONSOLE_WEB_URL=http://localhost:3001APP_WEB_URL=http://localhost:3001并在docker-compose.yml中修改对应服务的端口映射。
5.2 服务启动失败
- 检查日志:
sudo docker compose logs [service_name],例如sudo docker compose logs api。 - 常见原因:
- 内存不足:尝试增加系统 Swap 空间或关闭其他占用内存的应用。
- 网络问题:确保能正常访问 Docker Hub 和 GitHub。
- 数据库初始化失败:尝试删除数据卷重新启动 (
sudo docker compose down -v,然后重新up -d)。
5.3 更新 Dify 版本
# 进入项目目录cddify-local# 拉取最新的镜像sudodockercompose pull# 重启服务sudodockercompose up-d# 执行数据库迁移(如果需要,通常会自动进行)sudodockercomposeexec-Tapi flask db upgrade5.4 常见故障排查速查表
| 故障现象 | 可能原因 | 排查命令 / 方法 | 解决方案 |
|---|---|---|---|
| 服务启动后无法访问控制台 | 端口未映射或防火墙拦截 | sudo docker compose ps | 检查端口映射,放行 3000/5001 端口 |
| API 返回 502 Bad Gateway | API 服务未就绪或崩溃 | sudo docker compose logs api | 等待初始化完成,或重启 api 服务 |
| 数据库连接失败 | PostgreSQL 未启动或密码错误 | sudo docker compose logs db | 核对.env中DB_PASSWORD,重建数据卷 |
| 模型调用报错 | API Key 无效或网络不通 | 控制台「模型供应商」页校验 | 重新填写 Key,检查网络代理设置 |
| 上传文档后知识库检索无结果 | 向量数据库未正确配置 | sudo docker compose logs worker | 检查VECTOR_STORE配置并重启 |
| 磁盘空间不足 | 镜像或日志堆积 | sudo docker system df | 清理无用镜像与日志:docker system prune |
6. 进阶部署方式
6.1 使用 Kubernetes 部署
对于生产级高可用部署,推荐使用 Kubernetes。Dify 官方提供了 Helm Chart。
# 添加 Helm 仓库helm repoadddify https://langgenius.github.io/dify-helm# 安装 Difyhelminstalldify dify/dify-ndify --create-namespace-fvalues.yaml你需要准备一个自定义的values.yaml文件来配置数据库、存储、模型等。
6.2 从源码构建
适合开发者进行二次开发或深度定制。
# 克隆仓库gitclone https://github.com/langgenius/dify.gitcddify# 后端启动cdapi&&pipinstall-rrequirements.txt flask run--host=0.0.0.0--port=5001# 前端启动(另一个终端)cdweb&&npminstall&&npmrun dev6.3 部署方式对比
| 部署方式 | 难度 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|---|
| Docker Compose | ⭐ 低 | 个人开发、中小团队、快速试用 | 部署快、一键升级、资源占用适中 | 单机部署,高可用性有限 |
| Kubernetes (Helm) | ⭐⭐⭐ 高 | 生产环境、大规模集群、高可用要求 | 弹性伸缩、自动容灾、滚动更新 | 运维复杂,需要 K8s 集群 |
| 源码构建 | ⭐⭐ 中 | 二次开发、深度定制、研究源码 | 完全可控、便于调试与修改 | 升级需手动合并,维护成本高 |
选型建议:
- 追求快速上手与低成本 → 选择Docker Compose。
- 面向生产且已有 K8s 基础设施 → 选择Kubernetes。
- 需要修改源码或深度集成 → 选择源码构建。
7. 总结
通过 Docker Compose,你可以在几分钟内完成 Dify 的本地部署,快速拥有一个功能强大的私有 AI 应用开发平台。部署完成后,重点在于配置好模型供应商和知识库,然后就可以开始可视化地构建你的第一个 AI 智能体、聊天应用或工作流了。
对于寻求更高可控性和定制化的用户,可以考虑源码部署或 Kubernetes 部署方案。记得定期关注 Dify GitHub 仓库 的更新,以获取新功能和安全补丁。