通义千问1.5-1.8B-Chat-GPTQ-Int4 WebUI服务化:内网穿透实现公网安全访问

你在本地或者公司内网,用星图GPU服务器部署好了通义千问的WebUI界面,用起来挺顺手。但有时候,你想临时给同事、朋友或者客户演示一下效果,总不能让他们都挤到你的电脑前,或者要求他们连上公司的内网吧?这确实是个麻烦事。

这时候,“内网穿透”这个小工具就能派上大用场了。简单来说,它就像给你的本地服务装了一个“对外公开的电话号码”,让公网上的用户也能安全地访问到你内网里的WebUI。今天,我们就来手把手教你,如何安全、快速地把部署在星图GPU环境里的通义千问WebUI服务,临时分享到公网上去。整个过程会重点考虑安全性,教你配置访问密码、加密连接,让你分享得放心。

1. 教程目标与准备工作

通过这篇教程,你将学会如何选择合适的内网穿透工具,并完成从内网服务到公网访问的完整配置,重点是做好安全防护。学完后,你就能安全地临时分享你的AI服务了。

在开始之前,你需要准备好以下几样东西:

  1. 一个已经部署好的通义千问WebUI服务:假设它已经在你的星图GPU服务器上运行起来了,本地访问地址是 http://localhost:7860(或具体的IP和端口)。
  2. 一台具有公网IP的服务器(VPS):这是做内网穿透的“中转站”或“桥梁”。你可以在各大云服务商购买,最基础的配置(1核1G)就够用了。记下它的公网IP地址。
  3. 基础的Linux操作知识:需要在服务器上执行一些简单的命令。

为了确保安全,我们这次选择 frp 作为演示工具。它是一个非常流行、开源且功能强大的内网穿透软件,支持Token认证、加密传输等安全特性,完全符合我们的需求。

2. 理解内网穿透与安全核心

在动手之前,我们先花几分钟,把核心概念和为什么要做安全配置搞清楚。

你可以把内网穿透想象成“快递代收点”。你的家(内网服务)没有直接对外的门牌号(公网IP),快递员(公网用户)无法直接送货上门。于是你在小区门口设了一个代收点(具有公网IP的服务器),快递员把包裹送到代收点,再由代收点的工作人员转交给你。frp这类工具,就是那个高效、可靠的“代收点系统”。

既然要把“家门”临时打开,安全锁就必须上好。我们会重点关注三点:

  • 身份验证(Token):就像设置一个共享密码,只有知道密码的人才能使用这个“代收服务”,防止陌生人随意接入。
  • 通信加密(TLS):从“代收点”到你“家”的这段路上,给包裹加上保险箱,确保即使被截获,别人也看不懂里面是什么。
  • 访问限制:可以设置只有特定的人(IP)才能来代收点取件,或者限制取件的频率,避免被过度使用。

理解了这个比喻,接下来的配置步骤就会清晰很多。

3. 在公网服务器上配置frp服务端

我们的第一步,是在那台有公网IP的服务器上搭建好“代收点”(frp服务端)。

通过SSH连接到你的公网服务器,然后执行以下命令:

# 1. 下载frp软件包(请访问frp GitHub仓库获取最新版本链接)
wget https://github.com/fatedier/frp/releases/download/v0.52.3/frp_0.52.3_linux_amd64.tar.gz

# 2. 解压下载的文件
tar -zxvf frp_0.52.3_linux_amd64.tar.gz

# 3. 进入解压后的目录
cd frp_0.52.3_linux_amd64/

接下来,我们需要修改服务端的配置文件 frps.toml。使用 vimnano 编辑器打开它:

vim frps.toml

将文件内容修改为如下所示。这里我们设置了认证令牌、监听端口,并启用了Web管理界面(方便查看状态):

# frps.toml
bindPort = 7000  # frp服务端监听的端口,用于与客户端通信
auth.method = "token"
auth.token = "YourStrongPasswordHere123!"  # 请务必修改成一个强密码

# 启用Web管理界面(可选,便于监控)
webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "admin"
webServer.password = "AnotherStrongPassword!"  # 同样,请修改

保存并退出编辑器。现在,我们可以启动frp服务端了。为了让它在后台持续运行,我们使用 nohup

nohup ./frps -c ./frps.toml > frps.log 2>&1 &

你可以检查一下服务是否成功启动:

# 查看进程
ps aux | grep frps
# 查看日志(如果有错误会在这里显示)
tail -f frps.log

重要安全提醒:确保你的云服务器安全组的防火墙规则,已经放行了我们配置的端口(70007500)。7500是管理界面端口,如果不需要可以不开,但7000是必须的。

4. 在内网机器上配置frp客户端

现在,回到部署了通义千问WebUI的内网机器(星图GPU环境)上,我们来配置“发货方”(frp客户端)。

同样地,下载并解压frp客户端软件。然后,编辑客户端配置文件 frpc.toml

vim frpc.toml

将内容修改如下。你需要将 serverAddr 替换成你公网服务器的IP,auth.token 要和服务端设置的一模一样。

# frpc.toml
serverAddr = "你的公网服务器IP"
serverPort = 7000
auth.method = "token"
auth.token = "YourStrongPasswordHere123!"  # 必须与服务端token一致

[[proxies]]
name = "qwen-webui"
type = "tcp"
localIP = "127.0.0.1"
localPort = 7860  # 这里替换成你的通义千问WebUI实际本地端口
remotePort = 6000  # 在公网服务器上开放的端口,用户将通过这个端口访问

这个配置的意思是:将本机(127.0.0.17860端口上的服务,映射到公网服务器的 6000端口。

保存配置后,启动frp客户端:

nohup ./frpc -c ./frpc.toml > frpc.log 2>&1 &

检查客户端连接状态:

tail -f frpc.log

如果看到 “start proxy success” 类似的字样,说明连接成功了。

5. 配置WebUI基础安全与访问测试

内网穿透通道建立好了,但我们的WebUI本身可能还没有密码。直接暴露出去非常危险。以Gradio为例,我们可以在启动命令中直接加入认证参数。

假设你原来的启动命令类似这样:

python webui.py --model-path /path/to/qwen-1_8b-chat-gptq-int4

你应该将其修改为:

python webui.py --model-path /path/to/qwen-1_8b-chat-gptq-int4 --share --auth username:password

这里的 --auth username:password 就是为Gradio界面添加了账号密码登录。--share 参数是Gradio自带的临时公网分享功能,但其安全性和稳定性不如我们自建的frp方案,所以我们这里主要是用它的认证功能。

现在,进行最终测试:

  1. 在本地浏览器,访问 http://localhost:7860,应该会弹出登录框,输入上面设置的用户名密码即可进入。这证明WebUI本身认证生效了。
  2. 打开另一个浏览器,或者用朋友的电脑,访问 http://你的公网服务器IP:6000。同样应该弹出登录框,登录后就能看到和使用你的通义千问WebUI了!

恭喜你,至此,你已经成功实现了通过内网穿透安全地公网访问。

6. 进阶安全加固建议

上面的流程已经提供了基本的安全保障。如果你需要更高级别的防护,可以考虑以下几点:

  • 使用HTTPS加密(推荐):上述配置是HTTP通信。要升级为HTTPS,你需要一个域名和SSL证书(可以使用Let‘s Encrypt免费获取)。然后在frp服务端配置中绑定域名并设置TLS证书路径,客户端也需要启用TLS连接。这样,从用户浏览器到公网服务器再到你内网服务的整个链路都是加密的。
  • 设置IP白名单:在frp服务端配置中,可以设置 allowPorts 或结合云服务器防火墙(安全组),只允许特定的IP地址访问 6000 端口,这样即使密码泄露,也能从网络层拦截。
  • 限制访问速率:frp支持设置代理的带宽限制和连接数限制,防止服务被刷垮。
  • 定期更新Token:像改密码一样,定期更换frp服务端和客户端的认证Token。
  • 仅临时开启:演示结束后,记得关闭frp客户端和服务端进程。最彻底的方式是关闭公网服务器上对应的防火墙端口。

7. 总结与回顾

走完这一趟,你会发现给内网的AI服务开一个临时的“安全后门”并没有想象中复杂。核心就是利用frp这样的工具建立加密隧道,再为WebUI服务本身加上访问认证,双管齐下,基本就能满足临时分享的安全需求。

整个过程的关键在于细心,尤其是Token密码的设置和端口配置,两边一定要对上。安全组的设置也经常是初学者踩坑的地方,需要反复确认。

这种方案特别适合项目演示、临时协作或者移动办公的场景。它避免了将服务正式部署到公网的复杂流程,又比单纯的端口转发安全得多。当然,如果需求是7x24小时长期稳定的公网服务,那么建议还是走更正式的域名备案、负载均衡等部署流程。

希望这篇教程能帮你解决实际问题。如果在配置过程中遇到问题,多查看frp的日志文件,通常都能找到线索。


获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐