概述

Dify 是一个开源的 LLM 应用开发平台。其操作界面融合了 AI 工作流程、RAG 管道、代理、模型管理、可安装性 AI 功能,可视化的工作流,让我们可以轻松在上面构建和测试功能增强的 AI 工作流程,支持非常全面的大模型,实现可以快速从原型到生产。 当我们在本地内网部署 Dify 时,由于一般都缺乏固定的公网 IP,所以我们只能在内网中访问 Dify ,而无法将其分享给朋友、同事访问;内网穿透能很好的帮我们解决这个问题,无需固定 IP ,通过专用域名即可实现任意位置通过公网都能访问到内网中 Dify, 且部署、操作简单、快捷。 本文介绍在 Ubuntu 22.04 系统中,以 Docker 容器的方式部署 Dify 及 ZeroNews 零讯内网穿透。

部署步骤:

第一步: 部署 Dify 应用平台

能正常 SSH 远程连接到 Ubuntu 22.04 系统,并提前安装好 docker 及 docker compose 工具 Dify 应用平台会占用 80 / 443 端口,请确保端口未被占用

下载 Dify 项目

通过 git 在 Dify 的官方 github 仓库下载 Dify 项目
git clone https://github.com/langgenius/dify.git

启动 Dify 相关容器

进入到 Dify 项目根目录下的 docker 目录,该目录下有 docker-compose.yaml 文件,我们执行 docker-compose up -d 启动 Dify 相关容器
docker-compose up -d
img Dify 相关容器部署完成后,我们可以查看已运行的容器
docker compose ps
img

内网访问 Dify 应用平台

在浏览器中,通过 ubuntu 系统的 IP 地址访问 Dify 应用平台 http://{内网 IP} img 首次打开 Dify 平台,需要为 Dify 平台设置管理员,点击登录页下方的 “设置管理员账号” 进入到 管理员账号 设置页面 img 输入管理员账户的 邮箱、用户名及密码,然后点击 “设置”完成管理员账户设置 img 然后通过邮箱登录 Dify 应用平台 img

第二步: 在 Dify 应用平台上,构建大模型应用

Dify 应用平台基础操作

在 Dify 应用平台主界面中,点击 “创建空白应用” 来构建应用 img 选择应用的类型,输入应用名称及描述信息,然后点击 “创建” 完成应用创建 img 选择一个大模型,进行设置就行 img 下面我们部署一个 ollama 本地模型进行测试

部署 ollama 本地模型

安装 Ollama
在 ubuntu 系统通过一条命令部署 ollama 本地模型
curl -fsSL https://ollama.com/install.sh | sh
修改 ollama 的本地监听 IP 地址, 将 Environment=“OLLAMA_HOST=0.0.0.0” 添加到 ollama 的系统服务文件( /etc/systemd/system/ollama.service)中 img 重启 ollama 服务,执行如下命令。
sudo systemctl daemon-reload
sudo systemctl restart ollama
在浏览器中,输入 http://{主机 ip}:11434, 检查 ollama 是否正常运行, 显示 “Ollama is running”, 表示 ollama 运行正常 img
下载大模型
下载大模型,以 llama3.2 为例,下载 llama3.2 模型
ollama run llama3.2
img

第三步: 在 Dify 应用平台上应用 ollama 模型

添加本地 ollama 模型

点击右上角用户的图标,然后点击 “设置”, 进入到 Dify 设置界面 img 在设置窗口中,点击 “模型供应商”, 找到 Ollama , 然后点击 “添加模型” img 在添加 Ollama 模型窗口中, 模式名称输入下载好的 “llama3.2” 模型, 基础 URL 输入 ollama 的地址 http://主机 IP:11434,然后点击保存 img ollama 大模型添加成功后,可以查看添加好的模型 img

添加模型应用

点击 Dify 主页的”仓库空白应用” 来添加 ollama 应用 img 添加一个聊天应用,应用类型选择聊天助手,编排方法默认为基础编排,输入应用名称,如”Chat”,然后点击创建 img 应用创建完成后,即可进行即时对话,如在左边的提示词中输入”中文”, 在右下方的内容输入框中输入 AI img img

第四步: 部署 ZeroNews 内网穿透

我们通过 Docker 容器方式部署 ZeroNews 内网穿透

选择快速开始方式

登录 https://user.zeronews.cc ,在「快速开始」页面,选择 Docker 安装方式,然后选择 ZeroNews 公共仓库(国内),按步骤操作。 img

按步骤运行 ZeroNews 服务

通过以下命令在 ZeroNews 官方仓库下载 ZeroNews 容器镜像
sudo docker pull docker.zeronews.cc/zeronews/zeronews:latest
创建数据目录并启动容器
选择 Docker Run 方式运行,执行如下命令
sudo mkdir -p /opt/zeronews
sudo docker run -d --name zeronews --net host \
  -v /opt/zeronews:/etc/zeronews \
  -e TOKEN=<your token> \
  docker.zeronews.cc/zeronews/zeronews:latest
请复制快速开始页面的 AuthToken 替换 <your token> 占位符。

查看运行中的客户端状态

ZeroNews 容器启动成功后,在 ZeroNews 控制台「关联客户端」页面查看已上线的 ZeroNews 容器设备。

第五步: 为 Dify 添加域名及隧道

为 Dify 平台添加域名

在 ZeroNews 管理平台的「自定义域名」管理界面中,添加域名(以 difyai 为例):
  1. 在「域名类型」中选择「默认域名」,并在「子域名前缀」中输入 difyai,然后点击「域名可用性检测」
  2. 若下方「接入域名」显示为「可注册」,则表示该域名当前可添加使用,点击单选框选择该域名
  3. 点击「提交」,完成域名添加
img

为 Dify 应用平台添加公网隧道

在 ZeroNews 管理平台的 “隧道” 管理界面下,添加隧道
  1. 选择隧道模式
    • 在“隧道模式”下拉框中,保持选择 “标准隧道”
  2. 选择隧道特性
    • 在“隧道特性”下拉框中,选择 “Raw”(这是默认的透传模式)
  3. 配置协议与带宽
    • 隧道协议:选择 “HTTPS”
    • 带宽(Mbps):在输入框中填写所需的带宽数值(例如 1)
  4. 设置公网域名
    • 在“公网域名”选项中,点击选择 “自定义域名”
    • 在下方的“选择自定义域名”下拉框中,选择刚才添加的域名,例如 difyai.hn.takin.cc
  5. 配置内网映射信息
    • 绑定设备:点击下拉框选择需要绑定的在线设备
    • 内网 IP:在输入框中填写内网 IP 地址,例如 127.0.0.1
    • 内网端口:在输入框中填写服务对应的端口号( Dify 应用平台的端口号 80)
  6. 完成添加
    • 点击右下角的 “确认” 按钮即可保存。
创建完成后,就可以在隧道列表看到已经添加好的隧道了。

第六步:通过浏览器公网访问 Dify AI 服务

打开浏览器,输入刚才配置好的隧道地址,就可以访问 Dify AI 服务了。 img 提示:文档截图及示例中的域名、隧道地址可能与您当前实际使用的不一致,请以 ZeroNews 控制台显示的实际地址为准。