MiniCPM-o-4.5-nvidia-FlagOS服务端部署实战:内网穿透实现远程安全访问
MiniCPM-o-4.5-nvidia-FlagOS服务端部署实战:内网穿透实现远程安全访问
最近在折腾一个挺有意思的项目,把MiniCPM-o-4.5-nvidia这个模型部署在了本地服务器上,跑起来效果不错。但问题来了,模型和服务都在内网,我总不能每次想用或者给同事演示的时候,都让他们连到公司内网或者我自己的局域网里来吧?这太不方便了。
后来我研究了一下,发现用“内网穿透”这个法子能完美解决这个问题。简单说,就是通过一个“中间人”服务器,把我内网的服务安全地“映射”到公网上,这样我在外面用手机或者电脑,就能像访问普通网站一样访问我内网的模型服务了。整个过程听起来有点技术含量,但其实一步步做下来,发现也没那么复杂。
这篇文章,我就把自己从零开始,用frp这个工具实现内网穿透,把MiniCPM-o-4.5-nvidia的FlagOS服务端暴露到公网的全过程记录下来。我会尽量用大白话把每一步都讲清楚,包括怎么准备服务器、怎么配置、怎么绑定域名,还有最重要的——怎么设置一些基础的安全措施,防止服务被乱用。如果你也有类似的需求,比如想远程调试AI模型,或者临时做个演示,那这篇实战指南应该能帮到你。
1. 准备工作:理清思路与备好“弹药”
在开始动手之前,我们得先搞清楚整个流程是怎么跑的,以及需要准备哪些东西。别急着敲命令,磨刀不误砍柴工。
1.1 内网穿透到底是个啥?
你可以把它想象成邮局和信箱的关系。你的内网服务器(比如你家里的电脑)就像一个只收本地信件的信箱,外面的人没法直接往里寄信。而公网上的一台有固定地址的服务器(我们叫它“中转服务器”或“服务端”),就像邮局。内网穿透工具(比如frp)会在你的内网机器上装一个“邮差”(客户端),这个邮差会主动跑到邮局去登记:“嗨,我是某某信箱的邮差,以后所有寄给‘某某公网地址’的信,都先送到你这儿,然后由我带回给信箱。”
这样一来,外部用户访问那个公网地址时,请求会先到邮局(中转服务器),邮局立刻通知对应的邮差(内网客户端)来取件,邮差把请求带回内网交给真正的服务处理,拿到结果后再通过邮局送回给外部用户。对你内网的服务来说,它完全不知道请求来自远方,还以为就是本地访问呢。
1.2 你需要准备什么?
按照上面这个比喻,我们需要准备两样核心的东西:
- 一台具有公网IP的服务器:这就是我们的“邮局”。它需要一直在公网上运行,接收外部的访问请求。你可以用云服务商(比如阿里云、腾讯云)提供的云服务器,最基础的配置(1核1G)就够用了,主要是网络要稳定。记下它的公网IP地址。
- 一个域名(可选但推荐):直接用IP地址访问不太友好,也不方便记忆。申请一个域名(很多平台有很便宜的甚至免费的),然后把这个域名解析到你上面那台公网服务器的IP上。这样我们就能用像
http://minicpm.yourdomain.com这样的地址来访问了。
至于内网那台机器,就是你已经部署好MiniCPM-o-4.5-nvidia和FlagOS服务端的电脑,确保它在你的局域网内能正常访问。我们接下来的操作,主要就是配置“邮局”(服务端)和“邮差”(客户端)。
2. 搭建“邮局”:在公网服务器上配置frp服务端
我们选择frp作为内网穿透工具,因为它开源、灵活、配置清晰。首先登录到你那台有公网IP的服务器上操作。
2.1 下载并安装frp
通过SSH连接到你的公网服务器。frp的发布页面在GitHub上,我们需要下载对应服务器系统架构的版本。通常云服务器是linux_amd64。
# 创建一个目录存放frp
mkdir -p /opt/frp && cd /opt/frp
# 下载最新版本的frp(请去GitHub release页面查看最新版本号,替换下面的v0.54.0)
wget https://github.com/fatedier/frp/releases/download/v0.54.0/frp_0.54.0_linux_amd64.tar.gz
# 解压
tar -zxvf frp_0.54.0_linux_amd64.tar.gz
# 进入解压后的目录,服务端我们主要用 frps 开头的文件
cd frp_0.54.0_linux_amd64
解压后你会看到一堆文件,其中 frps 和 frps.ini 是服务端程序和服务端配置文件。
2.2 配置服务端 (frps.ini)
用文本编辑器(如vim或nano)打开 frps.ini 文件。我们先做一个最基础但可用的配置。
[common]
# frp服务端监听的端口,客户端用来连接
bind_port = 7000
# 仪表盘端口,用于在网页上查看frp状态(可选但建议开启)
dashboard_port = 7500
# 仪表盘的用户名和密码,请务必修改成复杂的!
dashboard_user = admin
dashboard_pwd = your_strong_password_here
# 用于外部访问我们内网服务的端口,范围可以根据需要调整
vhost_http_port = 8080
# 如果你还需要HTTPS,可以再开一个,比如 8443
# vhost_https_port = 8443
# 认证令牌,相当于客户端连接服务端的密码,增强安全性(强烈建议设置)
token = your_super_secret_token_here
# 日志记录,方便排查问题
log_file = ./frps.log
log_level = info
log_max_days = 3
关键配置解释:
bind_port (7000):这是“邮差”(客户端)主动来连接“邮局”(服务端)的通道。必须开放。dashboard_port (7500):管理后台,在浏览器访问http://你的服务器IP:7500,输入账号密码就能看到有哪些客户端在线,流量情况等。vhost_http_port (8080):这是最终外部用户访问内网服务时用的端口。当外部用户访问http://你的服务器IP:8080时,frps会根据域名等信息,把请求转发给对应的内网服务。token:非常重要!没有它,任何知道服务器地址的人都能连接上来,非常危险。务必设一个复杂字符串。
2.3 启动frp服务端并设置开机自启
配置好后,可以先在前台运行测试一下:
./frps -c ./frps.ini
如果看到类似 “frps started successfully” 的日志,说明服务端启动成功了。按 Ctrl+C 停止。
为了让它一直在后台运行,我们最好配置成系统服务。这里以Systemd为例:
# 创建systemd服务文件
sudo vim /etc/systemd/system/frps.service
将以下内容写入文件(注意修改ExecStart的路径为你实际的frps路径):
[Unit]
Description=Frp Server Service
After=network.target
[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart=/opt/frp/frp_0.54.0_linux_amd64/frps -c /opt/frp/frp_0.54.0_linux_amd64/frps.ini
[Install]
WantedBy=multi-user.target
保存退出后,启用并启动服务:
sudo systemctl daemon-reload
sudo systemctl enable frps
sudo systemctl start frps
sudo systemctl status frps # 查看运行状态,应该是active (running)
好了,“邮局”已经建好并开始营业了。记住你的服务器IP、bind_port、token,以及打算给外部用的vhost_http_port(这里是8080)。
3. 配置“邮差”:在内网机器上配置frp客户端
现在回到你部署了MiniCPM和FlagOS的内网机器上。假设你的FlagOS服务在本地的 http://localhost:7860 上运行(这是FlagOS常见的默认端口)。
3.1 下载并配置frp客户端
同样需要下载frp,步骤和服务器端类似,但这次我们关注 frpc 和 frpc.ini。
# 在内网机器上操作
mkdir -p ~/frp && cd ~/frp
wget https://github.com/fatedier/frp/releases/download/v0.54.0/frp_0.54.0_linux_amd64.tar.gz
tar -zxvf frp_0.54.0_linux_amd64.tar.gz
cd frp_0.54.0_linux_amd64
用编辑器创建或修改 frpc.ini 文件:
[common]
# 填写“邮局”的地址和连接端口
server_addr = 你的公网服务器IP
server_port = 7000
# 填写在服务端设置的token
token = your_super_secret_token_here
# 客户端管理端口,用于热重载配置(可选)
admin_addr = 127.0.0.1
admin_port = 7400
[web_minicpm] # 这个名称可以自定义,代表一个穿透服务
type = http
local_ip = 127.0.0.1
local_port = 7860 # 这是你内网FlagOS服务运行的端口
# 这是关键!指定一个子域名。当访问 http://minicpm.yourdomain.com:8080 时,请求会被转发到这个[web]服务
custom_domains = minicpm.yourdomain.com
# 如果你还有其他内网服务需要穿透,可以继续添加配置段,比如SSH
# [ssh]
# type = tcp
# local_ip = 127.0.0.1
# local_port = 22
# remote_port = 6000 # 访问 服务器IP:6000 就会被转发到内网机器的22端口
配置核心:[web_minicpm] 这个段落定义了一个HTTP类型的穿透。它告诉frp客户端:“请把发送到 minicpm.yourdomain.com 这个域名的请求,全部转发到本机的 7860 端口。”
3.2 启动frp客户端
在内网机器上运行:
./frpc -c ./frpc.ini
如果连接成功,你会看到日志显示 “login to server success” 以及 “[web_minicpm] start proxy success”。同时,在公网服务器的frps仪表盘(http://服务器IP:7500)上,应该能看到这个客户端在线。
同样,你也可以将客户端配置为系统服务或后台进程,确保它一直运行。在Linux上,可以参照服务端的方法创建 frpc.service;在Windows上,可以用nssm工具或计划任务。
4. 打通最后一公里:域名与安全设置
现在“邮局”和“邮差”都就位了,但外部用户还不能通过一个好记的域名访问。同时,安全是重中之重,不能把服务完全暴露在公网而不设防。
4.1 绑定域名
- 域名解析:登录你的域名注册商或DNS服务商的控制台,添加一条A记录。
- 主机记录:填
minicpm(如果你希望用minicpm.yourdomain.com访问的话)。 - 记录值:填你的公网服务器IP地址。
- TTL:默认即可。
- 主机记录:填
- 等待生效:DNS解析需要时间,通常几分钟到几小时不等。你可以用
ping minicpm.yourdomain.com来检查是否已经指向了你的服务器IP。
重要:我们之前配置frps时,vhost_http_port 设置的是8080。这意味着用户需要通过 http://minicpm.yourdomain.com:8080 来访问。如果你想用默认的80端口(即 http://minicpm.yourdomain.com),需要:
- 将frps.ini中的
vhost_http_port改为80。 - 确保你的云服务器安全组/防火墙开放了80端口。
- 注意,在Linux上监听1024以下的端口(如80)通常需要root权限,你可能需要调整frps的运行用户或使用
authbind等工具。
4.2 基础安全加固
直接暴露Web服务是有风险的,我们至少要做以下几件事:
- 设置强密码和Token:确保frps的
dashboard_pwd和token是足够复杂、无规律的字符串,不要使用默认值或简单密码。 - 限制访问来源(可选但推荐):在frps.ini的
[common]部分,可以添加以下配置,只允许来自特定IP的客户端连接(比如你公司的固定IP段),但这对于动态IP的家庭网络不友好。allow_ports = 7000, 7500, 8080 # 明确允许哪些端口被访问 # 或者使用更细粒度的IP白名单(需要frp版本支持) # authentication_method = token # authenticate_new_work_conns = true - 为FlagOS服务本身添加访问控制:这是更有效的一层防护。FlagOS通常支持通过命令行参数或环境变量设置
--share密码或--auth。- 在启动FlagOS服务时,加上参数,例如:
python launch.py --share --username admin --password your_flagos_password。这样,所有访问者都需要输入用户名和密码才能使用界面。 - 这是非常关键的一步,能防止你的模型API被陌生人滥用,产生不可控的计算和流量成本。
- 在启动FlagOS服务时,加上参数,例如:
- 使用云服务器安全组/防火墙:在云服务商的控制台,严格限制入站端口。通常只开放:
7000(frp客户端连接)7500(仪表盘,可考虑仅对管理IP开放)8080(或80/443,对外服务)22(SSH管理,建议改用密钥登录并限制IP) 关闭所有其他不必要的端口。
5. 测试与验证
完成以上所有步骤后,就可以进行最终测试了。
- 确保所有服务运行:
- 公网服务器:
frps服务运行。 - 内网机器:
FlagOS服务运行在7860端口;frpc客户端运行。
- 公网服务器:
- 从外部网络访问:找一台不在你内网的设备(比如用手机4G/5G网络),打开浏览器,访问
http://minicpm.yourdomain.com:8080(如果你用了80端口,则不用加:8080)。 - 预期结果:你应该能看到FlagOS的Web界面。如果设置了密码,会弹出登录框。登录后,就能像在内网一样使用MiniCPM-o-4.5-nvidia模型进行对话或推理了。
- 检查仪表盘:访问
http://你的公网服务器IP:7500,用设置的用户名密码登录,可以看到frpc客户端在线状态,以及[web_minicpm]这个代理的流量情况。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。
更多推荐
所有评论(0)