Dify 自托管部署指南
Dify 是一个开源的 LLM 应用开发平台,提供直观的界面和强大的 API,帮助开发者快速构建、部署和管理基于大语言模型的应用。
一、功能特性
- 对话应用:创建聊天机器人、客服系统等对话式应用
- 工作流:可视化编排复杂的 AI 工作流程
- 知识库:管理和检索文档、数据等知识资源
- 模型管理:支持多种大语言模型(GPT、Claude、文心一言等)
- API 接口:提供 RESTful API,方便集成到其他系统
- 用户管理:支持多租户、角色权限管理
二、系统要求
| 资源 | 最低要求 | 推荐配置 |
|---|---|---|
| CPU | 2 核 | 4 核及以上 |
| 内存 | 4GB | 8GB 或 16GB(处理大规模文档时) |
| 磁盘 | 20GB | 50GB SSD |
| Docker | ≥ 20.10 | ≥ 24.0 |
三、快速部署
1. 安装依赖
确保已安装以下工具:
- Docker:Windows/macOS 下载 Docker Desktop,Linux 使用系统包管理器安装
- Git:确保 Git 已安装
2. 克隆源码
gitclone https://github.com/langgenius/dify.gitcddify/docker3. 复制配置文件
cp.env.example .env4. 启动容器
dockercompose up-d首次运行会自动拉取镜像,耗时约 5~20 分钟(取决于网络速度)。
5. 访问页面
浏览器打开http://localhost(或你修改的端口),首次进入需设置管理员账号。
四、配置说明
环境变量(.env)
| 变量名 | 说明 | 默认值 |
|---|---|---|
EXPOSE_NGINX_PORT | Nginx 暴露端口 | 80 |
POSTGRES_PASSWORD | PostgreSQL 密码 | 随机生成 |
REDIS_PASSWORD | Redis 密码 | 随机生成 |
SECRET_KEY | 应用密钥 | 随机生成 |
修改端口
如果 80 端口被占用,修改.env文件:
EXPOSE_NGINX_PORT=8088修改数据存储路径
默认 Docker 数据存放在系统盘(通常是 C 盘),建议修改到其他容量更大的磁盘:
- Docker Desktop:Settings → Resources → Advanced → 修改数据存储路径
- Linux:修改 Docker daemon 配置
/etc/docker/daemon.json
五、国内环境优化
配置镜像加速
在 Docker Desktop 设置中添加国内镜像源:
{"registry-mirrors":["https://docker.mirrors.ustc.edu.cn","https://hub-mirror.c.163.com","https://mirror.baidubce.com"]}插件安装
安装大模型插件时网络要求较高,建议开启代理等待插件日志显示Running后再关闭。
六、架构概述
Dify 包含以下核心组件:
| 组件 | 说明 |
|---|---|
| api | 后端 API 服务,处理业务逻辑 |
| worker | 异步任务处理器,处理文档解析、模型调用等 |
| frontend | 前端页面,提供用户交互界面 |
| postgres | 关系型数据库,存储应用数据 |
| redis | 缓存和消息队列 |
| nginx | 反向代理,统一入口 |
七、常见问题排查
容器启动失败
查看容器日志:
dockercompose logs<container_name>端口冲突
确认端口被哪个进程占用:
# Linux/macOSlsof-i:80# Windowsnetstat-ano|findstr":80"数据库连接失败
检查.env文件中的数据库配置,确保POSTGRES_PASSWORD和REDIS_PASSWORD正确。
插件安装超时
开启网络代理后重试,或手动下载插件镜像。
八、Langfuse 集成
Dify 支持与 Langfuse 集成,实现调用追踪和性能分析:
- 部署 Langfuse 并获取 API Key
- 在 Dify 工作流中点击「监测」→ 选择「Langfuse」
- 配置
public_key、secret_key、host - 验证连接成功后,所有工作流调用将被追踪到 Langfuse
详情参考 Langfuse 说明文档。
九、参考链接
- Dify 官方文档
- Dify GitHub
- Langfuse 集成指南