Linux系统安装Dify结合内网穿透实现远程访问本地LLM开发平台

文章目录

    • 前言
    • 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/news/856733.shtml

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

相关文章

【驱动篇】龙芯LS2K0300之驱动示例

实验环境 开发板&#xff1a;龙芯LS2K0300久久派 网络配置&#xff1a;配置好ssh连接&#xff0c;通过网口可以scp文件到开发板&#xff0c;参考前一篇文章 串口配置&#xff1a;通过CH340T模块连接好开发板上的UART0 示例程序 驱动代码 #include <linux/init.h> #…

python数组列表操作简记

python数组列表操作简记 一、python列表、数组增删元素1.1列表增删元素1.2数组增删元素1.2.1array数组1.2.2numpy数组 二、python列表、数组排序2.1列表排序2.1.1数值类型或无数字字符串类型2.1.2数字和字母组成的字符串类型2.1.3多字段类型 2.2数组排序2.2.1array数组2.2.2num…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] API集群访问频次统计(100分) - 三语言AC题解(Python/Java/Cpp)

&#x1f36d; 大家好这里是清隆学长 &#xff0c;一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 &#x1f4bb; ACM银牌&#x1f948;| 多次AK大厂笔试 &#xff5c; 编程一对一辅导 &#x1f44f; 感谢大家的订阅➕ 和 喜欢&#x1f497; &#x1f…

thewall-文件包含-CAP_DAC_READ_SEARCH

thewalleasyAkamai 防火墙、绕过wall、fuzz、文件包含利用、exiftool提权、sudo提权、ssh私钥利用 **后续需要虚拟机的私信我&#xff0c;我会打包进行文章发布链接&#xff0c;请持续关注&#xff01;&#xff01;&#xff01;** 服务探测 ┌──(kali㉿kali)-[~] └─$ su…

C#如何把DLL打包进EXE制作单文件绿色程序

在C#中&#xff0c;将DLL打包进EXE通常涉及到一个过程&#xff0c;这个过程会将DLL的内容和EXE文件结合在一起&#xff0c;使得最终的EXE文件在运行时可以不依赖于外部的DLL文件。这个过程可以通过ILMerge工具或者.NET Core的发布功能来实现。 使用ILMerge ILMerge是一个开源…

Python酷库之旅-第三方库openpyxl(01)

目录 一、 openpyxl库的由来 1、背景 2、起源 3、发展 4、特点 4-1、支持.xlsx格式 4-2、读写Excel文件 4-3、操作单元格 4-4、创建和修改工作表 4-5、样式设置 4-6、图表和公式 4-7、支持数字和日期格式 二、openpyxl库的优缺点 1、优点 1-1、支持现代Excel格式…

前端基础操作1——利用nvm任意切换(管理)node版本

在实际前端项目开发过程中&#xff0c;同时开发多个项目或者切换新项目时&#xff0c;因为node版本问题造成项目无法运行的问题比比皆是&#xff0c;这时候通过nvm管理切换不同版本的node&#xff0c;就能很快进入开发模式&#xff0c;避免因为环境问题浪费大量精力&#xff0c…

安卓系统安装linux搭建随手服务器termux平替软件介绍

引言 旧手机丢可惜&#xff0c;可以用ZeroTermux&#xff08;一款代替termux&#xff09;的超级终端&#xff0c;来模拟Linux&#xff08;甚至你可以模拟Win&#xff0c;只要性能够用&#xff09; ps&#xff1a;此软件只是termux的增强版&#xff0c;相当于增加右边菜单&…

校园任务平台系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;管理员管理&#xff0c;论坛管理&#xff0c;任务咨询管理&#xff0c;用户管理&#xff0c;基础数据管理 前台账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;任务资讯公告&#…

Spring (70)如何在Spring Boot中实现日志管理

在Spring Boot中实现日志管理通常涉及选择合适的日志框架、配置日志记录规则和级别、以及定义输出格式和目的地。Spring Boot默认使用Logback作为日志的实现框架&#xff0c;但也支持其他日志系统如Log4j2和JUL(Java Util Logging)。以下是实现日志管理的几个关键步骤&#xff…

Spring 项目结构和配置详解

Spring 框架是 Java 企业级开发中广泛使用的框架&#xff0c;提供了强大的依赖注入&#xff08;Dependency Injection&#xff09;和面向切面编程&#xff08;AOP&#xff09;功能。一个典型的 Spring 项目结构和配置是至关重要的&#xff0c;本文将详细介绍 Spring 项目的基本…

AGI的多模态融合

在人工智能的宏伟蓝图中&#xff0c;人工通用智能&#xff08;AGI&#xff09;代表着一个集大成者&#xff0c;一个能够理解、学习、适应并执行任何智能任务的系统。随着我们对AGI的探索愈发深入&#xff0c;尤其是在视觉、语言和其他模态的融合上&#xff0c;关于AGI的讨论愈发…

图像分割(三)-RGB转HSV后图像分割方法

常用彩色模型有RGB和HSV模型&#xff0c;有时候在RGB颜色空间进行背景分割比较困难的问题&#xff0c;转换为HSV模型然后对色调和饱和度图像进行处理会得到比较理想的处理结果,下面通过一个实例讲解该方法的MATLAB实现&#xff0c;该方法对其他图像检测也具有一定的参考价值。 …

0620# 手写部分

#手写shared_ptr #include <iostream>template <typename T> class shared_ptr { private:T* ptr; // 原始指针int* ref_count; // 引用计数public:// 构造函数explicit shared_ptr(T* p nullptr) : ptr(p), ref_count(new int(1)) {if (ptr nullptr) {*ref_cou…

React路由笔记(函数组件,自用)

配置 npm i react-router-dom基本使用 目录结构 在src中创建page文件夹放置各页面组件&#xff0c;router中放置路由 1、router中配置路由 在/router/index.js中&#xff0c;使用createBrowserRouter配置路由。 import { createBrowserRouter } from "react-router…

Pure Nature 2 : Mountains

3D样式化的自然环境资源 所有东西都配有预制件,随时可以放在现场。 包含URP版本! 此包包含: 植被 -云杉 -松树 -冷杉 -布什 -蘑菇 -草地 草,树枝,蕨类植物,各种… -鲜花 浆果,胡萝卜,雏菊,浓香,薰衣草,羽扇豆,各种… -蘑菇 岩石 -悬崖 -巨石 -岩石和卵石 -山脉 材料…

webp动图转gif

目录 前言 解决过程 遇到问题 获取duration 前言 上一次我们实现了webp转jpg格式&#xff1a; https://blog.csdn.net/weixin_54143563/article/details/139758200 那么对于含动图的webp文件我们如何将其转为gif文件呢&#xff1f; 之所以会出现这个问题&#xff0c;是因…

【python】PyQt5初体验,窗口等组件开发技巧,面向对象方式开发流程实战

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

哥伦比亚大学突破性的方法- Diffusion Policy:利用Action Diffusion进行视觉运动策略学习

Diffusion Policy&#xff1a;利用Action Diffusion进行视觉运动策略学习 1. 论文概述 这篇论文提出了一种名为Diffusion Policy的新方法&#xff0c;通过将机器人的视觉运动策略表示为条件扩散去噪过程来生成机器人行为。作者在15个不同的机器人操作基准测试任务上对Diffusi…

VR虚拟现实(Virtual Reality)

虚拟现实&#xff08;Virtual Reality&#xff09;是一种通过计算机技术和设备模拟现实世界的环境和体验的技术。它创造了一个虚拟的三维环境&#xff0c;用户可以通过穿戴设备和感应器与该环境进行互动和沉浸。 虚拟现实技术包括以下几个关键组成部分&#xff1a; 头戴设备&a…