多隧道并发
保存任意数量的隧道,可同时连接多条。每条隧道都有独立的状态指示、启停按钮与实时日志,一条挂了不影响其他几条。
基于 Python + GTK4 的现代化桌面应用:保存任意数量的 cloudflared access 隧道,多条同时运行,每条都有独立的状态灯、启停按钮与实时日志。
复制一条 trycloudflare.com 快速隧道链接再切回窗口,还可以快速连接。
下面这个窗口是用原生 HTML / CSS / JS 复刻的:同样的标题栏、 同样的 boxed-list、同样的状态灯与文案。点「+」新建、点圆钮连接、点终端图标读日志、切到「版本管理」下载 cloudflared —— 行为都跟着真实代码走。 隧道、版本号与日志均为演示数据,可随意折腾,随时用工具条右侧的按钮重置。
窗口较宽,可左右滑动查看完整界面
不是把命令行包一层壳。多隧道状态机、版本管理、剪贴板识别、端口校验,都是从日常使用里长出来的细节。
保存任意数量的隧道,可同时连接多条。每条隧道都有独立的状态指示、启停按钮与实时日志,一条挂了不影响其他几条。
窗口获得焦点后读一次剪贴板,发现 *.trycloudflare.com 链接就询问是否连接;点「是」时主机名和名称都填好了,只剩一个端口号要敲。
自动识别系统与架构,从官方 Releases 拉取版本列表,一键下载安装、显示进度、随时取消;多版本并存,随时切换策略。
端口范围检查、低于 1024 的权限提示、本地端口冲突检测,全部在启动之前拦下来——而不是让你对着 cloudflared 的报错猜。
程序启动时自动连接标了「自动连接」的隧道、一键复制等效命令行、连接失败时从提示条直接跳到日志、退出前确认断开。
高级设置里可以追加任意 cloudflared 参数,原样拼到命令行末尾;引号不配对会在保存时就被拦下,而不是启动时才炸,报错还能在日志里找到。
全流程甚至不用碰鼠标:从复制链接到隧道跑起来,唯一的动作是敲一个端口号、按一次回车。
在任意机器上跑一条快速隧道,把输出的 https://xxx.trycloudflare.com 整条复制下来。
应用拿到焦点后读一次剪贴板。只有「整条剪贴板就是一个快速隧道链接」才会弹窗询问,而且同一条链接一个会话只问一次。
新建对话框里主机名与「yyyymmdd hh:mm:ss 快速隧道」都已经填好,光标停在端口框上(默认值已选中),输入数字后按 Enter 即可,全程不用碰鼠标。
这些设计决策都写在代码和文档里,这里整理成几条最常被问到的。
因为 cloudflared access 的 ssh / rdp / smb 并不是不同的协议实现,它们只是 tcp 的别名:四个子命令共用同一个 Action 和同一组 flag,源码中没有任何地方读取子命令名;ssh://、rdp:// 这类 scheme 也只用来推导缺省的 --url,对转发行为没有任何影响。
因此本应用统一执行:cloudflared access tcp --hostname <隧道主机名> --url <监听地址>:<端口>
只有一个例外:cloudflared 2020.6.1 之前的古董版本还没有 tcp 子命令;不过官方只支持一年以内的版本,就别惦记它们了。
不需要。在「版本管理」页点「安装最新版」,应用会按系统与架构匹配官方资源名(如 cloudflared-linux-amd64),下载后自动 chmod +x 并记下位置。
你也可以用系统 PATH 里已有的 cloudflared,或指定某个已安装的版本;「自动:最新已安装版本」是默认策略。
不会。它只在「整个窗口获得键盘焦点」时读一次,并延迟 150 ms。窗口内部控件之间切焦点不算「获得焦点」,所以不会反复弹窗。
可以同时连,每条隧道是一个独立的 cloudflared 子进程,有各自的日志与退出码。
启动前会做本地端口冲突检测:localhost 与 ::1 视为同一地址,0.0.0.0 / :: 与任何具体地址都算冲突。
安装包只发 Linux(x86_64 / aarch64 的 Flatpak 与便携版);代码本身跨平台,macOS 上装好 PyGObject 与 GTK4 / libadwaita 也能从源码跑。cloudflared 二进制的下载支持 amd64 / arm64 / arm / 386 自动匹配,macOS 取 .tgz 包解压安装。
隧道配置是纯文本 JSON,放在 ~/.config/cloudflared-tunnel-manager/config.json,手改、备份、同步到别的机器都可以(写坏了也不会炸,启动时会自动回退默认值)。
下载的 cloudflared 按版本分目录,放在 ~/.local/share/cloudflared-tunnel-manager/versions/<版本>/。
所有构建产物都在 GitHub Actions 里自动生成并上传到 Releases,文件名与架构一一对应。
沙箱内运行,只申请 Wayland、网络、图形加速,以及自身配置 / 数据 / 缓存目录权限;随 GNOME 运行时统一升级。
自带 GTK4 / libadwaita typelib,不挑发行版,解压后直接运行,适合装在 U 盘或临时环境里。
适合想改点什么的你。装好 PyGObject 与 GTK4 / libadwaita(macOS 用 Homebrew 装同名包),然后一条命令起。
# 克隆仓库并安装依赖
git clone https://github.com/lingyicute/Cloudflared-Helper-Desktop
cd Cloudflared-Helper-Desktop
sudo apt install python3-gi gir1.2-gtk-4.0 gir1.2-adw-1
python3 main.py
# 安装并启动 Flatpak 包
flatpak install --user ./cloudflared-tunnel-manager-x86_64.flatpak
flatpak run uk._92li.cftm.CloudflaredTunnelManager
# 解压便携包(--self-test 可先验环境)
tar -xzf cloudflared-tunnel-manager-*-linux-x86_64.tar.gz
./cloudflared-tunnel-manager/cloudflared-tunnel-manager
去 Releases 下载安装包,或从源码运行。装好后先去「版本管理」拿一个 cloudflared,再把常用隧道一条条存进来,以后就是点一下的事。