Dynadot 搬瓦工 腾讯云

2026 搬瓦工 VPS 部署 Dify AI 应用平台教程:从安装到搭建 RAG 知识库

Sider GigsGigsCloud

本文老唐教大家在搬瓦工 VPS 上部署 Dify —— 一个开源的 AI 应用开发平台。和上一篇教程里的 Open WebUI(纯聊天界面)不同,Dify 的定位是”AI 应用开发平台”,除了对话功能之外,还能搭建 RAG 知识库、AI 智能体(Agent)、可视化工作流等,功能丰富很多。

部署完成后你可以用 Dify 做这些事情:

  • 对接 DeepSeek API 或本地 Ollama 模型,搭建自己的智能问答系统
  • 上传公司文档 / 个人笔记,搭建 RAG 知识库,让 AI 基于你的私有数据回答问题
  • 通过可视化拖拽搭建 AI 工作流,实现自动内容生成、数据处理等
  • 创建 AI 智能体,让模型调用外部工具(搜索、代码执行等)

整个部署过程大约 30 分钟,前提是你已经会用 SSH 连接 VPS 并安装了 Docker。如果还没有装 Docker,请先参考老唐之前的教程:《搬瓦工 VPS 部署 Ollama + Open WebUI 教程》(第二节有 Docker 安装步骤)。

一、VPS 配置要求

Dify 是一套完整的微服务架构,Docker Compose 全套跑起来有 11 个容器(API 服务、Worker、Web 前端、PostgreSQL、Redis、Weaviate 向量数据库、Nginx、沙箱等),内存占用比较大。

用法 最低配置 推荐配置
Dify + 外部 API(不跑本地模型) 2C4G 4C4G
Dify + Ollama 本地 3B 模型 4C4G 4C8G
Dify + Ollama 本地 7B 模型 4C8G 8C8G

Dify 全套容器启动后大约占用 1.6-1.8GB 内存。如果只用外部 API 不跑本地模型,4C4G 就很舒服了。如果想同时跑 Ollama 7B 模型 + Dify,内存占用会接近 7GB,8C8G 是比较稳妥的选择。

关于各配置档位能跑什么,可以参考老唐的详细对比:《2C2G / 4C4G / 8C8G VPS 分别能跑什么 AI 应用?配置选择与性能预估》

VPS 推荐: 搬瓦工 CN2 GIA-E 套餐(线路质量好,延迟低),或腾讯云轻量 4C4G 及以上方案。

搬瓦工 CN2 GIA-E 套餐购买链接

方案内存CPU硬盘流量/月带宽机房价格购买
CN2 GIA-E1GB2核20GB1TB2.5GbpsDC6 CN2 GIA-E
DC9 CN2 GIA
日本软银 JPOS_1
联通荷兰 EUNL_9
圣何塞 CN2 GIA
加拿大 CN2 GIA

DC3 CN2
DC8 ZNET

DC2 QNET
DC4 MCOM
美国弗里蒙特
美国新泽西
美国纽约
荷兰阿姆斯特丹
$49.99/季度
$169.99/年
购买
CN2 GIA-E2GB3核40GB2TB2.5Gbps$89.99/季度
$299.99/年
购买
CN2 GIA-E4GB4核80GB3TB2.5Gbps$56.99/月
$549.99/年
购买
CN2 GIA-E8GB6核160GB5TB5Gbps$86.99/月
$879.99/年
购买
CN2 GIA-E16GB8核320GB8TB5Gbps$159.99/月
$1599.99/年
购买
CN2 GIA-E32GB10核640GB10TB10Gbps$289.99/月
$2759.99/年
购买
CN2 GIA-E64GB12核1280GB12TB10Gbps$549.99/月
$5399.99/年
购买

二、安装 Dify

2.1 克隆代码

Dify 的部署方式和 Open WebUI 不同,不是一条 docker run 命令就行。Dify 使用 Docker Compose 管理多个容器,需要先把代码拉下来。

# 克隆 Dify 代码仓库(获取 main 分支最新代码)
git clone https://github.com/langgenius/dify.git --depth 1
cd dify/docker

--depth 1 表示只克隆最新一次提交,不拉整个历史,节省带宽和磁盘空间。

如果你希望锁定一个特定的稳定版本(推荐生产环境使用):

# 查看最新版本号:https://github.com/langgenius/dify/releases
git clone https://github.com/langgenius/dify.git --branch 1.12.0 --depth 1
cd dify/docker

2.2 配置环境变量

cp .env.example .env

用 vim 或 nano 编辑 .env 文件,主要需要修改以下几项:

vim .env

必改项:

# 安全密钥(务必修改,用于加密 session 和敏感数据)
SECRET_KEY=你的随机字符串

生成一个随机密钥:

openssl rand -base64 42

把生成的字符串填到 SECRET_KEY= 后面(替换掉 .env 中的默认值 sk-9f73s3...)。

如果 VPS 上 80 端口已被其他服务占用(比如 Caddy、Nginx、宝塔面板):

Dify 默认通过自带的 Nginx 监听 80 和 443 端口。如果这些端口已被占用,需要改一下映射端口:

# 将 Dify 的 HTTP 端口改为 8080(或其他空闲端口)
EXPOSE_NGINX_PORT=8080
EXPOSE_NGINX_SSL_PORT=8443

这样 Dify 会监听在 8080 端口,首次配置完成后可以通过 http://你的VPS-IP:8080 访问。后面配好 Caddy 反向代理后,建议把端口绑定到 127.0.0.1(见第六节),避免外网绕过 Caddy 直接访问。

其他可选修改:

# 数据库密码(默认 difyai123456,建议修改)
DB_PASSWORD=你的数据库密码

# Redis 密码(默认 difyai123456,建议修改)
REDIS_PASSWORD=你的Redis密码

注意:如果修改了 REDIS_PASSWORD,必须同时修改 CELERY_BROKER_URL 中的密码,否则 Worker 容器会因 Redis 认证失败而无法启动(知识库索引、异步任务全部依赖 Worker):

# 把 difyai123456 替换成你设置的 REDIS_PASSWORD
CELERY_BROKER_URL=redis://:你的Redis密码@redis:6379/1

2.3 启动 Dify

docker compose up -d

第一次启动需要拉取多个 Docker 镜像(API、Web、PostgreSQL、Redis、Weaviate、Nginx 等),总计约 3-4GB,搬瓦工海外 VPS 几分钟就能下完。

启动完成后查看容器状态:

docker compose ps

正常的话会看到 11 个以上的容器全部是 UpUp (healthy) 状态,包括 apiworkerworker_beatwebplugin_daemondb_postgresredisweaviatenginxssrf_proxysandbox 等。

如果有容器反复重启,用以下命令查看日志排查:

# 查看特定容器的日志
docker compose logs api
docker compose logs worker

常见启动失败原因:内存不足(2C2G 很容易出现)、端口冲突(80 或 443 被占)、磁盘空间不足(Docker 镜像加数据至少需要 10GB 可用空间)。

2.4 首次访问

打开浏览器,访问:

  • 如果没改端口:http://你的VPS-IP
  • 如果改了端口:http://你的VPS-IP:8080

首次访问会进入管理员设置页面,要求填写管理员邮箱和密码。设置完成后登录,就能看到 Dify 的工作台界面了。

三、配置模型

Dify 本身不包含大模型,需要对接外部模型服务。有两种方式:对接云端 API(推荐),或对接本地 Ollama。

3.1 对接 DeepSeek API(推荐)

登录 Dify 后,点击右上角头像 → 设置 → 模型供应商。

在模型供应商列表中找到 DeepSeek,点击进入,填写:

点击保存。保存成功后,创建应用时就可以选择 DeepSeek 的模型了(deepseek-chat 即 DeepSeek-V3,deepseek-reasoner 即 DeepSeek-R1)。

DeepSeek API 价格很便宜,个人日常使用一个月大概几块钱。

3.2 对接其他 API

Dify 内置了几十个模型供应商,常用的几个:

供应商 说明 获取 API Key
DeepSeek 便宜好用,中文能力强 platform.deepseek.com
OpenAI GPT-4o 等,需要海外支付 platform.openai.com
智谱 AI GLM-4 系列,国内付款方便 open.bigmodel.cn
硅基流动 聚合多家模型,有免费额度 siliconflow.cn
百度千帆 文心一言系列 console.bce.baidu.com

在模型供应商页面找到对应的供应商,填入 API Key 即可,不需要手动输入 API Base URL(Dify 已内置)。

3.3 对接本地 Ollama

如果你的 VPS 已经安装了 Ollama 并拉取了模型(参考 Ollama 部署教程),可以在 Dify 中对接本地模型,实现完全私有化部署。

在模型供应商页面找到 Ollama,填写:

字段
Model Name 你拉取的模型名称,比如 deepseek-r1:7b
Base URL http://你的VPS-IP:11434(见下方说明)
Model Type LLM(大语言模型)
Context Length 32768(DeepSeek-R1 的上下文长度)

关于 Base URL 的填法:

Dify 的容器运行在 Docker 网络中,不能直接用 localhost127.0.0.1 访问宿主机的 Ollama。正确的做法是:

  • 方法一(推荐):填写 VPS 的 IP 地址。用 ip addr 命令查看 eth0 上的 IP 地址,填入 http://具体IP:11434(搬瓦工 VPS 上这个就是公网 IP)
  • 方法二:填写 http://host.docker.internal:11434。这在大部分 Linux Docker 环境下可用,但部分旧版 Docker 不支持

前提:Ollama 必须监听 0.0.0.0,否则 Docker 容器无法访问。如果之前按照老唐的 Ollama 教程配置过(OLLAMA_HOST=0.0.0.0),这里直接就能用。

填好后点击保存,Dify 会自动测试连接。如果报错,检查 Ollama 是否在运行以及监听地址是否正确。

3.4 配置系统模型

对接好模型供应商后,还需要在 Dify 中设置默认使用的”系统模型”。

进入 设置 → 模型供应商 → 系统模型设置,配置以下几项:

类型 推荐选择 说明
推理模型 deepseek-chat 或本地 Ollama 模型 所有对话和推理任务使用
Embedding 模型 硅基流动的 BAAI/bge-m3(免费) 知识库向量化需要用到

Embedding 模型用于将文档切片转换成向量。如果你只用 DeepSeek API 没有 Embedding 模型,搭建知识库时会报错。最简单的方案是注册一个硅基流动账号(免费额度够用),把 API Key 填进 Dify,选择 BAAI/bge-m3BAAI/bge-large-zh-v1.5 作为 Embedding 模型。

如果 Ollama 本地也拉了 Embedding 模型(比如 ollama pull nomic-embed-text),也可以在 Ollama 供应商下添加一个 Text Embedding 类型的模型。

四、创建第一个 AI 应用

模型配好了,来创建一个 AI 应用试试。

4.1 创建聊天助手

  1. 在 Dify 工作台首页,点击 创建应用创建空白应用
  2. 应用类型选择 聊天助手(Chatbot)
  3. 起个名字,比如”老唐的 AI 助手”
  4. 点击创建

进入应用编辑页面后,在右侧的”模型”下拉菜单中选择你配置好的模型(比如 DeepSeek 的 deepseek-chat 或 Ollama 的 deepseek-r1:7b)。

在”提示词”框里可以写系统提示词,比如:

你是一个友好的 AI 助手,擅长回答技术问题。回答尽量简洁明了,使用中文。

点击右侧的”调试与预览”,发送一条消息测试。能正常回复就说明配置成功了。

点击右上角的 发布 按钮,可以获得一个分享链接,发给别人直接使用。

4.2 应用类型说明

Dify 支持多种应用类型:

类型 适合场景
聊天助手(Chatbot) 通用对话、客服、问答
文本生成(Completion) 文章生成、翻译、摘要
Agent(智能体) 需要调用外部工具的复杂任务
工作流(Workflow) 多步骤自动化处理流程

新手建议从聊天助手开始,熟悉之后再尝试工作流和 Agent。

五、搭建 RAG 知识库

RAG(检索增强生成)是 Dify 最有价值的功能之一。简单说就是:上传你自己的文档,让 AI 基于这些文档来回答问题。比如上传公司产品手册,用户问产品问题时,AI 会先从手册里检索相关内容,再结合这些内容生成回答,而不是靠自己”编”。

5.1 创建知识库

  1. 在 Dify 左侧导航栏点击 知识库
  2. 点击 创建知识库
  3. 上传文件(支持 TXT、Markdown、PDF、HTML、DOCX、CSV 等)

老唐以上传一份 Markdown 格式的 VPS 选购指南为例。

5.2 配置索引方式

上传文件后,Dify 会让你配置文档的处理方式:

分段设置:

  • 分段标识符:默认按 \n\n(双换行)分段,适合大部分文档
  • 分段最大长度:默认 500 tokens。技术文档建议改到 800-1000,避免一段话被切断
  • 分段重叠:默认 50 tokens,保持默认即可

索引方式:

  • 高质量模式(推荐):使用 Embedding 模型将文本转为向量,检索效果好,但需要配置 Embedding 模型
  • 经济模式:使用关键词索引,不需要 Embedding 模型,但检索效果差一些

选择高质量模式,Embedding 模型选之前配置好的(比如硅基流动的 BAAI/bge-m3),点击 保存并处理

Dify 会自动对文档进行分段、向量化处理,可能需要几秒到几分钟,取决于文档大小和 Embedding 模型的速度。

5.3 将知识库关联到应用

知识库创建完成后,需要将它关联到你的 AI 应用中:

  1. 回到你之前创建的聊天助手应用
  2. 在左侧编辑页面找到 上下文 区域
  3. 点击 添加,选择你刚才创建的知识库
  4. 检索设置保持默认(向量检索,TopK=3)即可

现在在右侧调试区域提问一个和你上传文档相关的问题,AI 的回复会在底部标注引用来源,说明检索生效了。

5.4 RAG 效果优化建议

如果发现知识库检索效果不理想,可以从以下几个方面优化:

文档质量: 垃圾进垃圾出。文档内容越清晰、结构越规整,检索效果越好。纯扫描件 PDF(图片格式)需要先 OCR 转文字才能被索引。

分段策略: 太短(200 tokens 以下)容易丢失上下文,太长(2000 tokens 以上)容易引入噪声。技术文档一般 800-1000 tokens 比较合适,FAQ 类内容可以每条 Q&A 作为一个段。

检索方式: Dify 支持向量检索、全文检索和混合检索。混合检索(Hybrid)通常效果最好,但需要额外配置全文索引。初期用默认的向量检索就够了。

Embedding 模型: 中文文档建议用中文优化的 Embedding 模型,比如 BAAI/bge-large-zh-v1.5BAAI/bge-m3。英文文档可以用 OpenAI 的 text-embedding-3-small

六、配置域名和 HTTPS(可选但推荐)

和 Open WebUI 一样,Dify 也建议配上域名和 HTTPS,避免明文传输密码和对话内容。

6.1 使用 Caddy 反向代理

如果你已经按照老唐之前的教程安装了 Caddy,直接添加一条配置即可。

先确认 Dify 的 .env 文件中 Nginx 端口不是 80(避免和 Caddy 冲突):

EXPOSE_NGINX_PORT=127.0.0.1:8080
EXPOSE_NGINX_SSL_PORT=127.0.0.1:8443

这里绑定 127.0.0.1 很重要:Docker 发布的端口会绕过 ufw 防火墙规则,如果只写 8080,即使 ufw 没有放行 8080,外网仍然可以直接访问 Dify(跳过 Caddy 的 HTTPS 加密)。绑定 127.0.0.1 后只有本机的 Caddy 能访问,外网必须走 HTTPS。

如果你在第二节初始安装时填的是 EXPOSE_NGINX_PORT=8080(没有 127.0.0.1),现在改过来即可。

修改后需要重启 Dify:

cd ~/dify/docker
docker compose down
docker compose up -d

然后编辑 Caddy 配置文件:

vim /etc/caddy/Caddyfile

添加一段(和之前的 Open WebUI 配置并列):

dify.example.com {
    reverse_proxy localhost:8080
}

重载 Caddy:

systemctl reload caddy

等一两分钟后访问 https://dify.example.com 即可。

6.2 使用 Dify 自带 Nginx

如果 VPS 上没有其他 Web 服务占用 80 端口,也可以直接用 Dify 自带的 Nginx 配置 SSL。不过 Dify 自带的 Nginx 不会自动申请证书,你需要手动把证书文件放到指定目录。相比之下 Caddy 自动证书续签更省心,老唐更推荐 Caddy 方案。

七、日常维护

7.1 更新 Dify

更新方式取决于你当初的克隆方式。

如果当初用的是 git clone --depth 1(克隆 main 分支):

cd ~/dify/docker
docker compose down

cd ..
git pull origin main

cd docker
diff .env .env.example
# 如果有新增变量,手动添加到 .env 中

docker compose up -d

如果当初用的是 --branch 1.12.0(锁定了特定版本):

cd ~/dify/docker
docker compose down

cd ..
# 获取最新版本标签
git fetch --tags --depth 1
# 切换到新版本(替换为实际版本号,从 GitHub Releases 页面查看)
git checkout 1.13.0

cd docker
diff .env .env.example
# 如果有新增变量,手动添加到 .env 中

docker compose up -d

更新前建议先备份数据(见 7.3 节)。 Dify 版本更新偶尔会涉及数据库迁移,虽然一般是自动完成的,但以防万一还是备份一下比较稳妥。

7.2 查看日志

# 查看所有容器日志
docker compose logs -f --tail 100

# 只看 API 服务日志
docker compose logs -f api

# 只看 Worker 日志(异步任务,包括文档索引)
docker compose logs -f worker

7.3 备份数据

Dify 的数据主要存储在 Docker volumes 中(PostgreSQL 数据库、Weaviate 向量数据库、上传的文件等)。备份方法:

cd ~/dify/docker

# 停止服务(确保数据一致性)
docker compose down

# 备份整个 volumes 目录
tar czf ~/dify-backup-$(date +%Y%m%d).tar.gz volumes/

# 重新启动
docker compose up -d

恢复时只需要把 volumes/ 目录还原即可。

7.4 清理磁盘空间

Dify 运行一段时间后,Docker 镜像和日志可能会占用不少空间:

# 清理不再使用的 Docker 镜像
docker image prune -a -f

# 查看磁盘使用情况
df -h
du -sh ~/dify/docker/volumes/*

八、安全加固

项目 操作 说明
修改 SECRET_KEY .env 中设置随机字符串 防止 session 被伪造
修改数据库密码 .env 中修改 DB_PASSWORD 和 REDIS_PASSWORD 默认密码 difyai123456 不安全
端口绑定 127.0.0.1 EXPOSE_NGINX_PORT=127.0.0.1:8080 Docker 端口会绕过 ufw,必须绑定 127.0.0.1
配置 HTTPS Caddy 反向代理 + 自动 SSL 避免明文传输
限制注册 Dify 管理后台可关闭注册 防止他人注册使用你的资源

关于防火墙和 Docker 端口的特别说明: Docker 直接操作 iptables,会绕过 ufw 的规则。这意味着即使你用 ufw 只开放了 22、80、443,Docker 发布的端口(比如 0.0.0.0:8080)仍然可以从外网访问。正确的做法是在 .env 中将端口绑定到 127.0.0.1(如第六节所述),而不是依赖 ufw 来阻挡。好消息是 Dify 的 PostgreSQL(5432)和 Redis(6379)端口默认不对宿主机发布,只在 Docker 内部网络通信,不需要额外处理。

九、常见问题

Q:Dify 和 Open WebUI 有什么区别?应该选哪个?

Open WebUI 是一个纯聊天界面,定位类似 ChatGPT 的前端,部署简单(一个 Docker 容器),适合个人日常对话使用。Dify 是一个完整的 AI 应用开发平台,有知识库、工作流、Agent 等功能,但部署更复杂(11 个容器),资源占用也更高。如果你只是想搭个私人 ChatGPT 聊天用,Open WebUI 足够了。如果你想做更多事情(比如搭建基于公司文档的问答系统、构建自动化工作流),选 Dify。两者也可以同时部署在同一台 VPS 上,互不冲突。

Q:4C4G 的 VPS 能跑 Dify + Ollama 本地模型吗?

只跑 Dify 平台(模型走 API)很轻松,Dify 全套容器占用约 1.6-1.8GB 内存。如果想同时跑 Ollama 本地 3B 模型,总内存占用约 3.8-4.0GB,4C4G 基本吃满,建议加 2GB swap。想跑 7B 模型就至少要 8GB 内存了。

Q:docker compose up -d 报错怎么办?

常见原因:1)Docker Compose 版本太旧,Dify 需要 Docker Compose V2(docker compose 而不是 docker-compose),确认版本:docker compose version;2).env 文件不存在,确认执行了 cp .env.example .env;3)端口冲突,查看报错信息确认是哪个端口被占用;4)磁盘空间不足,用 df -h 检查。

Q:Dify 中添加 Ollama 模型报连接错误?

最常见的原因:1)Ollama 没有监听 0.0.0.0(默认只监听 127.0.0.1),Docker 容器无法访问。参考 Ollama 部署教程第三节 修改监听地址。2)Base URL 填了 localhost127.0.0.1,在 Docker 容器内这指向容器自己而非宿主机。应填 VPS 的实际 IP 或 host.docker.internal

Q:知识库向量化报错”No embedding model configured”?

需要先配置一个 Embedding 模型。最简单的方法:注册硅基流动账号(免费额度),在 Dify 模型供应商中添加硅基流动的 API Key,然后在系统模型设置中选择 BAAI/bge-m3 作为 Embedding 模型。

Q:Dify 可以对接多个模型同时使用吗?

可以。Dify 支持同时配置多个模型供应商,创建应用时可以选择任意已配置的模型。比如你可以同时配 DeepSeek、OpenAI 和本地 Ollama,在不同应用中使用不同的模型,甚至在同一个工作流中串联多个模型。

Q:VPS 重启后 Dify 还在吗?

Docker Compose 启动的容器默认设置了 restart: always,Docker 服务启动后会自动拉起所有 Dify 容器。但如果你手动执行了 docker compose down,重启后不会自动恢复,需要重新 docker compose up -d

十、下一步

Dify 部署好了,接下来可以继续折腾:

搬瓦工新手入门:《搬瓦工新手入门完全指南:方案推荐、机房选择、优惠码和购买教程》

搬瓦工购买教程:《2026 最新搬瓦工购买教程:新用户注册账户、选择套餐、支付宝付款》

Dynadot Hostwinds
赞(0)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《2026 搬瓦工 VPS 部署 Dify AI 应用平台教程:从安装到搭建 RAG 知识库
文章链接:https://oldtang.com/14602.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。