Cloudflare 免费部署 VPN:Pages、KV 与自定义域实操
整理 Cloudflare Pages + Workers KV + EdgeTunnel 面板的部署流程,并说明免费计划限制、合规风险和更稳妥的替代方案。
这篇文章是视频教程的文字增强版,整理的是 Cloudflare Pages、Workers KV、自定义域和 EdgeTunnel 面板的部署流程。
重要提醒:Cloudflare 的自助服务条款和平台规则会限制把服务主要用作 VPN、开放代理或类似中转用途。本文只适合作为个人学习、临时实验和架构理解参考。正式使用前,请先阅读 Cloudflare Self-Serve Subscription Agreement 和所在地法律法规;如果你的用途涉及多人共享、商业分发、长期流量转发或规避网络管理,请不要按本文部署。
准备工作
你需要提前准备这些东西:
- 一个 Cloudflare 账号
- 一个已经托管到 Cloudflare 的域名
- EdgeTunnel 项目源码或发布压缩包:cmliu/edgetunnel
- 一个支持导入订阅链接或节点链接的代理客户端
- 一个随机后台路径,例如
my-admin-20260428
如果只是想体验流程,可以先使用 Cloudflare Pages 默认分配的 pages.dev 域名。更稳定的做法是绑定自己的子域名,例如 vpn.example.com。
风险先说清楚
这类方案看起来是“免费部署”,但免费不等于无限制。
- 条款风险:Cloudflare 可能限制或停止明显的 VPN、代理、中转流量用途。
- 账号风险:异常流量、滥用投诉、被公开分享的节点,都可能导致项目被封禁或账号受限。
- 限额风险:Cloudflare Workers 和 Pages Functions 有请求数、CPU、子请求和运行时限制,具体以 Workers Limits 为准。
- 代码风险:EdgeTunnel 是第三方项目,部署前应阅读源码、Issue 和 README,确认你理解它会生成哪些入口、配置和订阅内容。
- 域名风险:不要把主站根域名直接用于实验。建议新建独立子域名,便于随时下线和隔离。
如果你想做的是内网访问、远程运维或团队零信任接入,优先看 Cloudflare 官方的 Cloudflare One Connectivity Options,例如 Cloudflare Tunnel、WARP Client 或 Zero Trust 方案。
1. 把域名接入 Cloudflare
如果你的域名还没有接入 Cloudflare,先在 Cloudflare 控制台添加站点,然后按提示把域名注册商处的 nameserver 改成 Cloudflare 提供的 nameserver。
等待 DNS 生效后,在 Cloudflare 的 DNS 页面创建一个准备给 Pages 使用的子域名,例如:
vpn.example.com
这一步可以暂时不填 CNAME,后面在 Pages 里绑定自定义域时 Cloudflare 会引导你补齐。
2. 创建 Workers KV 命名空间
EdgeTunnel 面板需要保存节点配置和订阅数据。进入 Cloudflare 控制台:
Workers & Pages -> KV -> Create namespace
命名空间名称建议用简单可识别的名字,例如:
edge_tunnel
创建后不用手动写入数据,后面把它绑定到 Pages 项目即可。Pages 的绑定规则可以参考官方文档:Pages Functions Bindings。
3. 上传 EdgeTunnel 到 Pages
进入 Cloudflare 控制台:
Workers & Pages -> Pages -> Create a project -> Upload assets
把 EdgeTunnel 的源码或打包后的压缩包上传。不同版本的项目结构可能会变化,上传前建议先阅读仓库 README,确认你拿到的是适合 Pages 部署的版本。
项目创建时可以先保持默认设置。部署完成后,Cloudflare 会给你一个临时域名:
https://your-project.pages.dev
先打开这个地址,确认页面可以访问。如果看到报错,不要急着绑定域名,先去部署日志里看具体错误。
4. 设置 ADMIN 环境变量
为了避免后台入口过于明显,需要设置一个后台路径。进入 Pages 项目:
Settings -> Environment variables -> Add variable
添加变量:
ADMIN=my-admin-20260428
这里的值就是你的后台路径。不要使用 admin、panel、login 这类容易被猜到的词,也不要把它公开写在评论区或群聊里。
保存环境变量后,需要重新部署一次项目,变量才会进入新的部署版本。
5. 绑定 KV 到 Pages 项目
继续进入 Pages 项目设置:
Settings -> Functions -> KV namespace bindings -> Add binding
绑定名称必须按项目要求填写。视频流程和 EdgeTunnel 常见部署方式里通常使用:
KV
然后选择前面创建的 edge_tunnel 命名空间。
保存后再次重新部署项目。如果没有重新部署,页面可能仍然读不到 KV,后台也可能无法保存配置。
6. 打开后台面板
部署完成后,访问:
https://your-project.pages.dev/my-admin-20260428
如果已经绑定了自定义域,也可以访问:
https://vpn.example.com/my-admin-20260428
进入面板后,按页面提示生成订阅链接或节点配置。不同客户端的导入方式不完全一样,一般会在客户端里找到“订阅”“从 URL 导入”或“手动添加节点”。
不要把订阅链接公开发布。订阅链接通常等同于访问凭据,被别人拿到后就可能消耗你的免费额度,甚至触发滥用风控。
7. 绑定自定义域
在 Pages 项目里进入:
Custom domains -> Set up a custom domain
填写你准备好的子域名:
vpn.example.com
如果这个域名已经由 Cloudflare 托管,控制台通常会自动创建或提示你创建对应 DNS 记录。更多细节可以看官方文档:Pages Custom Domains。
绑定完成后,等状态变成 Active,再使用自定义域访问后台和订阅链接。
客户端导入
打开你的代理客户端,找到订阅或节点导入入口,把面板生成的订阅 URL 粘贴进去。导入后先只做连通性测试:
- 能否更新订阅
- 能否连接节点
- 是否频繁超时
- 是否出现 Cloudflare 错误页
- 免费计划额度是否异常消耗
如果只是学习部署流程,测试完成后建议关闭项目或删除订阅,不要长期裸跑。
常见问题
| 问题 | 检查方向 |
|---|---|
1101 | Pages Functions 运行时错误,先看部署日志和函数日志。 |
1027 | Workers 免费计划或路由相关限制,检查账号计划、请求量和项目配置。 |
522 | 回源连接超时,检查自定义域 DNS、代理状态和项目是否正常部署。 |
| 后台打不开 | ADMIN 是否写错,环境变量保存后是否重新部署。 |
| 无法保存配置 | KV 绑定名称是否正确,是否绑定到了正确命名空间。 |
| 自定义域不生效 | Pages 自定义域状态是否 Active,DNS 记录是否冲突。 |
| 客户端无法导入 | 订阅链接是否复制完整,客户端是否支持对应协议格式。 |
更稳妥的替代方案
如果你的目标不是研究第三方代理项目,而是解决真实远程访问需求,可以优先考虑这些官方或更可控的方案:
- Cloudflare Tunnel:适合把内网 Web 服务、安全面板或 SSH 入口暴露到 Zero Trust 后面。
- Cloudflare One / WARP Client:适合团队设备接入、身份认证和访问策略。
- 自建 VPS + 标准 VPN:适合你需要完整控制网络出口、日志、带宽和合规边界的场景。
- Tailscale / Headscale / NetBird:适合个人设备组网和私有网络互联。
把 Cloudflare 免费计划当作学习实验可以,但不要把它当成长期、稳定、无限量的代理基础设施。