本篇为日志, 旨在记录, 而非提供详细教程, 含有大量个人心理活动的描写, 仅供参考

前言

在最近一段时间迷上了AI聊天机器人,,我使用的机器人项目是Kourichat(在github上可以找到),要部署这个机器人需要一台24小时运行Window系统的电脑。一般不用优惠的话,在阿里云租用一台两核两G的Window Server 服务器一个月的租金要两百出头。考虑要运行这个并不需要公网IP以及节省费用,便使用家里的一台电脑来部署这个项目。平常我是使用ToDesk来实现远程操控的,但发现ToDesk每月连接次数是有额度限制的,随打算部署Frp来实现内网穿透来多提供一种远程操控的手段。

内网穿透项目选择

在内网穿透相关项目中,我选择了Frp,不为别的就是觉得这种项目虽然上手比较难,但上限高,自由度也高。而且正好我已经有一台在公网上的服务器(也就是该网站所部署的服务器)可以作为Frp服务端来使用。在上周(忘了几号)我便跟着下面这篇文章在公网服务器上部署了Frp,也尝试访问7500(默认Web页面端口)成功了。

这篇文章确实还行,但是使用的Frp太旧了(0.22),写这篇日志时都更到0.61了 使用frp配置内网(穿透[保姆级教程])

之后要在家里那台电脑上部署Frp客户端,但此时Todesk免费访问额度已经用完了,遂等到4/6才在家里搞定。

部署Frp客户端

在部署客户端时(下载的是0.61版本),发现并没有.init文件来编写配置,而是.toml文件来编写。问过ds才知道新版本开始支持了yaml和toml格式来编写配置了,也就是说上篇文章使用的.init文件格式的方式并不适用。我对Frp配置的编写一无所依,便反复问ds该如何编写toml,结果从toml格式问到了yaml格式又问回来toml格式,ds给出的答案总是会有一些语法错误(不是有些字段无法识别,就是缺了什么东西),最后直接问到ds“服务器繁忙,请稍后重试”心态直接炸了。而且Frp配置文件的格式貌似在历代的更新中经常会变。干脆自己找文章了来研究配置编写。我推荐看看下面这个网站,它对于Frp的介绍比较全面了。

Web 界面 | Frp

之后一番折腾,终于没有语法上的报错了,但是显示“连接服务端失败”(显示是英文来的,原文不记得了,只记得是这个意思)。我一脸懵逼,“我这服务端明明能运行啊?端口都开放了,无论是宝塔那里还是阿里云哪里都开放了端口了啊?Frp的Web界面也能在公网上访问啊?”

正当我一筹莫展之际,灵光一闪,“会不会是服务端的Frp版本太旧了”,结果一看,好家伙,0.22的了。那没办法了,只好重装新版本了。换新版本又要研究在服务端的toml格式编写。。。

搞着差不多了,能运行起来了,尝试访问Web页面。哎!上不去QAQ。。。直接摆烂了。。。 但是想想,死活当活马医吧,结果客服端成功连接上服务端了???WTF???这么就成功了???那为啥Web界面没成功呢???

最后又研究一下,在旧版(.init格式),Web界面的访问地址默认为公网本地ip,一般只用设置访问端口即可。而在新版(至少是在toml格式,yaml格式我不知道)中,访问地址默认为内网本地ip(127.0.0.1),要想设置为公网本地ip需手动设置为“0.0.0.0”才行QAQ。

不过这也体现出我Web相关知识的基础不过关了,因为在服务端运行起来后,有显示过一句“Web界面监听127.0.0.1地址”的信息了,其实已经告诉了我Web界面访问地址目前是内网本地地址了。QWQ

此时此刻,Kourichat这个项目是个pythonWeb项目来的,已经成功能通过内网穿透来访问这个项目了。

实现使用Window自带的远程控制

使用frp配置内网(穿透[保姆级教程])

之前在这篇文章得知了可以使用Frp来实现使用Window自带的远程控制,本地默认端口为3389,经过一些简单的配置,成功启用了这项功能。最后按着”公网地址:转发端口“的格式以及输入凭证即可。而这个凭证,一开始我太清楚是什么意思,后面觉得应该是在目标电脑用户名和密码。

但是,有意思的一点来了:目标电脑我没有设置密码来的,我试过使用只输入目标电脑的用户名但不输入密码(根本没有),也不成功,最后是在目标电脑上设了密码后,在凭证里输入用户名和密码就成功了,就离谱。。。

使用nssm项目来将.exe程序注册成服务

这个客户端的frp需要长时间的运行,也需要设定好开机自启动,这样比较方便,于是使用nssm来将其注册成服务。

不过有一说一,nssm这个软件确实简单好用,只需要填写.exe程序地址、.exe程序所在目录、运行参数和服务的名字就可以了。之后就可以在”任务管理器”->”服务”一栏中看到你注册的服务了

以及要设置开机自启动也很简单,管理员权限运行cmd,执行sc config <你的服务的名字> start= auto就行,要注意start=之间不能有空格。

最后

以上就是我在4/6号折腾frp的日志了,搞了我一个下午,这篇随便写的日志也写了我一节课了,就这样吧。

参考文章

使用frp配置内网(穿透[保姆级教程])

Web 界面 | Frp

内网穿透–五分钟完成搭建(从零开始)

windows守护进程工具–nssm详解

Frp 0.52及以上版本的全系统保姆级教程(包含frps和frpc的搭建与使用)