本地快速部署大语言模型开发平台Dify并实现远程访问保姆级教程

文章目录

    • 前言
    • 1. Docker部署Dify
    • 2. 本地访问Dify
    • 3. Ubuntu安装Cpolar
    • 4. 配置公网地址
    • 5. 远程访问
    • 6. 固定Cpolar公网地址
    • 7. 固定地址访问

前言

本文主要介绍如何在Linux Ubuntu系统使用Docker快速部署大语言模型应用开发平台Dify,并结合cpolar内网穿透工具实现公网环境远程访问本地Dify服务!

Dify 是一款开源的大语言模型(LLM) 应用开发平台。它融合了后端即服务(Backend as Service)和 LLMOps 的理念,使开发者可以快速搭建生产级的生成式 AI 应用。即使你是非技术人员,也能参与到 AI 应用的定义和数据运营过程中。

Dify 是开源的,且支持自部署到本地自己服务器上,打造自己的AI系统应用,由于本地部署后,本地部署限制只能在本地访问,无法实现共享给他人访问,或者自己远程访问,这个时候,要么需要自己有云服务器,或者公网IP,否则无法进行远程访问,但是,如果既没有云服务器和公网IP,我们也想要实现远程访问呢,那么下面介绍一个内网穿透工具,让我们无公网IP无云服务器也可以实现远程访问本地Dify.

本例采用Docker部署,首先设备需要提前安装好Docker 和Docker compos,如没有安装,可以参考docker 官方教程进行安装:Docker 官方安装教程

1. Docker部署Dify

根据官方部署文档,我们克隆官方的docker 文件进行部署,首先进入到local 目录下,执行cd /usr/local,然后执行下面命令克隆下来

sudo git clone https://github.com/langgenius/dify.git

等待拉取完成后,可以看到有个dify文件夹,表示成功拉取下来了

image-20240402123640693

然后我们进入dify文件夹里的docker目录

cd /dify/docker

然后执行docker命令部署运行dify,执行后等待部署完成

sudo docker compose up -d

docker部署运行完成后,我们输入指令sudo docker ps即可看到运行的容器,其中在运行的容器列表可以看到有个nginx的容器,且对外访问的是80端口,这个就是我们外部访问的端口,下面我们进行本地访问测试

image-20240402124022891

2. 本地访问Dify

上面在docker中成功部署且运行后,接下来进行本地访问,上面我们查看到对外访问端口是80,现在我们在外部或者内部访问ubuntu的80端口,即可看到我们本地部署的Dify服务应用,本地访问表示成功了,首次访问需要创建账号!

image-20240402124326533

创建后我们即可成功登录到dify了,具体dify使用方法可以参考dify官方文档.本地访问成功后,下面设置远程也可以访问,下面首先安装cpolar内网穿透工具

image-20240402124451695

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 界面配置即可

image-20240220142041422

4. 配置公网地址

点击左侧仪表盘的隧道管理——创建隧道,创建一个dify的公网http地址隧道!

  • 隧道名称:可自定义命名,注意不要与已有的隧道名称重复
  • 协议:选择http
  • 本地地址:80 (docker部署后对外访问的端口)
  • 域名类型:免费选择随机域名
  • 地区:选择China

点击创建

image-20240402125057790

隧道创建成功后,点击左侧的状态——在线隧道列表,查看所生成的公网访问地址,有两种访问方式,一种是http 和https,两种都可以访问,下面选择其中一种进行远程访问

image-20240402125148467

5. 远程访问

使用上面Cpolar生成的 https公网地址,在任意设备的浏览器进行访问,即可成功看到我们dify的界面,极大的缩小了云服务器那些繁琐的配置,简单几步即可实现无需云服务器,无需公网IP实现远程访问.

image-20240402125353756

小结

为了更好地演示,我们在前述过程中使用了cpolar生成的隧道,其公网地址是随机生成的。

这种随机地址的优势在于建立速度快,可以立即使用。然而,它的缺点是网址由随机字符生成,不太容易记忆(例如:3ad5da5.r10.cpolar.top)。另外,这个地址在24小时内会发生随机变化,更适合于临时使用。

我一般会使用固定二级子域名,原因是我希望将网址发送给同事或客户时,它是一个固定、易记的公网地址(例如:dify.cpolar.cn),这样更显正式,便于流交协作。

6. 固定Cpolar公网地址

由于以上使用cpolar所创建的隧道使用的是随机公网地址,24小时内会随机变化,不利于长期远程访问。因此我们可以为其配置二级子域名,该地址为固定地址,不会随机变化【ps:cpolar.cn已备案】

注意需要将cpolar套餐升级至基础套餐或以上,且每个套餐对应的带宽不一样。【cpolar.cn已备案】

登录cpolar官网,点击左侧的预留,选择保留二级子域名,设置一个二级子域名名称,点击保留,保留成功后复制保留的二级子域名名称

image-20240402125524133

保留成功后复制保留成功的二级子域名的名称

image-20240402125550749

返回登录cpolar web UI管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到所要配置的隧道,点击右侧的编辑

image-20240402125615192

修改隧道信息,将保留成功的二级子域名配置到隧道中

  • 域名类型:选择二级子域名
  • Sub Domain:填写保留成功的二级子域名

点击更新(注意,点击一次更新即可,不需要重复提交)

image-20240402125642716

更新完成后,打开在线隧道列表,此时可以看到公网地址已经发生变化,地址二级名称变成了我们自己设置的二级子域名名称

image-20240402125726835

7. 固定地址访问

最后,我们使用固定的公网https地址访问,可以看到同样访问成功,这样一个固定且永久不变的公网地址就设置好了,随时随地都可以在公网环境远程访问本地dify服务,无需公网IP,无需云服务器!

image-20240402125808004

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/31338.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习500问——Chapter11:迁移学习(4)

文章目录 11.3.8 流形学习方法 11.3.9 什么是finetune 11.3.10 finetune为什么有效 11.3.11 什么是网络自适应 11.3.12 GAN在迁移学习中的应用 参考文献 11.3.8 流形学习方法 什么是流行学习? 流行学习自从2000年在Science上被提出来以后,就成为了机器…

常见的堆类型,介绍数据结构的存储结构

堆(Heap) 是一种特殊的树形数据结构,通常是一个近似的完全二叉树。它通常用于实现优先队列,其中每个元素都有一个“优先级”。在堆中,父节点的优先级总是大于或等于(在最大堆中)或小于或等于&am…

Java垃圾回收机制的深入解析

Java垃圾回收机制的深入解析 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 在Java编程中,垃圾回收机制(Garbage Collection&#xff…

数据分析:解锁业务洞察与决策优化的关键

数据分析:解锁业务洞察与决策优化的关键 企业面临的最大挑战之一是如何从海量数据中提取有价值的信息,以指导决策和优化业务流程。数据分析作为一门科学和艺术,提供了一套强大的工具和方法,帮助我们理解数据,发现模式…

数据链路层【Linux网络复习版】

目录 一、数据链路层主要解决的是什么问题? 二、什么是以太网? 三、什么是MAC地址? 四、以太网帧的格式是什么? 五、 什么是MTU? 六、MTU和分片 MTU对IP协议的影响? 如何分片? 如何组装&a…

服务器安装JDK,Maven等常用环境

生产环境部署服务器需要安装一些常用工具,下面我就把常用的jdk,maven,node,git的安装方法和步骤演示 一、安装JDK环境 执行如下命令,安装JDK,所有命令都是 复制,粘贴,回车 yum install -y jav…

感恩的力量!美洲杯魔幻提前预告 阿根廷 ——早读(逆天打工人爬取热门微信文章解读)

梅西还能不能提? 引言Python 代码第一篇 洞见 感恩的力量(深度好文)第二篇 视频新闻结尾 引言 早上早起 昨天晚上1点多才睡 这几天都是 明明很早就准备上床睡觉 但是就是忍不住 吃根雪糕 喝个小饮料 看看最近的欧洲杯比赛 卒 真的是拖延症十…

Linux系统资源监控nmon工具下载及使用介绍

一、资源下载 夸克网盘链接:https://pan.quark.cn/s/2684089bc34d 里面包含了各种分享的实用工具,nmon在 Linux服务器监控nmon工具 文件夹内 文件说明: nmon16p_binaries.tar.gz 为最新的nmon官方工具包,支持linux全平台 nmo…

Hibernate 框架进行对象关系映射(ORM)

Hibernate是一个广泛使用的Java对象关系映射(ORM)框架,它通过将Java类与数据库表关联起来,使得开发人员可以使用面向对象的编程方式进行数据库操作。Hibernate的主要目标是消除冗长的JDBC代码和手动处理SQL的需求,从而…

【Agent应用】运营数据分析与决策建议

基于ERNIE Bot Agent框架实现运营数据分析与决策建议功能。 请注意!!!填入自己的token才可运行。 可以选择上传自己的数据(Excel表格),或者直接使用示例数据演示。 demo链接:https://aistudi…

数学建模理论学习:线性规划模型

三要素:目标函数、约束条件(s.t.)、决策变量(x) 目标函数:z ax1 bx2 cx3 ... 其中c为一个序列,从左到右依次从x1到xn的系数 解决下面的线性规划问题: % 目标函数系数&#xf…

造价信息网工程造价信息最新明细

提供造价信息网工程造价信息、厂商报价市场价,交通工程造价信息,电网工程造价信息,园林苗木绿化造价信息,工程定额免费资源可在 祖国建材通 www.zgjct.com 查询获取下载 造价信息网工程造价信息更新明细如下: 直辖市 …

深度神经网络——什么是决策树?

概述 决策树 是一种有用的机器学习算法,用于回归和分类任务。 “决策树”这个名字来源于这样一个事实:算法不断地将数据集划分为越来越小的部分,直到数据被划分为单个实例,然后对实例进行分类。如果您要可视化算法的结果&#xf…

基于AI技术的车型识别系统---功能页面

一.主窗口 #创建主窗口 window tk.Tk() window.title("图像目标检测系统") window.geometry(1400x700) # 设置窗口大小1.1画布的宽度为1400像素,高度为700像素,画布是放置在window中 #创建背景画布并使用grid布局管理器 canvas_background…

计算机网络知识点(七)

目录 一、简述浏览器从输入URL到展现页面的全过程 二、简述HTTP和HTTPS的区别 1、HTTP 2、HTTPS 3、区别 三、简述HTTP中的referer头的作用 1、HTTP referer是header的一部分。 2、防盗链 3、防止恶意请求 4、空Referer 5、防御CSRF 四、简述HTTP的方法有哪些 1、…

[大师C语言(第三十四篇)]C语言文件操作背后的技术

C语言提供了一系列标准库函数来处理文件操作,包括文件的打开、读写、关闭等。这些函数使得开发者能够方便地与文件系统交互,进行数据的存储和检索。本文将深入探讨C语言文件操作背后的技术,并通过详细的代码示例来展示这些技术的实际应用。 …

Goroutine和协程的区别

线程 定义:线程是操作系统管理的基本执行单元,一个进程可以包含多个线程。重量级:线程是重量级的操作系统资源,创建和销毁线程的开销较大。内存消耗:每个线程有独立的栈空间(通常为几MB)&#…

WHAT - React 学习系列(一)

官方文档 If you have a lot of HTML to port to JSX, you can use an online converter. You’ll get two things from useState: the current state (count), and the function that lets you update it (setCount). To “remember” things, components use state.To mak…

淘宝卖家为啥不退差价怎么回事 淘宝客服不退差价

今天给各位分享淘宝卖家为啥不退差价怎么回事的知识,其中也会对淘宝客服不退差价进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧! [1] 拼多多商家不给差价怎么办 首先大家要跟商家进行商量&#…

LVS(Linux Virtual Server)集群,(1)NAT模式

Cluster:集群,为了解决某个特定问题将多台计算机组合起来形成的单个系统。 集群分为三种类型: LB(Load Balancing),负载均衡,多个主机组成,每个主机只承担一部分访问请求 HA(High Availiablity)&#xf…