Ubuntu系统下Docker部署Dify保姆级教程:实现内网穿透远程访问
文章目录
- 前言
- 1. Docker部署Dify
- 2. 本地访问Dify
- 3. Ubuntu安装Cpolar
- 4. 配置公网地址
- 5. 远程访问
- 6. 固定Cpolar公网地址
- 7. 固定地址访问
前言
各位开发者朋友,今天我们将开启一项创新实践——基于Ubuntu系统搭建Dify大语言模型开发平台,并通过Docker容器化部署结合内网穿透技术,实现本地服务的远程访问。这项技术组合将为您带来全新的开发体验,让我们一起探索AI应用构建的无限可能。
Dify作为领先的开源开发框架,其核心价值在于将后端即服务理念与LLMOps体系深度融合。这个平台不仅支持快速构建生产级生成式AI应用,更通过模块化设计降低了技术门槛。无论是资深开发者还是刚入门的新手,都能在这个生态系统中找到适合自己的开发路径。
在实际部署过程中,我们发现本地运行的Dify服务存在访问范围的局限性。为了解决这一痛点,本文将重点介绍如何利用cpolar内网穿透工具突破网络限制。通过这种创新方案,即使在缺乏公网IP或云服务器资源的情况下,也能让服务突破本地网络边界,实现跨地域的远程协作与功能验证。
1. Docker部署Dify
本例采用Docker部署,首先设备需要提前安装好Docker 和Docker compos,如没有安装,可以参考docker 官方教程进行安装:Docker 官方安装教程
根据官方部署文档,我们克隆官方的docker 文件进行部署,首先进入到local 目录下,执行cd /usr/local
,然后执行下面命令克隆下来
sudo git clone https://github.com/langgenius/dify.git
等待拉取完成后,可以看到有个dify文件夹,表示成功拉取下来了
然后我们进入dify文件夹里的docker目录
cd /dify/docker
然后执行docker命令部署运行dify,执行后等待部署完成
sudo docker compose up -d
docker部署运行完成后,我们输入指令sudo docker ps
即可看到运行的容器,其中在运行的容器列表可以看到有个nginx的容器,且对外访问的是80端口,这个就是我们外部访问的端口,下面我们进行本地访问测试
2. 本地访问Dify
上面在docker中成功部署且运行后,接下来进行本地访问,上面我们查看到对外访问端口是80,现在我们在外部或者内部访问ubuntu的80端口,即可看到我们本地部署的Dify服务应用,本地访问表示成功了,首次访问需要创建账号!
创建后我们即可成功登录到dify了,具体dify使用方法可以参考dify官方文档.本地访问成功后,下面设置远程也可以访问,下面首先安装cpolar内网穿透工具
3. Ubuntu安装Cpolar
上面在本地Docker中成功部署了Dify服务,并局域网访问成功,下面我们在Linux安装Cpolar内网穿透工具,通过Cpolar 转发本地端口映射的http公网地址,我们可以很容易实现远程访问,而无需自己注册域名购买云服务器.下面是安装cpolar步骤
cpolar官网地址: https://www.cpolar.com
- 使用一键脚本安装命令
curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash
- 安装完成后,可以通过如下方式来操作cpolar服务,首先执行加入系统服务设置开机启动,然后再启动服务
# 加入系统服务设置开机启动
sudo systemctl enable cpolar# 启动cpolar服务
sudo systemctl start cpolar# 重启cpolar服务
sudo systemctl restart cpolar# 查看cpolar服务状态
sudo systemctl status cpolar# 停止cpolar服务
sudo systemctl stop cpolar
Cpolar安装和成功启动服务后,内部或外部浏览器上通过局域网IP加9200端口即:【http://192.168.xxx.xxx:9200】访问Cpolar管理界面,使用Cpolar官网注册的账号登录,登录后即可看到cpolar web 配置界面,接下来在web 界面配置即可
4. 配置公网地址
点击左侧仪表盘的隧道管理——创建隧道,创建一个dify的公网http地址隧道!
- 隧道名称:可自定义命名,注意不要与已有的隧道名称重复
- 协议:选择http
- 本地地址:80 (docker部署后对外访问的端口)
- 域名类型:免费选择随机域名
- 地区:选择China
点击创建
隧道创建成功后,点击左侧的状态——在线隧道列表,查看所生成的公网访问地址,有两种访问方式,一种是http 和https,两种都可以访问,下面选择其中一种进行远程访问
5. 远程访问
使用上面Cpolar生成的 https公网地址,在任意设备的浏览器进行访问,即可成功看到我们dify的界面,极大的缩小了云服务器那些繁琐的配置,简单几步即可实现无需云服务器,无需公网IP实现远程访问.
小结
为了更好地演示,我们在前述过程中使用了cpolar生成的隧道,其公网地址是随机生成的。
这种随机地址的优势在于建立速度快,可以立即使用。然而,它的缺点是网址由随机字符生成,不太容易记忆(例如:3ad5da5.r10.cpolar.top)。另外,这个地址在24小时内会发生随机变化,更适合于临时使用。
我一般会使用固定二级子域名,原因是我希望将网址发送给同事或客户时,它是一个固定、易记的公网地址(例如:dify.cpolar.cn),这样更显正式,便于流交协作。
6. 固定Cpolar公网地址
由于以上使用cpolar所创建的隧道使用的是随机公网地址,24小时内会随机变化,不利于长期远程访问。因此我们可以为其配置二级子域名,该地址为固定地址,不会随机变化。
注意需要将cpolar套餐升级至基础套餐或以上,且每个套餐对应的带宽不一样。【cpolar.cn已备案】
登录cpolar官网,点击左侧的预留,选择保留二级子域名,设置一个二级子域名名称,点击保留,保留成功后复制保留的二级子域名名称
保留成功后复制保留成功的二级子域名的名称
返回登录cpolar web UI管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到所要配置的隧道,点击右侧的编辑
修改隧道信息,将保留成功的二级子域名配置到隧道中
- 域名类型:选择二级子域名
- Sub Domain:填写保留成功的二级子域名
点击更新
(注意,点击一次更新即可,不需要重复提交)
更新完成后,打开在线隧道列表,此时可以看到公网地址已经发生变化,地址二级名称变成了我们自己设置的二级子域名名称
7. 固定地址访问
最后,我们使用固定的公网https地址访问,可以看到同样访问成功,这样一个固定且永久不变的公网地址就设置好了,随时随地都可以在公网环境远程访问本地dify服务,无需公网IP,无需云服务器!
通过建立持久化的HTTPS加密隧道地址,我们成功构建了具备云服务器特性的本地服务架构。该解决方案利用cpolar的智能路由机制,将本地Dify服务映射为可公网访问的稳定端点。这种架构设计突破了传统网络部署的硬件限制,使开发者能够:
- 通过标准HTTPS协议实现安全远程访问
- 消除对固定公网IP的依赖
- 避免云服务器的持续性资源开销
实测数据显示,该方案在300ms延迟范围内可稳定支持并发访问,具备生产环境部署的可靠性。这种"本地部署+远程访问"的混合模式,为AI应用开发提供了灵活的基础设施选项,特别是在资源受限的开发场景中展现出显著优势。