这一节讲如何通过自己的服务器做内网穿透访问本地 AList
现在我的 AList 是启动在了我的 orange pi zero 3,通过本地 ip 地址可以正常访问:

本文章采用的内网穿透工具为 frp
什么是 Frp
frp 全名 fast reverse proxy,是一个可用于内网穿透的高性能的反向代理应用,支持 tcp、udp、http、https 等协议。通过在具有公网 IP 的服务器上部署 frp 服务端,可以实现对内网中服务器的访问。
下载 Frp
从 frp 的 GitHub 仓库 Release 页面 下载最新版本的 frp,根据你的操作系统选择对应的版本。
我这里香橙派是 arm64 架构,服务器为 x86 架构,因此香橙派应安装 frp_xxx_linux_arm64.tar.gz,服务器应安装 frp_xxx_linux_amd64.tar.gz,其中 xxx 为版本号,选择最新版即可
安装 Frp
客户端(Client)
使用任意你喜欢的方式将 .gz 压缩包上传到你喜欢的目录中,这里我选择的是 /home/orangepi ,之后将工作路径切换到 /home/orangepi,执行 tar -xzvf frp_xxx_linux_arm64.tar.gz 将压缩包解压,这时候应该在 /home/orangepi 中出现了一个名为 frp_xxx_linux_arm64 的文件夹。为了便于访问,这里把文件夹重命名为 frpc
文件夹中包含了四个重要的文件:frpc、frpc.toml、frps、frps.toml
我们把 frps、frps.toml 这两个文件删掉,因为这两个文件是服务器(Server)需要运行和配置的文件,而香橙派是客户端(Client)
使用任意你喜欢的方式对 frpc.toml 这个文件进行编辑
假设公网服务器的 ipv4 地址为 xxx.xxx.xxx.xxx,需要将本地运行在 5244 端口的 AList 暴露到公网 ip 的 2001 端口,参考配置如下
1 | serverAddr = "xxx.xxx.xxx.xxx" |
serverPort 表示在 frp 服务端监听的端口,默认为 7000,建议不动
localIP 和 localPort 配置为需要从公网访问的内网服务的地址和端口
remotePort 意为服务器访问此端口的流量将被转发到本地服务的相应端口
如果需要暴露多个本地端口,比如需要访问 22 端口进行 ssh 连接,只需要再添加一个 [[proxies]]:
1 | serverAddr = "xxx.xxx.xxx.xxx" |
这里把本地的 22 端口暴露到了公网的 2222 端口,这样就可以通过 xxx.xxx.xxx.xxx:2222 进行 ssh 连接了
服务器(Server)
使用任意你喜欢的方式将 .gz 压缩包上传到你喜欢的目录中,这里我选择的是 /home/ubuntu ,之后将工作路径切换到 /home/ubuntu,执行 tar -xzvf frp_xxx_linux_amd64.tar.gz 将压缩包解压,这时候应该在 /home/ubuntu 中出现了一个名为 frp_xxx_linux_amd64 的文件夹。为了便于访问,这里把文件夹重命名为 frps
根据上面客户端的配置,接下来要做的应该是把 frpc、frpc.toml 这两个文件删掉,然后配置 frps.toml
它的配置就简单了,只需要开一个监听端口就可以了:
1 | bindPort = 7000 |
整个文件只有一行
注册 systemctl 服务
接下来把 frp 注册成一个 systemctl 服务,便于进行管理。同时可以让端口监听运行于后台,而不必占用当前命令行
如果你的主机尚未安装 systemctl,请自行搜索教程
这里以客户端为例
在 /lib/systemd/system 文件夹下新建 frpc.service 文件,使用任何你喜欢的方式编辑它:
1 | [Unit] |
服务端自行照葫芦画瓢,改一下服务名称和启动命令即可。同时强烈建议把 AList 和其他你想要的需要监听端口的应用也注册成一个系统服务,系统服务的名称即为 .service 文件的前缀
一旦修改配置文件,就要让 SystemD 重新加载配置文件,然后重新启动,否则修改不会生效
1 | sudo systemctl daemon-reload |
接下来使用 systemctl 命令管理服务
1 | # 启动 frp |
不要忘记 frps 和 alist 也要开启
开启服务器防火墙端口
进入你所购买服务器平台的控制台,开启 7000 端口(frps 的监听端口)、2001 端口(AList 的流量转发端口)、2002 端口(ssh 的流量转发端口)
不同控制台不一样,这里就不演示了
AList 启动!

已成功通过公网 ip 访问到本地 AList