目录
一系列部署可参考:Docker+Ollama+Xinference+RAGFlow+Dify+Open webui部署及踩坑问题_ollama 可用的rerank模型-CSDN博客
一、管理员创建多个成员新账号
1.点击个人账户的设置
2. 添加邮箱
3.被邀请人登录
3.在服务器,找到dify下docker的文件夹
cd /data/dify/docker
4.打开环境文件
vim .env
5.编辑环境文件
DB_USERNAME=postgres
DB_PASSWORD=difyai123456
DB_HOST=db
DB_PORT=5432
DB_DATABASE=dify
CERTBOT_EMAIL=123@126.com # 新增的账号,与前面在空格填写的一致
CERTBOT_DOMAIN=10.xx.x.180.com # 如果有公网域名地址,没有的话不用设置
AUTH_TYPE=all //允许公开注册,没有公网域名不用设置
保存退出,esc(:wq退出)
6. 重启docker,生效
docker compose down && docker compose up -d
7.因为没有设置默认密码,所以可以通过重置密码的方式设置新加的账号的密码
docker exec -it docker-api-1 flask reset-password
输入刚刚的账号,再设置密码(密码要求字母+数字+特殊字符)
8.登录账号进来后,需要设置信息,加入团队
9.成员成功登录后,管理员还可以在设置处修改成员的权限
参考:dify社区版添加新成员用户账号(适合公司等内部使用)_dify添加用户-CSDN博客
二、访问dify管理员页面的时候转圈卡住
如图:
F12查看错误码为502:
解决方法:
Dify转圈圈报502错误,是nginx启动太早了,在docker重启nginx服务,或者命令行:docker compose restart nginx
docker compose restart nginx
三、管理员账号输入太多次被锁住,需要等24小时
解决方法:连上 Redis
,删除这个 超时的Key
docker exec -it docker-redis-1 sh
然后输入
redis-cli # 进入命令
keys * # 查看keys
ttl login_error_rate_limit:admin@126.com # 看当前用户还有多少限时
del login_error_rate_limit:admin@126.com # 删除限时
完成后,就可以继续登录了!
四、新用户设置独立的工作空间
1.默认新用户登录后,只能看到管理员的工作空间,没有自己的独立空间。
2.从 docker 更改源代码开启多租户
(1)执行 sudo docker exec -it docker-api-1 /bin/bash
进入容器命令行
sudo docker exec -it docker-api-1 /bin/bash
(2)执行 apt update && apt install -y vim
安装编辑器
apt update && apt install -y vim
(3)执行 vim services/account_service.py
编辑文件增加创建工作区的代码(增加.filter_by(role="owner")
,意思是自己账户下没有工作区的时候就创建一个)
vim services/account_service.py
(4)提示无权限:bash: services/account_service.py: Permission denied
(5) 赋予文件执行权限
chmod +x services/account_service.py
(6)执行 vim services/account_service.py
编辑文件增加创建工作区的代码(增加.filter_by(role="owner")
,意思是自己账户下没有工作区的时候就创建一个)
vim services/account_service.py
(7)执行 vim services/feature_service.py
编辑文件开启创建工作区的开关(将此变量改成True,图中是拷贝了一行再修改的,也可以直接修改)
vim services/feature_service.py
(8)重启容器
sudo docker restart docker-api-1
参考:关于 Dify 平台多租户的几项测试 - 那个白熊 - 博客园
五、Dify 从 0.15.4 升级到 1.1.3
Tip:如果旧的版本里面没有之前的数据和信息,建议是重新从git拉取新的版本,重新部署。如果真的有很多数据需要在原有基础上进行升级,可以参考以下方法。
(一)准备工作
-
备份数据
-
停止当前运行的 Dify 服务,确保数据持久化目录(如 PostgreSQL、Redis 数据卷)已备份,避免升级失败导致数据丢失78。
-
若使用 Docker Compose,可通过以下命令备份数据卷:
docker compose down cp -r /path/to/dify_volumes /path/to/backup/
-
-
检查 Docker 环境
-
确保 Docker 版本兼容性(建议 Docker 20.10+),可通过以下命令升级 Docker(若需要):
curl -fsSL https://get.docker.com/ | sh systemctl restart docker systemctl enable docker:cite[2]:cite[3]:cite[5]
-
(二)升级 Dify 服务
-
更新镜像版本
-
找到
docker compose.yaml所在的目录
vim docker-compose.yaml
-
修改
docker compose.yaml
文件中的 Dify 镜像标签为1.1.3(全部改,图只是示例前两个,其他同理)
: -
services:
dify-web: image: langgenius/dify-web:1.1.3 dify-api: image: langgenius/dify-api:1.1.3
-
如果使用独立容器,需手动拉取新镜像:
docker pull langgenius/dify-web:1.1.3 docker pull langgenius/dify-api:1.1.3
-
-
处理配置变更
-
检查新版 Dify 的配置要求(如新增环境变量或依赖服务),更新
.env
文件或 Docker Compose 配置。例如:# 示例环境变量调整 WORKSPACE_CREATION_FILTER=role=owner
-
-
重启服务
-
使用 Docker Compose 重新启动服务:
docker-compose up -d
-
若直接使用 Docker 命令,需先停止旧容器再启动新容器:
docker stop dify-web dify-api docker rm dify-web dify-api docker run -d --name dify-web --env-file .env langgenius/dify-web:1.1.3 docker run -d --name dify-api --env-file .env langgenius/dify-api:1.1.3
-
(三)验证与调试
-
检查服务状态
-
查看容器日志,确认无报错:
docker logs dify-api docker logs dify-web:cite[6]:cite[7]
-
验证端口和网络连通性:
netstat -tulpn | grep 3000 # Dify 默认端口
-
-
处理常见问题
-
权限问题:若容器启动失败提示权限不足,可尝试添加
--privileged
参数或调整数据卷权限5。 -
依赖服务兼容性:确保 PostgreSQL、Redis 等依赖服务的版本与 Dify 1.1.3 兼容9。
-
(四)回滚方案
若升级失败,可通过以下步骤回退至旧版本:
-
停止新版本容器:
docker-compose down
-
恢复备份的数据卷:
cp -r /path/to/backup/dify_volumes /path/to/original/
-
重新启动旧版本容器:
docker-compose -f docker-compose-v0.15.4.yml up -d
(五)注意事项
-
版本跨度影响:从 0.15.4 到 1.1.3 可能存在较大的架构变化,建议参考 Dify 官方升级文档 获取详细迁移指南5。
-
GPU 支持:若使用 GPU 加速,需确保 Docker 已配置 NVIDIA 运行时(参考
nvidia-container-runtime
安装步骤)5。
通过以上步骤,可安全完成 Dify 的版本升级。若遇复杂问题,建议结合日志和官方社区支持进一步排查。
六、dify建立知识库的时候是用QA分段好还是不使用好?
在Dify中建立知识库时,使用QA分段和不使用QA分段各有优缺点,具体选择哪种方式取决于你的需求和预期效果。
(一)QA分段的优势
- 精准度提升:QA分段模式能够更精准地匹配问题和答案,提供更详细和准确的回答。例如,在处理Kubernetes相关文档时,QA模式能够扩展问题并给出更详细的回答,包括相关概念、组件和功能特点1。
- 知识库构建效率:虽然QA模式需要更多的时间和计算资源,但它能够显著提升知识库的构建质量,特别是在复杂问答场景中表现出色1。
(二)不使用QA分段的优缺点
- 部署和使用简便:不使用QA分段模式,知识库的创建和使用更为简单快捷,适合对响应时间要求不高或资源有限的场景1。
- 处理速度较快:不使用QA分段可以减少处理时间和计算资源消耗,适合对实时性要求较高的应用场景1。
(三)操作步骤和注意事项
- 创建知识库:在Dify中,你可以选择先创建知识库再上传文件,或者直接上传文件后系统会自动创建一个默认知识库2。
- 文档处理:上传文档后需要进行分段和清洗。分段时可以根据自定义标识符进行,分段重叠长度一般设置为分段长度的10-25%,以确保语义连贯和提升召回效果3。清洗文档也很重要,可以使文本更“干净”,提高问答质量3。
- 索引和检索设置:Dify提供多种索引方式,包括高质量模式、经济模式和Q&A模式。高质量模式准确度高但消耗Token较多,经济模式则相反3。检索设置方面,向量检索擅长语义理解,全文检索可以查找任意词汇,混合检索结合了两者的优势3。
七、部署流程
Dify 是一款开源的大语言模型(LLM) 应用开发平台。它融合了后端即服务(Backend as Service)和 LLMOps 的理念,使开发者可以快速搭建生产级的生成式 AI 应用。即使你是非技术人员,也能参与到 AI 应用的定义和数据运营过程中。
项目地址:https://github.com/langgenius/dify 文档地址:https://docs.dify.ai/zh-hans#/
下载对应版本:
https://github.com/langgenius/dify/tags
(一)克隆代码到本地环境
git clone https://github.com/langgenius/dify.git --branch 0.15.4(最新版本)
(二)启动 Dify
-
进入 Dify 源代码的 Docker 目录
cd dify/docker
-
复制环境配置文件
cp .env.example .env
-
启动 Docker 容器
根据你系统上的 Docker Compose 版本,选择合适的命令来启动容器。你可以通过
$ docker compose version
命令检查版本,详细说明请参考 Docker 官方文档:-
如果版本是 Docker Compose V2,使用以下命令:
docker compose up -d
-
如果版本是 Docker Compose V1,使用以下命令:
docker-compose up -d
-
运行命令后,你应该会看到类似以下的输出,显示所有容器的状态和端口映射:
最后检查是否所有容器都正常运行:
docker compose ps
(三)更新 Dify
进入 dify 源代码的 docker 目录,按顺序执行以下命令:
cd dify/docker
docker compose down
git pull origin main
docker compose pull
docker compose up -d
同步环境变量配置 (重要!)
-
如果
.env.example
文件有更新,请务必同步修改你本地的.env
文件。 -
检查
.env
文件中的所有配置项,确保它们与你的实际运行环境相匹配。你可能需要将.env.example
中的新变量添加到.env
文件中,并更新已更改的任何值。
(四)访问 Dify
你可以先前往管理员初始化页面设置设置管理员账户:
# 本地环境
http://localhost/install
# 服务器环境
http://your_server_ip/install
Dify 主页面:
# 本地环境
http://localhost
# 服务器环境
http://your_server_ip
(五)自定义配置
编辑 .env
文件中的环境变量值。然后重新启动 Dify:
docker compose down
docker compose up -d
完整的环境变量集合可以在 docker/.env.example
中找到。
八、Dify集成组件
(一)Dify集成Ollama
1. 打开设置
2. 添加Ollama模型
(二)Dify集成Xinference 排序模型
1. 选择
2.
(三)Dify集成RAGFlow
1. 在RAGFlow中创建新密钥
2. 获取RAGFlow的知识库ID
3. Dify添加外部知识库
(四)Dify集成vLLM
九、Dify案例参考
1. dify案例分享-基于文本模型实现Fine-tune 语料构造工作流_dify 提示词-CSDN博客