mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4mobile wallpaper 5mobile wallpaper 6
2543 字
7 分钟
利用Cloudflare Tunnels实现对openlist的域名访问
2026-02-23

不乱于心,不困于情,不畏将来,不念过往.#


核心原理:cloudflared 从内网主动向外连接 Cloudflare 边缘节点,建立加密隧道。外部用户访问域名时,流量通过 Cloudflare 边缘 → 隧道 → 本地 OpenList,全程无需公网 IP、无需开放入站端口。


目录#


方案总览#

数据流架构#

用户浏览器 Cloudflare 边缘 你的电脑(内网)
https://open.xxx.eu.cc → DNS 解析 + TLS 终止 → cloudflared → OpenList
(Tunnel 客户端) (127.0.0.1:5544)

前置条件#

条件说明
Cloudflare 账号邮箱注册登录即可
自定义域名NS 已指向 Cloudflare(如 xxx.eu.cc
OpenList 已部署本地可正常访问(如 http://127.0.0.1:5544
终端访问权限Windows 上使用 PowerShell 或 CMD

OpenList Desktop 兼容性说明#

TIP

官方docker部署太难我看不懂? 可以尝试openlist-desktop(小白简单向!)<br> 如果你是大佬,请移步官方文档

OpenList Desktop 和 Cloudflared 完全兼容,没有任何冲突。

  • OpenList Desktop 只是一个本地运行的 Web 服务,监听在 http://localhost:5544/
  • Cloudflared 作为隧道客户端,将外部流量转发到这个本地地址
  • 两者各司其职,互不干扰

第一步:安装 cloudflared#

Windows(你的环境)#

方式一:winget 安装(推荐)

Terminal window
winget install Cloudflare.cloudflared

方式二:手动下载

  1. 访问 cloudflared GitHub Releases
  2. 下载 cloudflared-windows-amd64.msi
  3. 双击安装

安装后验证:

Terminal window
cloudflared --version

建议使用 v2024.0.0 及以上版本。

其他系统(参考)#

mac:

brew install cloudflared

第二步:登录 Cloudflare 账号#

在 CMD 或 PowerShell 中执行:

Terminal window
cloudflared tunnel login

执行后会自动打开浏览器,要求你:

  1. 选择一个域名(选择你打算绑定的域名,如 xxx.eu.cc
  2. 授权 cloudflared 访问该域名

无图形界面环境:命令行会输出一个 URL,复制到任意设备的浏览器中打开完成授权,将回调内容粘贴回终端。

成功后凭证保存在 C:\Users\你的用户名\.cloudflared\cert.pem只需执行一次


第三步:创建 Tunnel#

cmd后输入

Terminal window
cloudflared tunnel create openlist

成功后输出类似:

Tunnel credentials written to C:\Users\xxx\.cloudflared\a1b2c3d4-e5f6-7890-abcd-ef1234567890.json
Created tunnel openlist with id a1b2c3d4-e5f6-7890-abcd-ef1234567890

请记录 Tunnel ID(上例中的 a1b2c3d4-e5f6-7890-abcd-ef1234567890),后续配置需要用到。凭证 JSON 文件请勿删除或泄露。


第四步:配置路由规则#

创建配置文件 C:\Users\你的用户名\.cloudflared\config.yml,内容如下:

tunnel: a1b2c3d4-e5f6-7890-abcd-ef1234567890
credentials-file: C:\Users\你的用户名\.cloudflared\a1b2c3d4-e5f6-7890-abcd-ef1234567890.json
ingress:
# 子域名路由到 OpenList
- hostname: open.xxx.eu.cc /*一定需要子域名,在你选择的域名前添加任意前缀即可*/
service: http://127.0.0.1:5544
# 必须的兜底规则
- service: http_status:404

配置项说明#

配置项说明示例
tunnelTunnel IDa1b2c3d4-...
credentials-file凭证 JSON 的绝对路径C:\Users\xxx\.cloudflared\xxx.json
ingress[].hostname要绑定的子域名open.xxx.eu.cc
ingress[].service本地服务地址http://127.0.0.1:5544
IMPORTANT

1. service 必须用 127.0.0.1,不要用 localhost<br> localhost 是一个域名,Cloudflare 边缘节点在某些情况下会尝试对其进行 DNS 解析,导致 Error 1016 Origin DNS error。使用 127.0.0.1 纯 IP 地址可彻底避免此问题。<br> 2. 最后一条 ingress 必须是 catch-all 规则 <br> 不含 hostname 字段,否则 cloudflared 拒绝启动。<br> 3. credentials-file 必须使用绝对路径 <br> Windows 上不要用相对路径,写出完整路径。


第五步:配置 DNS 记录#

方式一:命令行(推荐)

Terminal window
cloudflared tunnel route dns openlist open.xxx.eu.cc

方式二:Cloudflare Dashboard 手动添加

进入 你的域名 → DNS → Records → Add Record

字段
TypeCNAME
Nameopen
Targeta1b2c3d4-e5f6-7890-abcd-ef1234567890.cfargotunnel.com
Proxy statusProxied(橙色云朵,必须开启)
TTLAuto

根域名(@ 记录)不要指向 Tunnel,除非你有其他特殊用途。

WARNING

不要把根域名加入路由 根域名(如 xxx.eu.cc)通常不应该绑定到 OpenList。只绑定子域名(如 open.xxx.eu.cc)。如果错误地添加了根域名路由,同样会触发 1016 错误。


第六步:启动 Tunnel#

前台运行(首次调试用)#

Terminal window
cloudflared tunnel run openlist

看到以下输出说明成功:

INF Starting tunnel tunnelID=a1b2c3d4-e5f6-7890-abcd-ef1234567890
INF Route registered for open.xxx.eu.cc
INF Connection registered connIndex=0 location=SJC
INF Connection registered connIndex=1 location=LAX
INF Connection registered connIndex=2 location=SEA
INF Connection registered connIndex=3 location=IAD

cloudflared 默认建立 4 条冗余连接到不同边缘节点,自动故障切换。

此时不要关闭这个 CMD 窗口,关闭 = 杀掉进程 = 隧道断开。后续设置为 Windows 服务后可解决此问题。


第七步:OpenList 站点配置(可选)#

  1. 访问 http://127.0.0.1:5544/@manage 进入 OpenList 管理后台
  2. 找到 「站点设置」或「全局设置」
  3. 站点 URL 修改为 https://open.xxx.eu.cc(注意是 https)
  4. 保存设置

第八步:验证与测试#

  1. Cloudflare Dashboard → Zero Trust → Networks → Tunnels 中确认状态为 Healthy
  2. 浏览器打开 https://open.xxx.eu.cc,能看到 OpenList 首页
  3. 检查地址栏锁图标,确认 HTTPS 证书有效(Cloudflare 签发)
  4. 登录 OpenList,浏览文件列表,尝试下载文件

快速命令行测试:

Terminal window
curl -sI https://open.xxx.eu.cc

期望看到 HTTP/2 200server: cloudflare


第九步:Windows 开机自启#

问题:直接在 CMD 中运行 cloudflared,关闭CMD窗口或关机后隧道断开。 解决:1.将cloudflared注册为Windows系统服务;2.openlist/cloudflared.exe开机自动后台运行;

确保 OpenList Desktop 也开机自启#

  1. Win + R 输入 shell:startup 回车
  2. 将 OpenList Desktop 的快捷方式拖入该文件夹
  3. 右键 OpenList Desktop 快捷方式 → 属性 → 兼容性 → 勾选”以管理员身份运行”

start.vbs/注册cloudflared.exe Windows 服务#

方案一:创建vbs启动脚本

这个方法是使用.vbs自启动后在后台作为系统服务运行,会产生需要手动关闭的CMD窗口。

  • 在Cloudflare.exe同级目录下新建文件 start.txt文本文档并输入以下内容:
Set WshShell = CreateObject("WScript.Shell")
' ==========================================
' 配置区域:请根据实际路径修改下方引号内的内容
' ==========================================
Dim exePath, exeCmd
' cloudflared.exe 的完整绝对路径
exePath = "D:\Openalist\cloudflared\cloudflared.exe" /*将路径替换为你实际的 cloudflared 路径。*/
' 需要执行的命令参数
exeCmd = "tunnel run openlist-tunnel"
' ==========================================
' 执行命令
' 参数说明: 0 表示隐藏窗口, False 表示不等待程序结束(这样即使vbs结束,服务也在运行)
' ==========================================
WshShell.Run """" & exePath & """ " & exeCmd, 0, False
Set WshShell = Nothing
WARNING

注意将所有路径替换为个人实际路径

  • 保存文本文档并重新命名为:start.vbs
  • 键入win+r打开运行框,输入shell:startup回车,将start.vbs拖入该文件夹。

方案二:注册cloudflared.exe Windows 服务

这个方法会让 cloudflared 在后台作为系统服务运行,开机自动启动,无需手动干预,且不会留下需要手动关闭的CMD窗口。

  • 在开始菜单搜索 CMD PowerShell ,右键点击,选择“以管理员身份运行”。
  • 使用 cd 命令切换到你的 cloudflared.exe 所在的文件夹。根据你的情况,应该是:
Terminal window
cd /d D:\Openalist\
  • 运行以下服务安装命令,将 cloudflared 注册为系统服务。这个命令会自动读取你已有的配置文件(config.yml)。
Terminal window
.\cloudflared.exe service install
  • 验证服务状态 安装成功后,你可以打开“服务”管理器来验证。 按下 Win + R 键,输入 services.msc 并回车。 在服务列表中找到名为 Cloudflared 的服务。 你会看到它的“启动类型”是“自动”,并且“状态”是“正在运行”。
  • 完成以上步骤后,(首次安装)你就可以关闭 CMD 窗口了。cloudflared 隧道会在后台持续稳定运行,并且每次开机都会自动启动。

4. 开机后的完整启动流程

电脑开机
OpenList Desktop 自动启动 → 监听 127.0.0.1:5544
Cloudflared 服务自动启动 → 建立 Tunnel 隧道
约 30 秒后 → https://open.xxx.eu.cc 可访问

openlist/cloudflared.exe都要设置自启,缺一不可#

5. 以下为可选内容

第十步:安全加固(可选-因为我不会)#

9.1 Cloudflare Access 保护#

为 OpenList 添加身份验证,未授权用户看到登录页面:

  1. 进入 Zero Trust → Access → Applications → Add an application → Self-hosted
  2. Application name:OpenList
  3. Session Duration:24 hours
  4. Application domain:open.xxx.eu.cc
  5. Policy 规则示例:
    • If Emails ending in @xxx.com → Allow
    • Else → Block

9.2 SSL 模式设置#

进入 域名 → SSL/TLS → Overview

  • 如果 cloudflared 到 OpenList 用的是 http://127.0.0.1(无 TLS)→ 选择 Full
  • 如果本地也配了 TLS 证书 → 选择 Full (Strict)

9.3 其他建议#

措施位置建议
Bot Fight ModeSecurity → Bots开启
Browser Integrity CheckSecurity → Settings开启
Rate LimitingSecurity → WAF → Rate limiting/d//api/ 路径限速
IP Access RulesSecurity → WAF → Tools按需封禁恶意 IP


常见问题排查#

Error 1016 Origin DNS error#

现象:浏览器显示 Error 1016 Origin DNS error,Cloudflare 无法解析域名。

原因

  1. config.yml 中 service 使用了 localhost 而非 127.0.0.1
  2. 根域名被错误地加入了 Tunnel 路由

解决

# 错误写法
service: http://localhost:5544
# 正确写法
service: http://127.0.0.1:5544

同时删除 Tunnel 路由中的根域名条目,只保留子域名。


502 Bad Gateway#

现象:Cloudflare 能解析域名但无法连接后端。

排查步骤

Terminal window
REM 1. 确认 OpenList 正在运行
curl http://127.0.0.1:5544
REM 2. 确认 cloudflared 正在运行
nssm status CloudflaredTunnel
REM 3. 检查 config.yml 中端口号是否匹配 OpenList 实际监听端口

ERR_TOO_MANY_REDIRECTS(重定向循环)#

原因:OpenList 配置了强制 HTTPS,但 Cloudflare SSL 模式不匹配。

解决:将 Cloudflare SSL/TLS 模式设为 Full(非 Strict)。因为 cloudflared 到 localhost 是明文 HTTP,不是 TLS。


下载速度慢 / 超时#

  • Cloudflare 免费版对单文件大小有一定限制
  • Cloudflare → Speed → Optimization 中关闭 Rocket Loader、Mirage 等
  • 检查 cloudflared 日志是否有频繁断连重连
  • 大文件(>100MB)场景需考虑其他方案

error reading config: invalid ingress rule#

原因:YAML 格式错误。

常见原因

  • 使用了 Tab 缩进(必须用空格)
  • 缺少最后的 catch-all ingress 规则
  • hostname 多了空格或少了后缀

建议:用 YAML Lint 在线校验格式。


如何更换域名 / 添加多个域名#

  1. 修改 config.yml,在 ingress 中添加新的 hostname + service 条目
  2. 执行 cloudflared tunnel route dns openlist 新域名.xxx.eu.cc
  3. 重启服务:nssm restart CloudflaredTunnel

示例:

ingress:
- hostname: open.xxx.eu.cc
service: http://127.0.0.1:5544
- hostname: files.xxx.eu.cc
service: http://127.0.0.1:5544
- service: http_status:404

方案总结#

  1. 先总结
特性说明
无需公网 IPNAT / 内网环境均可使用
无需开放端口零入站防火墙规则
自动 HTTPSCloudflare 自动签发和续期证书
全球加速300+ 边缘节点,自动就近接入
费用完全免费
部署耗时约 10 分钟
可靠性4 条冗余隧道连接,自动故障切换
与 OpenList Desktop 兼容完全兼容,无任何冲突
  1. 后日谈
  • 优点
    • 此方法适用于小白,使用少量命令行操作即可完成。
    • 工具安装/使用简便,简单易懂。
    • 包括域名在内,全部流程可以免费完成,对学生党非常友好。
  • 缺点
    • 对于新手来说部署整体耗时长,需要耐心操作。
    • 不是一劳永逸的做法,仅适用于电脑随时开机的场景,包括终端关闭后均无法再次访问。
  • 建议
    • 如果有能力,建议购买云服务器,或搭配宝塔面板/1panel等使用。
    • 可参考北に向かう的文章openlist部署

分享

如果这篇文章对你有帮助,欢迎分享给更多人!

利用Cloudflare Tunnels实现对openlist的域名访问
https://yqamm.cc.cd/posts/251212wp/20260222%E7%BD%91%E6%8C%82/
作者
QTY
发布于
2026-02-23
许可协议
CC BY 4.0

部分信息可能已经过时

目录