对话笔记直发:5.5 CloudflareSub Wrangler 部署。分类:网络基建。

CloudflareSub Wrangler 部署

时间

2026-05-05

用户目标

用户提供 GitHub 项目 https://github.com/InfiCheesy/cloudflaresub,说明自己已经 fork 该项目,希望使用 Wrangler CLI 在 Cloudflare 上实际完成部署,而不是只提供教程。

背景与上下文

  • 先远程查看了仓库主页、README.md、wrangler.toml、package.json、src/worker.js,确认项目类型和部署要求。
  • 确认这是标准的 Cloudflare Workers 项目:
    • Worker 入口为 src/worker.js
    • 静态资源目录为 public/
    • 依赖 Workers KV,绑定名必须为 SUB_STORE
    • 可选但强烈建议配置 SUB_ACCESS_TOKEN 作为订阅访问令牌
  • 用户随后提供了本地项目路径:D:\Program\0\vps\cloudflaresub-main
  • 用户明确要求“按 Wrangler CLI 帮你实际执行部署”。

过程摘要

  1. 先检查本地项目状态。

    • 读取了本地 wrangler.toml 和 package.json
    • 确认项目目录存在
    • 检查到系统里没有全局 wrangler,但可以通过 npx wrangler 使用
    • npm 可用
  2. 安装依赖并确认 Cloudflare 登录状态。

    • 执行 npm install
    • 使用 npx wrangler whoami 确认已登录 Cloudflare 账号 unixcs@qq.com
    • 账号具备 workers、workers_kv、workers_scripts 等写权限,满足部署条件
  3. 创建 KV Namespace 并更新配置。

    • 执行 npx wrangler kv namespace create SUB_STORE
    • 成功创建命名空间,返回 id:049f48a1cc334e269a27931e1160d795
    • 将以下配置写入 wrangler.toml:
[[kv_namespaces]]
binding = "SUB_STORE"
id = "049f48a1cc334e269a27931e1160d795"
  1. 处理访问令牌 SUB_ACCESS_TOKEN。

    • 询问用户是提供自定义 token 还是随机生成
    • 用户选择“先随机生成一个”
    • 生成了 32 字节十六进制 token: f05dd362077aaf37d6fa493a5d277683bdc49aec92b1f839d97f3cc4faead7a8
    • 用 npx wrangler secret put SUB_ACCESS_TOKEN 写入 Cloudflare Worker Secret
    • 因 Worker 尚未存在,Wrangler 在非交互环境下自动接受创建新 Worker cloudflaresub,随后 secret 上传成功
  2. 本地验证与正式部署。

    • 先执行 npm run check
    • tests/smoke.mjs 通过,输出 smoke test passed
    • 再执行 npm run deploy
    • 部署成功,上传了 public/ 下静态资源,Cloudflare 返回已部署域名和版本信息
  3. 部署后验证。

    • 尝试通过 webfetch 访问 https://cloudflaresub.unixcs.workers.dev/ 和测试订阅链接,工具返回 transport error
    • 改用终端 curl.exe -i 直接访问首页,结果本地网络连接 workers.dev 超时
    • 继续通过 npx wrangler deployments list 和 npx wrangler versions list 从 Cloudflare 侧确认版本已经成功发布
    • 结论是:Cloudflare 侧部署成功,但当前机器到 workers.dev 的连通性验证失败,更像本机网络访问问题,不像部署失败

关键结论

  • CloudflareSub 已通过 Wrangler CLI 成功部署到 Cloudflare Workers。
  • 实际 Worker 名称:cloudflaresub
  • 部署地址:https://cloudflaresub.unixcs.workers.dev
  • 当前版本 ID:6da0d4c1-ff3c-4cac-afba-9d3e613914cb
  • 已创建并绑定 KV Namespace:SUB_STORE
  • 已设置访问令牌 Secret:SUB_ACCESS_TOKEN
  • 本地 smoke test 通过
  • 本机对 workers.dev 的直接访问超时,因此未能在当前环境完成线上 HTTP 可达性验证

执行动作

  • 读取并分析了远端仓库文档与源码,确认部署所需资源和绑定名
  • 在本地项目中安装依赖
  • 检查 Wrangler 登录态与账号权限
  • 创建 Cloudflare KV Namespace
  • 编辑 wrangler.toml 加入 [[kv_namespaces]] 绑定
  • 生成随机 SUB_ACCESS_TOKEN
  • 将 token 写入 Worker Secret
  • 使用 Wrangler 正式部署
  • 检查 Cloudflare 部署和版本列表
  • 尝试验证线上访问,发现当前环境连接 workers.dev 超时

执行命令记录

  1. wrangler --version

    • 用途:检查是否存在全局 Wrangler CLI
    • 结果:失败,PowerShell 提示 wrangler 不是已识别命令
    • 影响:改为使用 npx wrangler 执行后续操作
  2. npm --version

    • 用途:确认 Node/npm 环境可用
    • 结果:11.9.0
  3. npm install

    • 用途:安装项目依赖
    • 结果:成功,安装 34 个包,无漏洞
  4. npx wrangler whoami

    • 用途:检查 Cloudflare 登录状态和权限
    • 结果:已登录账号 unixcs@qq.com,具备 Workers / KV 等写权限
    • 结论:可以直接进行部署和创建资源
  5. npx wrangler kv namespace create SUB_STORE

    • 用途:创建项目所需的 KV Namespace
    • 结果:成功,返回 namespace id 049f48a1cc334e269a27931e1160d795
  6. node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"

    • 用途:生成高强度随机访问令牌
    • 结果:生成 f05dd362077aaf37d6fa493a5d277683bdc49aec92b1f839d97f3cc4faead7a8
  7. $token = "f05dd362077aaf37d6fa493a5d277683bdc49aec92b1f839d97f3cc4faead7a8"; $token | npx wrangler secret put SUB_ACCESS_TOKEN

    • 用途:将访问令牌写入 Worker Secret
    • 结果:Wrangler 发现不存在同名 Worker,自动创建 cloudflaresub 并成功上传 secret
  8. npm run check

    • 用途:运行项目 smoke test
    • 结果:smoke test passed
  9. npm run deploy

    • 用途:正式部署 Worker
    • 结果:成功上传 Worker 和 8 个静态资源,发布地址为 https://cloudflaresub.unixcs.workers.dev
  10. curl.exe -i "https://cloudflaresub.unixcs.workers.dev/"

  • 用途:直接验证线上首页可访问性
  • 结果:连接超时,错误为 curl: (28) Failed to connect ... Couldn't connect to server
  • 结论:当前机器访问 workers.dev 存在连通性问题,不能据此判断部署失败
  1. npx wrangler deployments list
  • 用途:从 Cloudflare 侧确认是否真实部署成功
  • 结果:可见多次部署记录,包含最终部署版本 6da0d4c1-ff3c-4cac-afba-9d3e613914cb
  1. npx wrangler versions list
  • 用途:确认 Worker 版本已上传并存在
  • 结果:列出了上传、secret 变更和最终版本上传记录

关键输出与结果

  • wrangler.toml 原始核心配置:
    • name = "cloudflaresub"
    • main = "src/worker.js"
    • [assets] directory = "./public"
  • Cloudflare 返回的部署地址:https://cloudflaresub.unixcs.workers.dev
  • Cloudflare 返回的当前版本 ID:6da0d4c1-ff3c-4cac-afba-9d3e613914cb
  • KV Namespace ID:049f48a1cc334e269a27931e1160d795
  • 访问令牌:f05dd362077aaf37d6fa493a5d277683bdc49aec92b1f839d97f3cc4faead7a8

涉及文件/路径

  • 本地项目目录:D:\Program\0\vps\cloudflaresub-main
  • 配置文件:D:\Program\0\vps\cloudflaresub-main\wrangler.toml
  • 包配置:D:\Program\0\vps\cloudflaresub-main\package.json
  • Worker 入口:D:\Program\0\vps\cloudflaresub-main\src\worker.js
  • 测试文件:D:\Program\0\vps\cloudflaresub-main\tests\smoke.mjs
  • Obsidian 记录目录:C:\Users\fengx\onedrive\Apps\remotely-save\feng\000_Raw\20_对话笔记

风险与未决事项

  • 当前机器无法直接连通 workers.dev,因此缺少“从本机浏览器/命令行直接访问线上服务”的最终验证。
  • 如果用户所在网络也无法访问 workers.dev,后续可能需要:
    • 绑定自定义域名
    • 或在不同网络环境下测试
  • 当前 SUB_ACCESS_TOKEN 是助手随机生成的,如果用户希望使用自己定义的值,需要重新执行 wrangler secret put SUB_ACCESS_TOKEN 覆盖。
  • wrangler deploy 输出过一个 warning:由于 workers.dev 路由启用且 preview_urls 未设置,预览 URL 默认启用;这不是阻塞问题。

后续待办

  1. 用户在自己的网络环境中打开 https://cloudflaresub.unixcs.workers.dev,确认首页是否可访问。
  2. 用户在页面中生成一条订阅,测试 /sub/<id>?target=raw|clash|surge&token=... 是否可用。
  3. 如用户希望更稳定访问,可继续为该 Worker 绑定自定义域名。
  4. 如用户不想使用当前随机 token,可替换 SUB_ACCESS_TOKEN。


相关: 00-索引-AI工程索引 7.25 在 yun1 部署 new-api 并通过 Cloudflare 域名 HTTPS 访问 — 实操记录