如果你还没有合适的服务器,可以看看 雨云 的入门套餐作为起点;注册立享5折优惠。
一个不需要服务器的方案
上一篇我们讲了自建 VPS 通道(《自建代理全教程》)。那套方案稳定可控,但要买服务器、要维护、要担心流量费。如果你的需求是「偶尔访问 GitHub / HuggingFace / Docker」,其实还有个零服务器成本的选择——把代理跑在 Cloudflare 的边缘网络上。
edgetunnel 就是干这个的开源项目:它利用 Cloudflare Workers / Pages 的免费额度,实现了一个 VLESS / Trojan / Shadowsocks 服务端。你没有自己的服务器,但 Cloudflare 全球几百个节点就是你的”服务器”。
⚠️ 本文涉及 Cloudflare 账号操作与公网服务部署,请务必妥善保管你的管理员密码与订阅地址,不要公开分享。
它能做什么
- 免服务器:不需要 VPS、不需要域名解析到你自己的机器;
- 免费:Workers/Pages 免费计划包含每天 10 万次请求;
- 自带管理面板:网页后台改配置、看用量、管节点;
- 自带订阅系统:一键生成 Clash / v2rayN 可导入的订阅链接。
原理很简单
Cloudflare 的 Workers/Pages 能在它的边缘节点上运行 JavaScript。edgetunnel 把这些代码变成「代理入口」:
你的设备 ──VLESS over WebSocket──> Cloudflare 边缘节点(edgetunnel 代码)──> GitHub / HF / Docker
(流量对运营商来说 = 访问 Cloudflare 的普通 HTTPS)
关键在免费额度:一个 WebSocket 连接只算一次请求,连接建立后的消息不额外计费。所以哪怕长时间挂着,消耗也很少——这也是它能长期免费跑的原因。
准备工作
- 一个 Cloudflare 账号(免费注册);
- (可选但推荐)一个托管在 Cloudflare 的域名,用于绑定自定义入口;
- 客户端:Clash Verge / v2rayN 等。
第一步:获取项目代码
去 GitHub 打开项目 cmliu/edgetunnel,复制仓库里的 _worker.js 全文(这是唯一的”服务端代码”)。
第二步:部署到 Cloudflare
有两种部署方式,任选其一:
方式 A:Workers(推荐新手)
1. 打开 dash.cloudflare.com → Workers & Pages → Create
2. 选 Hello World 模板,名字随意(如 my-proxy)
3. 进入 Edit code,删除默认代码,粘贴 _worker.js 全文
4. Save and Deploy
方式 B:Pages + GitHub
1. 把 cmliu/edgetunnel fork 到自己 GitHub
2. Cloudflare Pages → Create → 连接 Git → 选刚 fork 的仓库
3. 首次部署即可
第三步:绑定 KV(必做,否则报错)
edgetunnel 用 KV 存储配置,绑定名有严格要求:
Settings → 绑定(Bindings)→ 添加 KV 命名空间
变量名称:KV ← 必须是大写 KV
命名空间:新建一个(如 edgetunnel-config)
创建后需要重新部署一次让绑定生效。
第四步:设置环境变量
在 Settings → Variables 里添加(两个都建议设置):
ADMIN = 你的管理密码 ← 必填,面板登录用
KEY = 一串自定义字符串 ← 可选,作为"快速订阅"路径
UUID = 固定 UUIDv4 ← 可选,不设则会由 ADMIN+KEY 自动派生
小提示:如果之后改了 ADMIN 或 KEY,派生出来的节点 UUID 也会变,客户端需要重新拉订阅。想要节点长期稳定,建议直接设一个固定的 UUID。
第五步:绑定自定义域名(可选)
默认你会得到一个 xxx.workers.dev 或 xxx.pages.dev 的子域名,够用。想用自己域名的话,在 Workers 的 Triggers / Pages 的 Custom domains 里添加子域即可,Cloudflare 会自动配证书。
第六步:访问管理面板
部署完成后,浏览器打开:
https://你的域名/admin
输入 ADMIN 密码登录,就能看到管理界面:配置修改、节点信息、用量统计都可以在这里完成。
第七步:客户端接入
最简单的方式是直接用快速订阅:浏览器访问
https://你的域名/你的KEY
会自动跳出一个订阅链接。在 Clash Verge / v2rayN 里「从 URL 导入」这个链接,节点列表就出来了。Clash 用户也可以手动指定订阅类型为 mixed 或 clash,按客户端支持选。
第八步:防止额度被刷(重要)
免费额度是每天 10 万次请求。如果域名被扫描器盯上,人家高频刷新你的页面,额度很快会被耗尽。建议在 Cloudflare 加一条 WAF 规则,只放行必要路径:
Security → WAF → Custom rules → Create rule
表达式(仅放行订阅、面板、WebSocket,其余拦截):
(http.host eq "你的域名" and not (
starts_with(http.request.uri.path, "/sub")
or starts_with(http.request.uri.path, "/admin")
or http.request.uri.path eq "/login"
or http.request.uri.path eq "/你的KEY"
or lower(http.request.headers["upgrade"][0]) contains "websocket"
))
动作:Block
这样普通请求/扫描都会被挡,只留代理和订阅功能能访问,额度基本就不会被白嫖了。
和自建 VPS 方案怎么选
| 对比 | edgetunnel(Cloudflare) | 自建 VPS(Xray) |
|---|---|---|
| 服务器成本 | 零(免费额度) | 按年付费 |
| 部署难度 | 10 分钟 | 约半小时 |
| 可维护性 | 低(改配置走面板) | 完全可控 |
| 速度/带宽 | 受 Cloudflare 免费额度与线路影响 | 取决于 VPS 带宽 |
| 适合 | 轻量浏览、应急备胎 | 重度使用、大流量下载 |
我的实际建议:两个都留着。日常重度使用走自建 VPS;临时出差、网络切换、VPS 维护窗口期,切到 edgetunnel 顶上。反正它不要钱,多一条路总没坏处。
常见问题
Q:报「未绑定 KV 命名空间」
变量名必须严格是 KV(大写),绑定后要重新部署一次。
Q:改了 ADMIN/KEY 后节点全失效
UUID 由 ADMIN+KEY 派生。设一个固定的 UUID 环境变量就不会再变,客户端也无需反复更新。
Q:网页访问很慢 / 加载不出订阅
订阅的 clash 格式会经过第三方转换服务,偶发慢属正常,可换 mixed 格式直出节点;若 WAF 规则挡了境外转换服务,把「仅限大陆」类规则改成按路径白名单放行。
Q:额度消耗快怎么办
先看 Cloudflare 面板统计是谁在请求。刷网页(大量小请求)比看视频(一条长连接)更耗额度;确认开好第八步的 WAF 规则,把非白名单路径全部 Block。
结语
edgetunnel 的价值在于「用 10 分钟换一条零成本的备用通道」。它不够快、有额度上限,但作为应急和补充,体验远超临时找镜像源。搭配上一篇的自建 VPS 方案,基本可以覆盖绝大多数访问 GitHub / HuggingFace / Docker 的场景。
如果你还没有 Cloudflare 账号,去 dash.cloudflare.com 免费注册一个即可开始。需要服务器跑主力方案的话,也可以从便宜的年付小机器入手慢慢升级。