Dify安装
LiuSovia 化神

Dify安装


1. 认识 Dify

Dify = Backend API + Worker + Web UI + Plugin Runtime 的 LLMOps 平台,提供

  • 可视化 Prompt 编排
  • RAG(知识库)
  • Agent 插件市场
  • 多模型路由(OpenAI / Azure / 本地 llama.cpp / Xinference / Ollama …)

官方仓库:https://github.com/langgenius/dify
官方文档:https://docs.dify.ai


2. 部署拓扑

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
┌---------------------------┐
│ Nginx (80/443) │ 可选,反向代理 + TLS
└------------┬--------------┘

┌------------┴--------------┐
│ Dify Web (Next.js) │ 容器名:dify-web
└------------┬--------------┘

┌------------┴--------------┐
│ Dify API (Python) │ 容器名:dify-api
└------------┬--------------┘

┌------------┴--------------┐
│ Dify Worker (Celery) │ 容器名:dify-worker
└------------┬--------------┘

┌------------┴--------------┐
│ PostgreSQL 15 │ 容器名:dify-db
└------------┬--------------┘

┌------------┴--------------┐
│ Redis 7 │ 容器名:dify-redis
└------------┬--------------┘

┌------------┴--------------┐
│ Weaviate 1.24 │ 容器名:dify-weaviate(默认向量库)
└---------------------------┘

所有组件均提供官方 Docker 镜像,推荐 100% 容器化部署,最低单节点 4C8G 可跑,生产建议 8C32G + GPU(用于 Embedding / LLM 推理)。


3. 前置准备

项目 最低版本 备注
Docker 24.0+ 需同时支持 compose v2
Docker Compose v2.20+ docker compose version 验证
CPU x86_64 ARM64 需自行构建部分镜像
可用端口 80, 443, 5432, 6379, 8080, 5001 可按需改

3.1 系统优化(Linux)

1
2
3
4
5
6
# 1. 内核参数
echo "vm.max_map_count=262144" >> /etc/sysctl.conf
sysctl -p

# 2. 当前用户加入 docker 组(免 sudo)
sudo usermod -aG docker $USER && newgrp docker

4. 一键启动(Docker Compose)

官方维护的 docker-compose.yaml 已包含所有依赖,无需手动安装 PostgreSQL / Redis / Weaviate

4.1 获取编排文件

1
2
3
4
# 任意目录
git clone https://github.com/langgenius/dify.git
cd dify/docker
cp .env.example .env # 后续所有自定义都改这里

4.2 修改必要环境变量

1
2
# 编辑 .env
vim .env

关键字段说明(按需改):

变量 示例值 含义
CONSOLE_API_URL http://localhost:5001 后端地址,Web 会调用
CONSOLE_WEB_URL http://localhost:3000 前端地址,邮件回调用
SERVICE_API_URL http://localhost:5001 插件运行时调用后端
SECRET_KEY openssl rand -base64 42 加密会话,必须修改
INIT_PASSWORD Admin@123 首次登录超管密码
OPENAI_API_KEY sk-xxx 如用 OpenAI 必填
WEAVIATE_VERSION 1.24.1 向量库版本,一般不动
REDIS_PASSWORD redisPASS 给 Redis 加密码
POSTGRES_PASSWORD postgresPASS 数据库密码

SECRET_KEY 必须换! 不改会提示安全警告。

4.3 启动

1
2
3
4
5
# 后台启动所有容器
docker compose up -d

# 查看日志
docker compose logs -f api worker

首次拉镜像约 3-5 GB,网络差可配镜像加速:

1
2
3
4
// /etc/docker/daemon.json
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}

4.4 验证

1
2
3
4
5
6
7
8
9
10
# 1. 容器状态
docker compose ps
# 2. 健康检查
curl http://localhost:5001/health
# 返回 {"status": "ok"}

# 3. 浏览器打开
http://localhost:3000
用户名:admin
密码:刚才 INIT_PASSWORD 设置的值

5. 接入本地模型(以 vLLM 为例)

Dify 不负责跑大模型,只负责路由。
下面把本地 Qwen2.5-32B-Instruct-AWQ 接入 Dify。

5.1 启动 vLLM(OpenAI-Compatible 模式)

1
2
3
4
5
6
7
8
9
# 假设模型已下载到 /data/models/Qwen2.5-32B-Instruct-AWQ
docker run -d --gpus all --name vllm \
-p 8001:8000 \
-v /data/models:/models \
vllm/vllm-openai:latest \
--model /models/Qwen2.5-32B-Instruct-AWQ \
--served-model-name qwen32b \
--trust-remote-code \
--quantization awq

5.2 在 Dify 里添加模型

  1. 右上角头像 → 设置模型供应商
  2. OpenAI-Compatible
    • 名称:qwen32b
    • 服务器 URL:http://host.docker.internal:8001/v1
      (Linux 把 host.docker.internal 换成宿主机 IP 或 172.17.0.1
    • 模型 ID:qwen32b
    • 密钥:随便填(vLLM 不校验收空)
  3. 点击 保存并测试,出现 ✅ 即成功。

5.3 在应用里选用

创建应用 → 右上角 模型 → 选 qwen32b 即可对话。


6. 常见问题速查

现象 日志关键字 解决
页面 502 connect() failed (111: Connection refused) while connecting to upstream api 容器未启动,看 docker compose logs api
知识库索引失败 weaviate: unexpected status code 401 忘了改 WEAVIATE_AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED=false → 改为 true
上传文件 413 client intended to send too large body Nginx 加 client_max_body_size 50M;
本地模型超时 curl: (7) Failed to connect Dify 在容器内访问宿主机端口,需用 host.docker.internal 或宿主机 IP
忘记 admin 密码 docker compose exec api flask reset-password 按提示重设

7. 升级 Dify

1
2
3
4
5
cd dify/docker
git pull origin main
docker compose pull
docker compose down
docker compose up -d

数据库结构会自动迁移(flask-migrate),升级前建议 pg_dump 备份


8. 备份与恢复

1
2
3
4
5
6
7
8
9
# 1. 数据库
docker compose exec -T db pg_dump -U postgres dify > dify.sql

# 2. 向量库
docker compose exec weaviate weaviate-backup --backup-dir /tmp --backup-name bk1
tar zcf weaviate.tar.gz /var/lib/docker/volumes/dify_weaviate_data/_data

# 3. 还原
cat dify.sql | docker compose exec -T db psql -U postgres dify

9. 卸载

1
2
3
cd dify/docker
docker compose down --volumes --remove-orphans
docker rmi $(docker images | grep 'langgenius' | awk '{print $3}')

10. 下一步

  • 给团队配 SSO(支持 SAML / OIDC)
  • 插件开发模式,写 Python 插件 → 参考 官方插件模板
  • 生产环境加 Prometheus + Grafana 监控模板(官方已提供 json)

祝使用愉快,欢迎提 Issue / PR 一起完善 Dify 生态!


 评论
评论插件加载失败
正在加载评论插件