Cloudflare Worker 自建节点教程:edgetunnel 部署、KV 绑定与订阅生成

Cloudflare Worker 自建节点教程:edgetunnel 部署、KV 绑定与订阅生成

本文记录一套基于 Cloudflare Workers/Pages 的自建节点方案,使用开源项目 cmliu/edgetunnel。项目源码、完整 Worker 代码和配置说明可以从官方仓库获取;本文中提到的相关代码也整理在参考文章中:

相关代码与资源:kjgx668.blogspot.com

一、先说明这套方案到底是什么

这里说的“自建”,指的是自己部署 Worker、自己绑定 KV、自己管理域名和订阅配置。它不是在 VPS 上安装完整的 Xray 或 sing-box 服务端。

实际链路大致是:

客户端 → 你的域名 → Cloudflare Worker → Cloudflare 边缘或配置的上游 → 目标网站

因此,出口线路、速度和稳定性会受到 Cloudflare 节点、地区网络、优选 IP 和上游配置影响。如果你的要求是“所有流量固定从自己的 VPS 公网 IP 出口”,还需要另外部署 VPS 服务端,本文最后会说明接入方式。

二、需要准备什么

  • 一个 Cloudflare 账号。
  • 一个已经接入 Cloudflare 的域名,建议使用子域名,例如 node.example.com。
  • 一个 Cloudflare Workers KV 命名空间。
  • 一个单独设置的后台密码和订阅路径密钥。

不建议使用来路不明的修改版代码或安装包。部署时直接从项目官方仓库获取 _worker.js。

三、创建 KV 命名空间

  1. 登录 Cloudflare 控制台。
  2. 进入 Workers & Pages,找到 KV。
  3. 创建一个新的命名空间,例如 edgetunnel-config。

命名空间名称可以自定义,后面真正重要的是绑定名称必须填写为 KV。

四、创建并部署 Worker

  1. 进入 Workers & Pages。
  2. 点击创建 Worker,先使用默认名称完成创建。
  3. 打开代码编辑器。
  4. 从官方仓库复制 _worker.js 的完整内容,替换编辑器中的示例代码。
  5. 点击保存并部署。

官方源码地址:

https://github.com/cmliu/edgetunnel/blob/main/_worker.js

这份文件比较长,不建议在博客中复制一份容易过时的完整源码。项目更新后,以官方仓库中的版本为准。

五、设置环境变量

打开 Worker 的设置页面,在 Variables、Variables and Secrets 或类似名称的页面中添加以下变量。

变量是否必需用途建议
ADMIN必需后台管理密码使用独立的高强度密码,并按 Secret 保存
KEY建议订阅地址的路径密钥使用随机字符串,区分大小写
UUID可选固定节点 UUID必须是 UUID v4;不设置时由程序自动生成
OFF_LOG建议关闭 KV 请求日志设置为 1
DEBUG不需要调试日志生产环境不要开启
PROXYIP可选指定反代地址先留空,不要把普通 VPS IP 直接填进来
URL可选默认伪装页面先留空,使用项目默认页面

最小配置只需要:

ADMIN=请换成你自己的后台密码
KEY=请换成随机订阅密钥
OFF_LOG=1

如果想固定 UUID,可以在 WSL、Linux 或 macOS 中生成一个 UUID v4:

python -c 'import uuid; print(uuid.uuid4())'

注意:如果不设置 UUID,程序会根据后台密码和密钥计算节点 UUID。以后修改 ADMIN 或 KEY,订阅 Token 和自动生成的 UUID 可能随之变化。

六、绑定 KV

  1. 进入 Worker 的设置页面。
  2. 找到 Bindings 或 KV namespace bindings。
  3. 添加一个 KV 命名空间绑定。
  4. 绑定名称填写:KV。
  5. 选择前面创建的 edgetunnel-config 命名空间。
  6. 保存并重新部署。

如果绑定名称不是 KV,后台配置无法正常保存,通常会出现 noKV 或配置初始化失败。

七、绑定自定义域名

  1. 进入 Worker 的 Domains、Routes 或 Custom Domains 页面。
  2. 添加一个自己的子域名,例如 node.example.com。
  3. 等待 Cloudflare 完成 DNS 和 HTTPS 证书配置。

如果暂时没有自定义域名,也可以先使用 Cloudflare 分配的 Worker 域名测试。正式使用时建议绑定自己的子域名,并且只使用 HTTPS。

八、进入后台初始化配置

访问:

https://node.example.com/admin

输入 ADMIN 密码。第一次访问时,程序会在 KV 中初始化默认配置。

默认配置通常会使用 VLESS、WebSocket、TLS 和本地优选地址。可以先保持默认值,确认节点能够使用后,再逐项调整。不要一开始同时修改协议、传输方式、路径和优选地址,否则出错时不容易判断原因。

九、生成订阅地址

假设环境变量设置为:

KEY=n9KxExampleKey

通用订阅地址为:

https://node.example.com/n9KxExampleKey

也可以根据客户端类型显式指定格式:

# Clash / Mihomo
https://node.example.com/n9KxExampleKey?clash

# sing-box
https://node.example.com/n9KxExampleKey?singbox

# Surge
https://node.example.com/n9KxExampleKey?surge

订阅路径中的 KEY 区分大小写。不要把这个地址公开到群聊、截图或公开文章中,否则别人可以直接使用你的 Worker 和订阅配置。

十、部署后的检查方法

  1. 访问 /admin,确认可以登录。
  2. 在后台保存一次配置,确认没有 KV 错误。
  3. 把订阅地址导入客户端,确认能够拉取配置。
  4. 先测试普通网页,再测试视频和需要代理的服务。
  5. 观察 Cloudflare 的 Worker 请求量和错误日志。

常见现象:

  • 打开后台显示 noKV:检查 KV 是否绑定,绑定名称是否精确为 KV。
  • 订阅地址返回 404:检查 KEY 是否设置,路径大小写是否一致,以及是否已经重新部署。
  • 订阅能拉取但节点不可用:先保持默认协议和路径,检查域名 HTTPS 是否正常,再检查优选地址和网络线路。
  • 修改密码后旧订阅失效:这是预期现象。修改 ADMIN 或 KEY 后,重新生成并导入订阅。
  • 速度不稳定:Worker 本身不是固定 VPS 出口,线路质量会随 Cloudflare 节点、地区和优选 IP 变化。

十一、如果要接入自己的 VPS

本文这套 Worker 部署不等于已经拥有自己的 VPS 出口。要使用自己的服务器,需要先在 VPS 上部署兼容的 Xray、sing-box 或 Trojan 服务端,再将自己的节点订阅接入后台。

项目源码提供了两种方向:

  1. 在后台关闭本地优选生成,并填写自己的订阅地址到 SUB。
  2. 使用项目文档中提供的 Trojan fallback 路径,例如:
/trojan=你的VPS地址:端口

Trojan fallback 对上游服务有额外要求,包括密码、TCP、TLS 和 WebSocket 形式需要匹配。不要把任意 VPS IP 直接填入 PROXYIP,它是反代地址配置,不是通用的 VPS 节点字段。

如果目标是“固定从自己的 VPS 出口”,建议先单独完成 VPS 服务端部署和直连测试,再接入 Worker。这样排查问题时,可以明确区分 VPS 服务端、Cloudflare 转发和客户端订阅三部分。

十二、隐私和安全提醒

  • 项目源码默认会把请求 IP、ASN、地区、访问 URL 和 User-Agent 写入 KV 日志;不需要日志时,设置 OFF_LOG=1。
  • 不要在后台填写 Cloudflare Global API Key。只有确实需要统计功能时,才使用权限尽量小的 API Token。
  • 订阅转换功能可能会调用外部转换服务。敏感订阅不要直接交给不信任的第三方转换器。
  • 不要打开 DEBUG 后长期运行,也不要把 ADMIN、KEY、UUID 发布出来。
  • Cloudflare 的额度、网络策略和服务条款会影响实际使用。所谓“免费”和“无限流量”不能当作稳定性或额度保证。
  • 请遵守所在地区法律法规、Cloudflare 条款和目标网站的服务条款。

参考资料

项目更新较快,部署前请以官方仓库当前 README 和源码为准。本文只介绍部署和配置思路,不提供任何公开共享节点。

评论

此博客中的热门博文

使用GitHub搭建网页