Dify 私有化落地指南:从部署到上线的企业级实践命令清单
Dify 企业级实战方案|附完整命令
在企业级 AI 应用落地过程中,很多团队会遇到类似问题:大模型能力已经具备,但如何快速构建知识库问答、智能客服、内部 Copilot、流程自动化 Agent?如何让业务人员也能参与 AI 应用搭建?如何兼顾私有化部署、数据安全、权限管理、可观测性和后续扩展?
Dify 是目前非常适合企业落地大模型应用的平台之一。它提供了可视化应用编排、Prompt 管理、知识库 RAG、Agent、工作流、模型接入、API 发布等能力,既能帮助技术团队快速构建 AI 应用,也能让业务团队以低代码方式参与应用迭代。
本文将从企业级实战角度,完整介绍 Dify 的部署方案、基础架构、环境准备、Docker Compose 私有化部署、Nginx 反向代理、HTTPS 配置、数据备份、服务升级、常见问题排查以及生产环境优化建议,并附上完整命令,方便直接落地。
一、Dify 企业级应用场景
Dify 不只是一个简单的 AI 聊天工具,它更像是一个企业 AI 应用开发与运营平台。常见落地场景包括:
1. 企业知识库问答
例如将公司制度、产品文档、销售手册、运维文档、研发规范等资料接入 Dify,通过 RAG 检索增强生成,实现内部智能问答。
适合场景:
- HR 制度问答
- IT 运维知识库
- 产品资料问答
- 售前方案助手
- 客服智能回复
- 法务合规查询
2. 智能客服系统
通过 Dify 构建客服机器人,并接入企业官网、微信公众号、企微、钉钉或内部系统,实现自动答疑、工单分流、问题总结等能力。
3. 内部 Copilot
企业可以基于 Dify 构建面向研发、运营、财务、法务、销售等不同岗位的 AI 助手。例如:
- 代码审查助手
- SQL 生成助手
- 周报生成助手
- 合同摘要助手
- 数据分析助手
- 招投标文档助手
4. Agent 和工作流自动化
Dify 支持工作流编排,可以把大模型、条件判断、HTTP 请求、代码节点、知识库检索等能力组合起来,形成自动化业务流程。
例如:
- 自动读取用户问题
- 调用知识库检索相关资料
- 判断问题类型
- 调用外部 CRM 或 ERP API
- 生成标准化回复
- 记录日志或创建工单
二、企业级部署架构设计
企业环境中部署 Dify,通常需要考虑以下几个核心组件:
| 组件 | 说明 |
|---|---|
| Dify API | 后端 API 服务,负责应用管理、会话、工作流等 |
| Dify Web | 前端管理界面 |
| Worker | 异步任务处理,例如文档索引、工作流任务 |
| PostgreSQL | 核心业务数据库 |
| Redis | 缓存和队列 |
| Weaviate / Milvus / Qdrant | 向量数据库,用于知识库检索 |
| Nginx | 反向代理、HTTPS、域名访问 |
| 大模型服务 | OpenAI、Azure OpenAI、通义千问、DeepSeek、智谱、Ollama 等 |
| 对象存储 | 可选,用于文件存储,例如 MinIO、S3 |
企业级建议架构如下:
用户 / 内部系统
|
v
Nginx / SLB
|
v
Dify Web / API
|
+----------------+
| |
v v
PostgreSQL Redis
|
v
Vector DB
|
v
LLM Provider / 私有大模型
如果是生产环境,建议至少满足:
- Dify 服务独立部署
- PostgreSQL 独立数据盘
- Redis 独立服务或容器
- 向量数据库独立持久化
- Nginx 配置 HTTPS
- 定期备份数据库和知识库数据
- 对外 API 增加访问控制
- 日志接入监控系统
三、服务器环境准备
以下以 Ubuntu 22.04 LTS 为例,演示基于 Docker Compose 的私有化部署方案。
1. 推荐服务器配置
测试环境:
CPU:4 核
内存:8 GB
磁盘:100 GB
系统:Ubuntu 22.04
生产环境建议:
CPU:8 核及以上
内存:16 GB / 32 GB 及以上
磁盘:SSD 200 GB 起
系统:Ubuntu 22.04 LTS
如果知识库文档较多,建议单独规划向量数据库和文件存储磁盘。
四、安装基础依赖
1. 更新系统
sudo apt update
sudo apt upgrade -y
2. 安装常用工具
sudo apt install -y \
curl \
wget \
git \
vim \
unzip \
ca-certificates \
gnupg \
lsb-release \
software-properties-common
3. 设置服务器时区
sudo timedatectl set-timezone Asia/Shanghai
timedatectl
五、安装 Docker 和 Docker Compose
1. 卸载旧版本 Docker
sudo apt remove -y docker docker-engine docker.io containerd runc || true
2. 添加 Docker 官方 GPG Key
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
3. 添加 Docker 软件源
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
4. 安装 Docker
sudo apt update
sudo apt install -y \
docker-ce \
docker-ce-cli \
containerd.io \
docker-buildx-plugin \
docker-compose-plugin
5. 启动 Docker
sudo systemctl enable docker
sudo systemctl start docker
sudo systemctl status docker
6. 验证 Docker 版本
docker --version
docker compose version
7. 将当前用户加入 Docker 用户组
sudo usermod -aG docker $USER
执行后重新登录服务器,或者执行:
newgrp docker
验证:
docker ps
六、部署 Dify
1. 拉取 Dify 源码
cd /opt
sudo git clone https://github.com/langgenius/dify.git
sudo chown -R $USER:$USER /opt/dify
cd /opt/dify
如果访问 GitHub 较慢,可以使用代理或镜像源,但生产环境建议以官方仓库为准。
2. 进入 Docker 部署目录
cd /opt/dify/docker
3. 复制环境变量文件
cp .env.example .env
4. 修改环境变量
vim .env
企业部署时,建议重点修改以下配置。
修改访问地址
假设企业内部域名为:
https://dify.example.com
可在 .env 中配置类似参数:
CONSOLE_WEB_URL=https://dify.example.com
APP_WEB_URL=https://dify.example.com
SERVICE_API_URL=https://dify.example.com
修改密钥
查找并修改:
SECRET_KEY=
生成随机密钥:
openssl rand -base64 42
然后写入:
SECRET_KEY=你的随机密钥
修改数据库密码
建议修改 PostgreSQL 密码:
POSTGRES_PASSWORD=请替换为复杂密码
例如生成一个复杂密码:
openssl rand -base64 24
修改 Redis 密码
REDIS_PASSWORD=请替换为复杂密码
配置向量数据库
Dify 默认可使用不同向量数据库,常见选择包括 Weaviate、Qdrant、Milvus 等。初期可先使用默认配置,后续根据数据规模调整。
如果企业知识库规模较大,建议:
- 小规模:Weaviate 或 Qdrant
- 中大规模:Milvus
- 云原生场景:托管向量数据库
七、启动 Dify 服务
1. 拉取镜像并启动
cd /opt/dify/docker
docker compose up -d
2. 查看容器状态
docker compose ps
正常情况下,可以看到多个服务处于 running 状态。
3. 查看日志
查看所有服务日志:
docker compose logs -f
查看 API 服务日志:
docker compose logs -f api
查看 Worker 日志:
docker compose logs -f worker
查看 Web 服务日志:
docker compose logs -f web
4. 初始化访问
如果服务器 IP 为 192.168.1.100,可以先通过:
http://192.168.1.100
或根据 docker compose 暴露端口访问。
首次访问需要创建管理员账号。管理员账号创建完成后,即可进入 Dify 控制台。
八、配置 Nginx 反向代理
生产环境不建议直接通过容器端口访问,应使用 Nginx 统一代理,并配置 HTTPS。
1. 安装 Nginx
sudo apt install -y nginx
2. 启动 Nginx
sudo systemctl enable nginx
sudo systemctl start nginx
sudo systemctl status nginx
3. 创建站点配置
sudo vim /etc/nginx/sites-available/dify.conf
写入以下配置。假设 Dify 在本机运行,并由 Docker 暴露到 127.0.0.1:80,域名为 dify.example.com。
server {
listen 80;
server_name dify.example.com;
client_max_body_size 100M;
location / {
proxy_pass http://127.0.0.1:80;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 3600;
proxy_send_timeout 3600;
}
}
启用站点:
sudo ln -s /etc/nginx/sites-available/dify.conf /etc/nginx/sites-enabled/dify.conf
测试配置:
sudo nginx -t
重载 Nginx:
sudo systemctl reload nginx
九、配置 HTTPS 证书
推荐使用 Let’s Encrypt 免费证书。
1. 安装 Certbot
sudo apt install -y certbot python3-certbot-nginx
2. 申请证书
sudo certbot --nginx -d dify.example.com
根据提示选择是否自动跳转 HTTPS,建议选择强制 HTTPS。
3. 查看证书自动续期
sudo systemctl list-timers | grep certbot
手动测试续期:
sudo certbot renew --dry-run
十、模型接入方案
Dify 支持多种模型服务,企业可根据数据安全、成本、性能选择不同方案。
1. 接入 OpenAI 或 Azure OpenAI
适合海外业务或已具备合规条件的企业。
配置方式:
- 登录 Dify 控制台
- 进入“设置”
- 选择“模型供应商”
- 添加 OpenAI 或 Azure OpenAI
- 填写 API Key、Endpoint、模型名称
2. 接入国产大模型
可接入通义千问、DeepSeek、智谱、月之暗面、百川等模型。企业内部常见方案是使用公有云大模型 API,同时对业务数据进行脱敏处理。
3. 接入本地模型 Ollama
如果企业希望在内网环境运行模型,可以使用 Ollama。
安装 Ollama:
curl -fsSL https://ollama.com/install.sh | sh
启动服务:
ollama serve
拉取模型:
ollama pull qwen2.5:7b
测试模型:
ollama run qwen2.5:7b
如果 Dify 容器需要访问宿主机 Ollama,可在 Dify 模型配置中填写:
http://host.docker.internal:11434
Linux 下如无法解析 host.docker.internal,可以在 docker-compose.yaml 中为相关服务增加:
extra_hosts:
- "host.docker.internal:host-gateway"
修改后重启:
cd /opt/dify/docker
docker compose down
docker compose up -d
十一、知识库 RAG 实战配置
1. 创建知识库
在 Dify 控制台中:
知识库 -> 创建知识库 -> 上传文档 -> 配置分段规则 -> 开始索引
建议文档类型:
- Markdown
- TXT
- Word
- HTML
- CSV
2. 文档切分建议
企业知识库效果好坏,很大程度取决于文档质量和切分策略。
建议:
| 文档类型 | 切分建议 |
|---|---|
| 制度文档 | 按章节切分 |
| 产品手册 | 按功能模块切分 |
| FAQ | 一问一答切分 |
| 技术文档 | 按标题层级切分 |
| 合同文本 | 按条款切分 |
3. 检索参数建议
初期可采用:
Top K:3 - 5
Score Threshold:0.3 - 0.6
如果回答不够全面,可提高 Top K;如果回答经常跑偏,可提高相似度阈值。
4. Prompt 示例
可在应用中配置如下系统提示词:
你是企业内部知识库助手。请严格基于知识库内容回答问题。
如果知识库中没有相关信息,请明确说明“当前知识库中未找到相关内容”,不要编造答案。
回答时请使用简洁、准确、专业的中文。
如涉及流程或步骤,请使用编号列表输出。
十二、API 调用示例
Dify 应用发布后,可以通过 API 与企业系统集成。
1. Chat API 调用示例
curl -X POST 'https://dify.example.com/v1/chat-messages' \
--header 'Authorization: Bearer app-xxxxxxxxxxxxxxxx' \
--header 'Content-Type: application/json' \
--data-raw '{
"inputs": {},
"query": "请介绍一下公司的报销流程",
"response_mode": "blocking",
"conversation_id": "",
"user": "user-001"
}'
2. 流式输出调用
curl -X POST 'https://dify.example.com/v1/chat-messages' \
--header 'Authorization: Bearer app-xxxxxxxxxxxxxxxx' \
--header 'Content-Type: application/json' \
--data-raw '{
"inputs": {},
"query": "请总结产品A的核心优势",
"response_mode": "streaming",
"conversation_id": "",
"user": "user-001"
}'
3. Workflow API 调用示例
curl -X POST 'https://dify.example.com/v1/workflows/run' \
--header 'Authorization: Bearer app-xxxxxxxxxxxxxxxx' \
--header 'Content-Type: application/json' \
--data-raw '{
"inputs": {
"content": "请分析这段客户反馈并给出处理建议"
},
"response_mode": "blocking",
"user": "user-001"
}'
十三、数据备份方案
企业部署最关键的是数据安全。Dify 主要需要备份:
- PostgreSQL 数据
- 向量数据库数据
- 上传文件
.env配置文件docker-compose.yaml- Nginx 配置
- HTTPS 证书
1. 创建备份目录
sudo mkdir -p /backup/dify
sudo chown -R $USER:$USER /backup/dify
2. 备份 PostgreSQL
先查看 PostgreSQL 容器名称:
cd /opt/dify/docker
docker compose ps
执行备份:
docker compose exec db pg_dump -U postgres dify > /backup/dify/dify_db_$(date +%F_%H%M%S).sql
如果数据库名称或用户名不同,请以 .env 中配置为准。
3. 备份 Docker 数据卷
查看数据卷:
docker volume ls
备份整个 Dify Docker 目录和配置:
tar -czvf /backup/dify/dify_config_$(date +%F_%H%M%S).tar.gz /opt/dify/docker
4. 备份 Nginx 配置
sudo tar -czvf /backup/dify/nginx_$(date +%F_%H%M%S).tar.gz /etc/nginx
5. 自动备份脚本
创建脚本:
vim /opt/dify/backup_dify.sh
写入:
#!/bin/bash
set -e
BACKUP_DIR="/backup/dify"
DATE=$(date +%F_%H%M%S)
DIFY_DIR="/opt/dify/docker"
mkdir -p ${BACKUP_DIR}
cd ${DIFY_DIR}
docker compose exec -T db pg_dump -U postgres dify > ${BACKUP_DIR}/dify_db_${DATE}.sql
tar -czf ${BACKUP_DIR}/dify_docker_config_${DATE}.tar.gz ${DIFY_DIR}
sudo tar -czf ${BACKUP_DIR}/nginx_${DATE}.tar.gz /etc/nginx
find ${BACKUP_DIR} -type f -mtime +14 -delete
echo "Dify backup completed at ${DATE}"
授权:
chmod +x /opt/dify/backup_dify.sh
手动执行:
/opt/dify/backup_dify.sh
配置定时任务:
crontab -e
每天凌晨 2 点备份:
0 2 * * * /opt/dify/backup_dify.sh >> /backup/dify/backup.log 2>&1
十四、Dify 升级方案
升级前必须备份。
1. 进入目录
cd /opt/dify
2. 备份配置
cp docker/.env docker/.env.bak.$(date +%F_%H%M%S)
3. 拉取最新代码
git pull
4. 进入 Docker 目录
cd docker
5. 对比环境变量
diff .env.example .env || true
如果新版本增加了环境变量,需要手动补充到 .env。
6. 拉取新镜像并重启
docker compose pull
docker compose down
docker compose up -d
7. 查看状态
docker compose ps
docker compose logs -f
十五、生产环境安全建议
1. 不要暴露数据库端口
PostgreSQL、Redis、向量数据库不应直接暴露到公网。只允许 Dify 内部网络访问。
检查端口:
sudo ss -tunlp
2. 配置防火墙
只开放 SSH、HTTP、HTTPS:
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status
如果 SSH 端口不是 22,请替换成实际端口。
3. 使用强密码
包括:
- Dify 管理员密码
- PostgreSQL 密码
- Redis 密码
- 服务器 SSH 密码或密钥
- 模型服务 API Key
4. 限制控制台访问
如果 Dify 只面向企业内部使用,建议:
- 部署在内网
- 通过 VPN 访问
- 使用堡垒机
- 配置 Nginx IP 白名单
Nginx IP 白名单示例:
location / {
allow 10.0.0.0/8;
allow 192.168.0.0/16;
deny all;
proxy_pass http://127.0.0.1:80;
}
5. 数据脱敏
如果使用外部大模型 API,建议对以下数据进行脱敏:
- 身份证号
- 手机号
- 银行卡号
- 客户姓名
- 合同编号
- 内部机密字段
十六、性能优化建议
1. Worker 扩容
当文档索引、工作流任务较多时,可以增加 Worker 数量。
cd /opt/dify/docker
docker compose up -d --scale worker=3
查看状态:
docker compose ps
2. 调整上传大小
如果上传大文档失败,需要同时检查:
- Dify 环境变量限制
- Nginx
client_max_body_size - 应用内部文件大小限制
Nginx 示例:
client_max_body_size 200M;
重载:
sudo nginx -t
sudo systemctl reload nginx
3. 使用独立数据库
生产环境中,如果用户量较大,不建议长期使用容器内 PostgreSQL。可以迁移到:
- 自建 PostgreSQL 集群
- 云数据库 PostgreSQL
- 高可用 PostgreSQL
4. 使用对象存储
企业文档数量较多时,建议将文件存储切换到:
- MinIO
- AWS S3
- 阿里云 OSS
- 腾讯云 COS
- 华为云 OBS
这样可以降低单机磁盘风险。
十七、常见问题排查
1. 容器启动失败
查看服务状态:
docker compose ps
查看日志:
docker compose logs -f
如果某个服务失败,例如 api:
docker compose logs -f api
2. 页面无法访问
检查 Nginx:
sudo nginx -t
sudo systemctl status nginx
检查端口:
sudo ss -tunlp | grep 80
检查容器:
cd /opt/dify/docker
docker compose ps
3. 知识库索引失败
重点检查:
docker compose logs -f worker
docker compose logs -f api
常见原因:
- Embedding 模型未配置
- API Key 无效
- 文档过大
- 向量数据库异常
- Worker 未正常运行
4. 模型无法调用
检查:
- 模型供应商 API Key 是否正确
- Endpoint 是否配置正确
- 服务器是否能访问外部 API
- 是否被防火墙拦截
- 模型名称是否填写正确
测试网络:
curl -I https://api.openai.com
或测试内部模型接口:
curl http://127.0.0.1:11434/api/tags
5. 磁盘空间不足
查看磁盘:
df -h
查看 Docker 占用:
docker system df
清理无用镜像:
docker image prune -a
清理停止容器:
docker container prune
谨慎清理数据卷:
docker volume prune
注意:docker volume prune 可能删除未使用的数据卷,生产环境务必确认后再执行。
十八、企业落地最佳实践
1. 先从单一高价值场景切入
不要一开始就试图建设“万能 AI 平台”。建议优先选择一个数据边界清晰、业务收益明显的场景,例如:
- 售前资料问答
- 内部制度问答
- 运维知识库助手
- 客服 FAQ 助手
先跑通,再扩展。
2. 建立知识库治理机制
RAG 应用效果不只取决于模型,更取决于知识库质量。企业应建立:
- 文档负责人
- 文档更新周期
- 文档版本管理
- 无效文档清理机制
- 敏感信息审核机制
3. Prompt 模板标准化
建议沉淀企业级 Prompt 模板,例如:
- 问答类模板
- 摘要类模板
- 分类类模板
- 审核类模板
- 数据分析类模板
- 客服回复类模板
4. 加强日志与审计
企业环境中,应关注:
- 谁调用了哪个应用
- 调用了多少次
- 消耗了多少 Token
- 是否出现敏感问题
- 是否有越权访问
- 是否有异常高频调用
5. 控制模型成本
如果使用商业模型 API,需要监控 Token 消耗。可以通过:
- 设置应用调用限额
- 使用更小模型处理简单任务
- 将复杂任务交给高性能模型
- 使用缓存减少重复调用
- 对长文档进行摘要后再调用
十九、完整部署命令速查
下面给出一套从零部署的命令汇总,适合快速执行。
sudo apt update
sudo apt upgrade -y
sudo apt install -y \
curl wget git vim unzip ca-certificates gnupg lsb-release software-properties-common
sudo timedatectl set-timezone Asia/Shanghai
sudo apt remove -y docker docker-engine docker.io containerd runc || true
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y \
docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo systemctl enable docker
sudo systemctl start docker
docker --version
docker compose version
sudo usermod -aG docker $USER
newgrp docker
cd /opt
sudo git clone https://github.com/langgenius/dify.git
sudo chown -R $USER:$USER /opt/dify
cd /opt/dify/docker
cp .env.example .env
openssl rand -base64 42
openssl rand -base64 24
vim .env
docker compose up -d
docker compose ps
docker compose logs -f
Nginx 与 HTTPS:
sudo apt install -y nginx certbot python3-certbot-nginx
sudo systemctl enable nginx
sudo systemctl start nginx
sudo vim /etc/nginx/sites-available/dify.conf
sudo ln -s /etc/nginx/sites-available/dify.conf /etc/nginx/sites-enabled/dify.conf
sudo nginx -t
sudo systemctl reload nginx
sudo certbot --nginx -d dify.example.com
sudo certbot renew --dry-run
防火墙:
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status
备份:
sudo mkdir -p /backup/dify
sudo chown -R $USER:$USER /backup/dify
cd /opt/dify/docker
docker compose exec -T db pg_dump -U postgres dify > /backup/dify/dify_db_$(date +%F_%H%M%S).sql
tar -czvf /backup/dify/dify_config_$(date +%F_%H%M%S).tar.gz /opt/dify/docker
升级:
cd /opt/dify
cp docker/.env docker/.env.bak.$(date +%F_%H%M%S)
git pull
cd docker
diff .env.example .env || true
docker compose pull
docker compose down
docker compose up -d
docker compose ps
docker compose logs -f
二十、总结
Dify 的价值在于,它把大模型应用开发中的模型接入、Prompt 编排、知识库 RAG、Agent、工作流、API 发布等能力进行了平台化封装,使企业能够更快地构建 AI 应用,而不是从零开发一套复杂系统。
对于企业级落地,建议采用以下路径:
- 使用 Docker Compose 快速完成私有化部署;
- 通过 Nginx 和 HTTPS 提供统一安全访问;
- 接入合适的大模型服务;
- 从一个明确业务场景开始建设知识库应用;
- 建立文档治理、权限控制、日志审计和备份机制;
- 随着业务增长,逐步迁移到高可用数据库、对象存储和 Kubernetes 架构。
只要架构规划合理、数据治理到位、场景选择准确,Dify 可以成为企业 AI 应用落地的重要基础设施,帮助企业快速构建真正可用、可管、可持续迭代的智能应用平台。