使用 Cloudflare Tunnel 实现 AList 远程访问

最开始只是想让自己的电脑能够被远程访问,后来逐渐开始把一些服务放在本地运行,比如下载工具、文件管理工具等。其中一个很好用的工具就是 AList,它可以把本地磁盘或者各种网盘统一挂载,通过网页来管理文件。
image-20260307204327371

解决的问题

问题是 AList 默认只运行在本地

1
http://localhost:5244

如果不在电脑旁边,就无法访问。发现可以用 Cloudflare Tunnel 来实现远程访问 AList,怕自己忘了怎么配置的了,就记录下整个配置过程。

整体架构

整体结构如下:

1
2
3
4
5
6
7
8
9
10
本地电脑
AList 服务
localhost:5244
↓
cloudflared
↓
Cloudflare Tunnel
↓
域名访问
alist.haozi.space

访问 alist.haozi.space 时,Cloudflare 会通过 Tunnel 转发请求到本地电脑的 5244 端口。这样就实现了远程访问。

准备工作

在开始之前需要准备以下内容:

  1. 一个 Cloudflare 账号
  2. 一个已经接入 Cloudflare 的域名
  3. 一台电脑
  4. 已经运行的 AList 服务

AList 默认端口是

1
5244

本地访问地址为

1
http://localhost:5244

在配置 Tunnel 之前,需要确保本地访问是正常的。
可以通过登陆127.0.0.1:5244来检验本地访问是否正常。

开始搭建

Cloudflare Tunnel 需要通过 cloudflared 程序来运行。
可以从 Cloudflare 官方下载 Windows 版本
https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-tunnel/downloads/
image-20260306125950289

下载完成后,将程序放在一个固定目录,例如

1
F:\cloudflared

然后在终端中运行

1
cloudflared --version

如果可以看到版本号,说明安装成功。

登录 Cloudflare

为了让本地程序能够创建 Tunnel,需要先登录 Cloudflare。
执行

1
cloudflared tunnel login

记得在哪个盘里面,就要在哪里开始cmd操作(如果你之前跟我一样下载在F盘,就要在F盘进行cmd操作,以此类推)
image-20260308141535725

浏览器会自动打开 Cloudflare 登录页面。登录后选择需要绑定的域名。完成后本地会生成一个认证文件:
image-20260306131456755

网页会显示以下界面:

image-20260306131132603

创建 Tunnel

接下来创建一个新的 Tunnel。

1
cloudflared tunnel create alist-tunnel

其中 alist-tunnel 是 Tunnel 名称,可以自己修改。
执行成功后会生成Tunnel ID,credentials 文件。

创建配置文件

接下来需要创建配置文件 config.yml。
示例配置

1
2
3
4
5
6
7
tunnel: Tunnel_ID
credentials-file: C:\Users\用户名\.cloudflared\Tunnel_ID.json

ingress:
- hostname: alist.yourdomain
service: http://localhost:5244
- service: http_status:404

image-20260308141903442

Tunnel_ID是 C:\Users\用户名.cloudflared 文件夹里面json文件的名称
访问 alist.yourdomain 时转发到本地 localhost:5244,如果访问其他地址,返回 404

DNS

进入 Cloudflare 的 DNS 管理页面。添加一条记录

1
2
3
类型 CNAME
名称 alist
目标 Tunnel_ID.cfargotunnel.com

这样配置的话,访问 alist.yourdomain,就会进入 Cloudflare Tunnel。

启动 Tunnel

配置完成后启动 Tunnel

1
cloudflared tunnel run alist-tunnel

如果一切正常,就可以在浏览器中访问

1
https://alist.yourdomain

页面会直接打开 AList

问题记录

在配置过程中可能遇到一些问题。
排查顺序一般是:

  1. 先确认 AList 本地是否可以访问

  2. 再确认 cloudflared 是否在运行,如何检验是否生效?

    如下,终端输入:

    1
    2
    cd /d F:\cloudflare
    cloudflared tunnel list

    显示有connections就是有效的
    image-20260306142146235

  3. 确认 Cloudflare DNS 是否正确,这一步需要去cloudflare管理界面排查

alist如果挂载的是天翼云盘,发现上传可能出现显示 invalid session key
解决方法:去alist界面设置一下上传方式为 旧版,解决问题

后续扩展

Alist 开机启动

在桌面建一个VBS文件

image-20260306134649623

在里面添加

1
2
Set ws = CreateObject("Wscript.Shell")
ws.run "F:\alist-windows-amd64\alist.exe server", vbHide

把这个vbs文件拖到alist.exe所在的文件夹里面
并且右键创建快捷方式
win+R输入 shell:startup

image-20260306135006792

把快捷指令拖进去就可以了

Cloudflare开机启动

手动启动

image-20260306135343494

1
cloudflared tunnel run alist

自动启动设置
在桌面建一个VBS文件,命名为 start-alist-tunnel.vbs
在里面添加

1
2
Set ws = CreateObject("Wscript.Shell")
ws.Run "cmd /c F:\cloudflare\cloudflared tunnel run alist",0

win+R输入 shell:startup

image-20260306135006792

把vbs拖进去就可以了

更多域名

例如:

1
2
3
alist.haozi.space
img.haozi.space
qb.haozi.space

每个子域名对应不同的本地服务。这样一台普通电脑就可以逐渐变成一个小型家庭服务器。
操作很简单,在配置文件里面加上:

1
2
- hostname: qb.haozi.space
service: http://localhost:8081

config.yml变成:

1
2
3
4
5
6
7
8
9
tunnel: 你的tunnel-id
credentials-file: C:\Users\你的用户名\.cloudflared\你的tunnel-id.json

ingress:
- hostname: qb.haozi.space
service: http://localhost:8081
- hostname: alist.haozi.space
service: http://localhost:5244
- service: http_status:404

之后进行DNS配置即可:

1
2
3
4
Type: CNAME
Name: qb
Target: <你的tunnel-id>.cfargotunnel.com
Proxy: 开启(橙色云)

回顾

回顾整个过程,其实一开始只是想解决一个很小的问题,如何远程访问自己的电脑。但在解决问题的过程中,又接触到了Cloudflare Tunnel、AList、域名管理、内网服务暴露
技术学习往往就是这样,从一个实际需求出发,一步一步扩展。
也许过一段时间再回来看,会发现自己已经学会了很多当时觉得复杂的东西。

如果这篇文章对你有帮助,请我喝杯咖啡吧 ☕