Cloudflare Tunnel 可以让 SublinkPro 在不暴露公网 IP、不开放入站端口的情况下,通过 Cloudflare 网络对外提供 Web 访问。SublinkPro 内置 Cloudflare Tunnel 管理页,负责保存 Tunnel token、启动/停止 cloudflared 进程,并展示连接状态。
Note
本文面向“把 SublinkPro Web 管理界面发布到公网域名”的场景。Cloudflare 官方文档同时覆盖私有网络、SSH、RDP 等更多 Zero Trust 用法,详见 Cloudflare Tunnel 官方说明。
传统反向代理通常需要:公网 IP、开放 80/443 入站端口、Nginx/Caddy 配置和证书维护。Cloudflare Tunnel 的模式不同:
浏览器
│
▼
Cloudflare 边缘网络
│ HTTPS / Zero Trust / DNS
▼
cloudflared 主动向 Cloudflare 建立出站连接
│
▼
SublinkPro http://localhost:8000
cloudflared 运行在 SublinkPro 所在机器或容器中,只主动向 Cloudflare 建立出站连接。外部访问先到 Cloudflare,再通过这条 Tunnel 回到 SublinkPro。
适合这些场景:
| 场景 | 为什么适合 |
|---|---|
| 家宽 / NAT / 无公网 IP | 不需要公网 IP,也不需要端口映射 |
| Docker 部署 | SublinkPro 镜像已内置 cloudflared,页面填 token 即可启动 |
| 不想维护 Nginx / Caddy | 公网入口、HTTPS 和 DNS 由 Cloudflare 处理 |
| 希望收敛暴露面 | 服务器只需要能主动连出到 Cloudflare |
- 已有 Cloudflare 账号。
- 你的域名已经添加到 Cloudflare,并由 Cloudflare 托管 DNS。
- SublinkPro 服务可以正常本地访问,例如
http://localhost:8000。 - 服务器可以主动访问 Cloudflare Tunnel 连接端口。Cloudflare 官方建议在受限防火墙环境中先检查
7844端口连通性,参考 Connectivity pre-checks。
部署差异:
| 部署方式 | cloudflared 来源 |
|---|---|
| Docker 官方镜像 | 镜像已内置 cloudflared |
| 二进制 / systemd / 手动部署 | 需要先按 Cloudflare 官方安装文档安装 cloudflared,并确保命令在 PATH 中 |
如果你使用 SublinkPro Docker 官方镜像,可以跳过本节;镜像内已经包含 cloudflared。如果你使用二进制、systemd、宝塔、面板或其他方式运行 SublinkPro,需要先在同一台机器上安装 cloudflared,并确认 SublinkPro 进程能在 PATH 中找到它。
安装完成后先运行:
cloudflared version能正常输出版本号,再回到 SublinkPro 的 用户中心 -> Cloudflare Tunnel 页面启动。
推荐使用 Homebrew:
brew install cloudflared
cloudflared version如果后续需要升级:
brew upgrade cloudflared推荐优先使用 Winget:
winget install --id Cloudflare.cloudflared
cloudflared version也可以到 Cloudflare 官方下载页或 GitHub Releases 下载 Windows 可执行文件:
如果你下载的是单个 cloudflared.exe,请把它所在目录加入系统 PATH,然后重新打开终端验证:
cloudflared versionCloudflare 官方推荐使用 Cloudflare Package Repository。适用于 Debian、Ubuntu、Linux Mint 等 Debian 系发行版:
sudo mkdir -p --mode=0755 /usr/share/keyrings
curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg | sudo tee /usr/share/keyrings/cloudflare-main.gpg >/dev/null
echo 'deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/cloudflared any main' | sudo tee /etc/apt/sources.list.d/cloudflared.list
sudo apt-get update
sudo apt-get install cloudflared
cloudflared version如果你的系统不支持 any 源,也可以按发行版代号选择:
| 系统 | APT 源代号 |
|---|---|
| Debian 12 | bookworm |
| Ubuntu 20.04 | focal |
| Ubuntu 22.04 | jammy |
| Ubuntu 24.04 | noble |
例如 Ubuntu 24.04:
echo 'deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/cloudflared noble main' | sudo tee /etc/apt/sources.list.d/cloudflared.list
sudo apt-get update
sudo apt-get install cloudflared
cloudflared versionRPM 系发行版建议使用 Cloudflare Package Repository 或直接下载 RPM 包。通用快速方式:
curl -L --output cloudflared.rpm "https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-x86_64.rpm"
sudo rpm -i cloudflared.rpm
cloudflared version如果是 ARM64 服务器,把下载地址改为:
curl -L --output cloudflared.rpm "https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-aarch64.rpm"
sudo rpm -i cloudflared.rpm
cloudflared version如果系统已经安装过旧版本,可以用:
sudo rpm -U cloudflared.rpmCloudflare 官方主要提供二进制、deb、rpm、pkg 等发布包。Arch 系用户通常可以直接下载 Linux 二进制:
sudo curl -L "https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64" -o /usr/local/bin/cloudflared
sudo chmod +x /usr/local/bin/cloudflared
cloudflared versionARM64 设备使用:
sudo curl -L "https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-arm64" -o /usr/local/bin/cloudflared
sudo chmod +x /usr/local/bin/cloudflared
cloudflared versionAlpine 用户也可以直接使用官方发布的 Linux 二进制:
sudo mkdir -p /usr/local/bin
sudo curl -L "https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64" -o /usr/local/bin/cloudflared
sudo chmod +x /usr/local/bin/cloudflared
cloudflared versionARM64 设备同样把 cloudflared-linux-amd64 改成 cloudflared-linux-arm64。
不确定发行版包管理器是否适配时,可以按 CPU 架构直接下载:
| 架构 | 下载地址 |
|---|---|
| x86_64 / amd64 | https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64 |
| ARM64 / aarch64 | https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-arm64 |
| ARM | https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-arm |
| 32 位 x86 | https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-386 |
示例:
sudo curl -L "https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64" -o /usr/local/bin/cloudflared
sudo chmod +x /usr/local/bin/cloudflared
cloudflared versionTip
SublinkPro 不需要你运行 cloudflared service install。你只需要安装 cloudflared 命令,然后把 Cloudflare 页面里安装命令最后一段 token 粘贴到 SublinkPro 页面。SublinkPro 会托管 cloudflared 进程的启动和停止。
官方下载页:Cloudflare Downloads。
- 打开 Cloudflare Dashboard。
- 进入 Zero Trust。
- 在左侧菜单进入 Networks -> Connectors -> Cloudflare Tunnels。部分新版界面也可能显示为 Networks -> Tunnels。
- 点击 Create a tunnel。
- Connector type 选择 Cloudflared,点击 Next。
- 填写 Tunnel 名称,例如:
sublinkpro-home、sublinkpro-prod。 - 点击 Save tunnel。
官方步骤参考:Create a tunnel (dashboard)。
保存 Tunnel 后,Cloudflare 会进入安装 connector 的页面,并让你选择运行环境。页面中会出现类似下面的安装命令:
sudo cloudflared service install eyJhIjoi...省略...In0=或 Windows 命令:
cloudflared.exe service install eyJhIjoi...省略...In0=你可以复制整条命令,也可以只复制最后一段 token。SublinkPro 会按空白分割并取最后一段作为有效 token,所以粘贴以下内容都可以:
eyJhIjoi...In0=
sudo cloudflared service install eyJhIjoi...In0=
brew install cloudflared && sudo cloudflared service install eyJhIjoi...In0=
Important
Tunnel token 等价于连接该 Tunnel 的凭据。不要发到 issue、聊天群、日志或截图里。SublinkPro 会加密保存页面提交的 token,状态接口只返回遮罩后的 token。
创建 Tunnel 时,Cloudflare 会继续引导你发布应用。选择 Published applications,添加一个公开访问入口:
| 字段 | 推荐值 |
|---|---|
| Subdomain | sub、sublink 或你希望的子域名 |
| Domain | 选择已托管在 Cloudflare 的域名,例如 example.com |
| Path | 通常留空 |
| Type | HTTP |
| URL | localhost:8000 |
如果你的 SublinkPro 不是默认端口,请把 8000 改成实际端口。
Public hostname: https://sub.example.com
Service type: HTTP
Service URL: localhost:8000
配置完成后保存。此时 Cloudflare 会自动为这个 hostname 创建对应 DNS 记录,并把访问流量转发到 Tunnel。
- 登录 SublinkPro 管理界面。
- 进入右上角头像菜单中的 个人中心。
- 打开 Cloudflare Tunnel 标签页。
- 在 Cloudflare Tunnel Token 输入框中粘贴 token 或 Cloudflare 安装命令。
- 点击 保存配置。
- 点击 启动 Cloudflared。
启动成功后页面会显示:
已安装 cloudflared运行中已保存 token:eyJh********...运行日志中出现Registered tunnel connection等连接日志
如果希望 SublinkPro 重启后自动连接 Tunnel,打开 随服务启动自动连接 Tunnel,然后保存配置。这个开关只使用页面中保存的 token,不支持通过环境变量注入 token。
- 回到 Cloudflare Zero Trust 的 Tunnel 页面,确认 connector 处于在线状态。
- 在浏览器访问你配置的公开域名,例如:
https://sub.example.com
- 确认可以看到 SublinkPro 登录页。
- 登录后检查订阅、节点、任务等页面是否正常加载。
Tip
如果你只通过 Cloudflare Tunnel 访问 SublinkPro,Docker 部署可以不映射宿主机端口。但首次配置前仍需要能从内网或临时端口访问管理界面。
说明 SublinkPro 当前运行环境找不到 cloudflared 命令。
- Docker 官方镜像:确认使用的是包含本功能的新镜像,并重新拉取镜像。
- 非 Docker:按 Cloudflare 官方安装文档安装
cloudflared,并确保cloudflared version可以在 SublinkPro 进程的PATH中执行。
检查:
- token 是否来自当前 Tunnel。
- 服务器是否能主动访问 Cloudflare。
- 防火墙是否允许
cloudflared连接 Cloudflare,尤其是受限网络中的7844端口。 - Cloudflare Zero Trust 的 connector 页面是否出现在线实例。
通常表示 Cloudflare 能到 Tunnel,但 Tunnel 到本地 SublinkPro 不通。
检查 Public Hostname 的 Service URL:
- Docker 内置
cloudflared和 SublinkPro 在同一容器中时,通常填写localhost:8000。 - 非 Docker 部署时,填写 SublinkPro 实际监听地址和端口。
- 如果修改了
SUBLINK_PORT,这里也要同步修改。
这是正常行为。Cloudflare Tunnel 是外部访问入口,停止 cloudflared 后 Cloudflare 无法再把请求转发到 SublinkPro。
一般不需要。Cloudflare Tunnel 已经承担公网入口和 HTTPS 终止。如果你有复杂路径转发、内网多服务聚合或自定义鉴权需求,也可以在本机继续使用 Nginx / Caddy,再让 Tunnel 指向反向代理地址。
- 不要把 Tunnel token 写进公开文档、截图或 issue。
- 如果怀疑 token 泄露,到 Cloudflare Zero Trust 删除旧 connector / 重新生成安装命令,并在 SublinkPro 中清除旧 token 后重新保存。
- 推荐为 SublinkPro 管理界面启用强密码和 MFA。
- 如果管理界面暴露到公网,建议结合 Cloudflare Access、IP 规则或其他访问控制策略限制访问人群。

