Featured image of post ngrok内网穿透,实现外网访问ChatTTS/Qwen2等大模型应用

ngrok内网穿透,实现外网访问ChatTTS/Qwen2等大模型应用

摘要:我们编写好的应用程序、或者本地部署的大模型,想临时分享给外网访问以进行功能演示,通过ngrok内网穿透软件,可以快速满足我们的需求……

老牛同学在前面的几篇博文中,和大家一起在个人电脑本地部署和体验了ChatTTSQwen2GLM4Llama3等大模型,由于是个人电脑部署,只能在局域网内使用,无法分享到外网。今天我们通过ngrok软件,免费把我们的大模型应用分享出去。

什么是内网穿透

运营商(如:电信、联通等)拉了一根网线到家里路由器并接入互联网(比如IP是:10.25.12.6,它是公网IP),我们个人电脑通过路由器间接接入互联网(比如IP是:192.168.3.27,它是局域网IP),这个通过路由器建立的网络,也就局域网或者内网。外网通过公网IP是无法访问到局域网中的某台计算机,也就是我们个人电脑上部署的应用无法通过外网分享出去。

如果我们在局域网和外网之间,增加一个桥接器,它的作用是类似于链接局域网和外网的通道,外网可通过这通道直接访问到局域网的服务器,这个操作也就是内网穿透

今天我们要介绍的ngrok正是这个桥接通道:我们首先在个人电脑通过ngrok客户端链接ngrok服务器,把我们端口(即应用程序)和ngrok某个域名建立链接;外网访问ngrok的域名,即访问ngrok服务器,服务器请求下发给客户端,即可以实现互相通信。

内网穿透的应用场景

一般情况下,我们想发布我们应用到外网,需要以下步骤:

  1. 在外网有一台服务器(自己拉网线建机房、或者买服务器、或者租云服务器等)
  2. 服务器上安装操作系统,搭建应用程序的运行环境
  3. 在服务器上部署应用程序

这一通操作下来,费用和时间成本都比较高。如果我们只是想短期内把应用程序分享到外网的话,就需要内网穿透了:

  1. 外网临时访问,无长期访问需求,如ChatTTSQwen2GLM4Llama3等我们大模型临时演示
  2. 外面访问的域名无要求,域名只作为每次访问的入口即可
  3. 访问速度要求不高、并发较小,因为注意是应用功能体验

ngrok配置内网穿透(临时域名)

第一步: 登录ngrok官网(https://ngrok.com/download),下载客户端:

下载客户端

老牛同学是Mac电脑,可通过brew直接安装包:brew install ngrok/ngrok/ngrok

安装完成之后,我们就可以用ngrok命令进行后续操作了。

第二步: 登录或者注册ngrok账号(https://dashboard.ngrok.com/login),获取授权码:

登录或者注册

第三步: 登录ngrok后台(https://dashboard.ngrok.com/get-started/your-authtoken),获取和配置ngrok授权码 ngrok config add-authtoken 授权码

配置和重置授权码

Your Authtoken页面,我们可以看到当前授权码、2种配置方式和重置授权码等操作!

第四步: 启动应用程序(老牛同学以ChatTTS文本转语音大模型为例):python ChatTTS-WebUI.py

ChatTTS 开源文本转语音模型本地部署、API使用和搭建WebUI界面

1
2
3
# 前面输出省略
Running on local URL:  http://127.0.0.1:8089
# 后面输出省略

启动成功,可以看到应用程序的端口号:8089(端口号在接下来启动ngrok需要用到)

浏览器打开WebUI:http://127.0.0.1:8089,确认ChatTTS正常启动

ChatTTS启动成功

第五步: 启动ngrok客户端,对外分享ChatTTS大模型应用程序:

上面启动ChatTTS是Web应用(即http协议),且端口号是8089,我们打开Terminal终端,启动ngrok客户端:

1
ngrok http http://127.0.0.1:8089

ngrok客户端

可以看到,ngrok客户端,把我们内网的端口,映射到一个临时域名:https://7715-112-64-61-112.ngrok-free.app

到此,我们就可以在外网通过这个临时域名,来访问我们内网ChatTTS大模型!

每次打开这个域名,均会有如下确认页面,直接点击Visit Site即可,我们也可以通过底部的3种方式消除这个确认页面:

ngrok确认页面

ngrok固定域名内网穿透

通过上面的步骤,我们可以通过临时域名,实现了内网穿透。每次启动ngrok客户端,临时域名都会发生变化,我们也可以进一步通过固定域名实现内网穿透,提升外网访问体验。

第一步: 申请免费的固定域名(每个用户可申请一个免费固定域名),登录ngrok后台,选择Domains菜单;然后点击**+ New Domain**按钮,ngrok分配一个固定的域名,一般为:xxxx.ngrok-free.app格式:

ngrok固定域名

第二步: 首先终止临时域名启动的客户端,然后通过固定域名启动ngrok客户端:ngrok http --domain=xxxx.ngrok-free.app 8089

最后,我们可以在外网通过固定域名访问内网应用程序了!

ngrok内网穿透的用法

上面章节,我们通过ngrokChatTTS的WebUI分享到了外网,除了http协议之外,ngrok还可以支持TLSTCP以下协议:

1
2
3
4
5
# TLS
ngrok tls 80 --terminate-at edge --domain your-name.ngrok.app

# TCP
ngrok tcp 22

欢迎大家尝试,后续若有对应的使用场景,老牛同学在进行分享!


关注本公众号,我们共同学习进步👇🏻👇🏻👇🏻

微信公众号:老牛同学

Qwen2-7B 开源大模型

Qwen2 阿里最强开源大模型(Qwen2-7B)本地部署、API调用和WebUI对话机器人

Llama-3-8B 开源大模型

玩转 AI,笔记本电脑安装属于自己的 Llama 3 8B 大模型和对话客户端

一文彻底整明白,基于 Ollama 工具的 LLM 大语言模型 Web 可视化对话机器人部署指南

基于Llama 3搭建中文版(Llama3-Chinese-Chat)大模型对话聊天机器人

GLM-4-9B 开源大模型

本地部署GLM-4-9B清华智谱开源大模型方法和对话效果体验

ChatTTS 文本转语音模型

ChatTTS 开源文本转语音模型本地部署、API使用和搭建WebUI界面

Stable Diffusion 3 文生图模型

Stable Diffusion 3 文生图“开源英雄”大模型本地部署和使用教程,轻松实现AI绘图自由

大模型应用案例

借助AI大模型,三分钟原创一部儿童故事短视频(附完整操作步骤)

高效编写大模型 Prompt 提示词,解锁 AI 无限创意潜能

Python 小游戏

AI已来,我与AI一起用Python编写了一个消消乐小游戏

Python游戏编程:一步步用Python打造经典贪吃蛇小游戏


邮箱:obullxl@qq.com
QQ:303630027(老牛啊)
微信:imxulin(奔跑的蜗牛)
支付宝:obullxl@163.com