不是完全的教程,只是做一些要点备份,讲解一些在FRP穿透中踩到的坑。
首先我有域名,有海外VPS,这是我操作的基础,因此不需要BA。
其次,我所有的操作都是基于Docker环境,可以实现相对较为自由的迁移。
同时我VPS上跑着大量其他服务,使用Caddy+PHP搭建一个环境,运行了一个Typecho网站,(后期可能改成Docker版typecho反代,理论上这样更简单,不需要我单独设置环境,外部的PHP可以取消掉),然后还有几个Docker服务,均使用docker版Caddy反代。

所以FRP也准备准备采用Docker版,一来和体系搭配,二来更灵活,反代无需固定docker的IP,相对迁移更灵活。

为了相对清晰和自主的实现,而且官方没有FRP容器,因此自己构建Docker镜像,参考了网上的多个Dockerfile后,使用ChatGPT进行构建。
ChatGPT很坑。
第一,数据较老,你指定版本以后,他也不会基于最新版FRP的数据给你出相关配置。
第二,胡说,可以根据你的要求,给出看似非常合理漂亮的Dockerfile,但实际上无法跑通。这个构建实际上非常非常简单。但因为我的整套配置为了灵活,使用了大量的环境变量。例如FRP的版本、时区等均定义在env文件中,在docker compose文件中使用args传入Dockerfile,相对麻烦。
但是GPT给出的Dockerfile从来无法跑通,在和GPT进行长久的互相掰扯无果后,才自行在网络上搜索得到结果。传递的参数ARG需要在FROM后面重新声明一下,不然传递的参数会变为空。
这应该是明确的规则,但GPT没发现问题。
在指出问题后,GPT修改成功。
证明了GPT不可尽信,也是因为我对Docker的学习从来都是应用中需要什么学什么,没有完善的学习。在此前的使用中,对GPT在IT方面的表现有了过分的信任。

后面的配置文件,虽然参考了GPT,但也大量进行了相关的搜索比对,GPT在不相信他的时候还是很好用的。

FRP的配置文件,第一次没跑通,主要原因是我拷贝错了FRPC.toml。

其次FRPC的配置确实没太多好说的,主要是服务器端的配置。总体释义确实较少,官方的参数解释,大部分没有示例(少部分有但不完善),最好在官网的参数说明页面,确认你需要的相关参数配合GPT解释,以及部分其他人的frpc.toml及frpc.ini进行理解与撰写。

我使用了单独的域名作为frp的Serverport,这个域名不需反代,相当于只是放到DNS那,解析为IP这一个作用。7000端口不建议反代,影响通信(GPT给我的建议,但我确实不需要,所以没测试)

基本上FRPS端的配置如果你一次写完善了,基本不用调整,只需要在客户端进行调整,但如果增加很多服务,反代的话你还是需要去Caddy里设置。

但是http模式的穿透我还没调通,据说可以用通配符,结合http模式的subdomain,实现Caddy自动反代,不同子域名接入到不同的本地服务。
但我没通,只是猜测http模式的穿透,应该用caddy反代FRPS容器的80端口,肯定不是本地服务的端口,那样会404。

后来查询了如果穿透类似网站的这种服务实际上要使用TCP模式,frpc.toml的单个服务指定Remoteport,这样我只需要使用caddy反代FRPS容器对应在frpc.toml中指定的Remoteport就好了,整体更简单。

其次frps端不同协议会指定多个接口,建议不要一致,虽然其中有可以一致的,但为了方便,分开了。

frpc默认设置只能设置一个serverport,但是在单个服务里可以指定serverport覆盖默认设置(未测试,不可用)。

alist调用aria离线下载失败显示ssl错误需要安装ca-certificates 和 ca-bundle,并设置ca-certificate=/etc/ssl/certs/ca-certificates.crt。
如果出现无法创建目录的错误,需要修改下离线下载的临时目录,没有直接修改的选项,在配置文件里查找修改。

最后修改:2024 年 12 月 18 日
看表情包吧!