AList 安装与使用教程(二)

这一节讲如何通过自己的服务器做内网穿透访问本地 AList

现在我的 AList 是启动在了我的 orange pi zero 3,通过本地 ip 地址可以正常访问:

image-20240718160000522

本文章采用的内网穿透工具为 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

文件夹中包含了四个重要的文件:frpcfrpc.tomlfrpsfrps.toml

我们把 frpsfrps.toml 这两个文件删掉,因为这两个文件是服务器(Server)需要运行和配置的文件,而香橙派是客户端(Client)

使用任意你喜欢的方式对 frpc.toml 这个文件进行编辑

假设公网服务器的 ipv4 地址为 xxx.xxx.xxx.xxx,需要将本地运行在 5244 端口的 AList 暴露到公网 ip 的 2001 端口,参考配置如下

1
2
3
4
5
6
7
8
9
serverAddr = "xxx.xxx.xxx.xxx"
serverPort = 7000

[[proxies]]
name = "AList"
type = "tcp"
localIP = "127.0.0.1"
localPort = 5244
remotePort = 2001

serverPort 表示在 frp 服务端监听的端口,默认为 7000,建议不动

localIPlocalPort 配置为需要从公网访问的内网服务的地址和端口

remotePort 意为服务器访问此端口的流量将被转发到本地服务的相应端口

如果需要暴露多个本地端口,比如需要访问 22 端口进行 ssh 连接,只需要再添加一个 [[proxies]]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
serverAddr = "xxx.xxx.xxx.xxx"
serverPort = 7000

[[proxies]]
name = "AList"
type = "tcp"
localIP = "127.0.0.1"
localPort = 5244
remotePort = 2001

[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 2002

这里把本地的 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

根据上面客户端的配置,接下来要做的应该是把 frpcfrpc.toml 这两个文件删掉,然后配置 frps.toml

它的配置就简单了,只需要开一个监听端口就可以了:

1
bindPort = 7000

整个文件只有一行

注册 systemctl 服务

接下来把 frp 注册成一个 systemctl 服务,便于进行管理。同时可以让端口监听运行于后台,而不必占用当前命令行

如果你的主机尚未安装 systemctl,请自行搜索教程

这里以客户端为例

/usr/lib/systemd/system 文件夹下新建 frpc.service 文件,使用任何你喜欢的方式编辑它:

1
2
3
4
5
6
7
8
9
10
11
[Unit]
Description = frp client # 服务名称,可自定义
After = network.target syslog.target
Wants = network.target

[Service]
Type = simple
ExecStart = /home/orangepi/frpc/frpc -c /home/orangepi/frpc/frpc.toml # 启动 frpc 的命令,需修改为您的 frpc 的安装路径

[Install]
WantedBy = multi-user.target

服务端自行照葫芦画瓢,改一下服务名称和启动命令即可。同时强烈建议把 AList 和其他你想要的需要监听端口的应用也注册成一个系统服务,系统服务的名称即为 .service 文件的前缀

一旦修改配置文件,就要让 SystemD 重新加载配置文件,然后重新启动,否则修改不会生效

1
sudo systemctl daemon-reload

接下来使用 systemctl 命令管理服务

1
2
3
4
5
6
7
8
9
10
11
12
# 启动 frp
sudo systemctl start frpc
# 停止 frp
sudo systemctl stop frpc
# 重启 frp
sudo systemctl restart frpc
# 查看 frp 状态
sudo systemctl status frpc
# 设置 frp 开机自启
sudo systemctl enable frps
# 取消 frp 开机自启
sudo systemctl disable frps

不要忘记 frps 和 alist 也要开启

开启服务器防火墙端口

进入你所购买服务器平台的控制台,开启 7000 端口(frps 的监听端口)、2001 端口(AList 的流量转发端口)、2002 端口(ssh 的流量转发端口)

不同控制台不一样,这里就不演示了

AList 启动!

image-20240718161758685

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