项目地址:byJoey/cfnew(当前默认分支 core-only)· 内核版本 2026.10.17.2 · 热度约 1.7 万 Star / 8524 Fork(2026-11 仓库页数据)· 独立面板:cfnew.xy.kg(源码 byJoey/cfnew-panel)· 作者:博客 / YouTube @joeyblog

CFnew 走的是和全家桶面板相反的路线:把内核做到极致精简,把面板拆出去。精简内核只有 37,806 字节,比原完整版小了约 92%,只负责代理转发;控制台、优选操作和订阅生成全部交给独立面板。流量直接连你自己的 Worker,订阅域名是面板、节点入口还是你的 Worker。本文按官方 README 与完整变量表的最新口径(2026.10.17.2)写全两种部署、变量、协议与客户端的对应关系和常见问题。提醒:本项目供学习与网络技术研究,请遵守当地法律法规与平台条款。

先搞清结构:内核 + 面板两件套

  • 内核(部署在你自己的 Cloudflare Workers / Pages):只做 VLESS WS / Trojan WS / VLESS XHTTP 转发,打开 Worker 首页只显示 hello,这是预期行为
  • 面板(独立项目):用官方公共面板 cfnew.xy.kg 即可,也可以自己部署一份(Vercel 一键部署,见 cfnew-panel 仓库)。在面板里填你的 Worker 域名 + 同一个 UUID,就能读配置、改设置、生成订阅
  • 保存配置需要 KV:内核绑定 KV(绑定名 C 或 c)后才能在面板在线保存;不绑 KV 也能用——读环境变量配置、生成订阅,只是不能在线保存
  • 配置优先级:KV 已保存的配置 > 环境变量 > 内置默认值。这条很关键:改了环境变量不生效,多半是 KV 里存过同名值在覆盖它

准备工作

  • 一个 Cloudflare 账号(免费计划即可)
  • 一个 UUID:用任意 UUID 在线生成器生成并记好,它既是节点密码也是面板登录凭据;也可以让面板帮你生成(自己生成可用命令:Mac/Linux 终端 uuidgen,Windows PowerShell [guid]::NewGuid().ToString())
  • 决定部署在 Pages 还是 Workers(两者内核相同,只是承载方式不同),下载对应的文件
  • 一个客户端(按文末的协议对应关系选)

第一步:下载对的文件

部署方式下载文件怎么用
Cloudflare Pages发行页的 Pages.zip整包直接上传,不用解压;包根目录只有 _worker.js
Cloudflare Workers发行页的 _worker.js在 Worker 编辑器里完整替换代码再部署
校验SHA256SUMS.txt用 SHA-256 核对下载文件完整性

下载入口:最新版发行页。两个坑别踩:GitHub 自动生成的 Source code(zip/tar.gz)是整个仓库源码,不能当 Pages 部署包上传;仓库里的 pages.zip 与发行的 Pages.zip 字节一致,用哪个都行。部署前先自己生成一个 UUID 备用(面板登录凭据就是它)。

部署方法一:Cloudflare Pages

  1. 下载 Pages.zip
  2. Cloudflare 控制台 → Workers 和 Pages → 创建应用 → Pages → 直接上传/上传资产,创建项目,整包上传并部署
  3. 项目「设置 → 变量和机密」,在生产环境添加文本变量 u,值填你的 UUID(大写 U 也支持)
  4. 需要在线保存设置时:新建一个 KV 命名空间,在项目绑定设置里添加 KV 绑定,绑定名填 C 或 c
  5. 兼容日期设置为 2026-01-20
  6. 添加变量、绑定、改兼容日期之后重新部署一次,新设置才进生产版本
  7. 用 pages.dev 地址或给项目绑自己的域名,然后接入面板(见下节)

如果 Pages 页面只让拖文件夹:解压后上传包含 _worker.js 的目录,确保 _worker.js 在上传内容的根目录。

部署方法二:Cloudflare Workers

  1. 新建 Worker,先完成一次初始部署,再进代码编辑器
  2. 下载 _worker.js,把内容完整粘贴替换编辑器里的代码(ES Module 格式,保留 import 和 export default;不要复制 GitHub 网页渲染出来的 HTML),保存并部署
  3. 「设置 → 变量和机密」添加 u = 你的 UUID;要在线保存再加 KV 绑定 C 或 c
  4. 兼容日期设为 2026-01-20,重新部署后绑可用域名
  5. 打开 Worker 首页显示 hello 就是成功了,管理和订阅都去独立面板

接入面板、拿订阅

在 YouTube 打开原视频 ↗

  1. 打开 cfnew.xy.kg,填你自己的 Worker 域名和同一个 UUID。域名填 HTTPS 根地址,不带 UUID、不带路径和查询参数
  2. 在配置管理里选协议、优选来源、出站方式等,点保存(没绑 KV 时只能读配置、生成订阅,不能保存)
  3. 复制面板生成的订阅地址,导入客户端。注意:订阅域名是面板的,节点的 SNI / Host 和实际代理入口仍然是你的 Worker
  4. UUID、自定义路径和完整订阅链接都等于钥匙,妥善保管;面板里「记住节点」只存在当前浏览器,删掉已保存节点不会删 Worker 或 KV 里的配置

自部署面板(Vercel 一键部署,可选)

不想用公共面板,可以把面板部署到自己的 Vercel(源码 byJoey/cfnew-panel,作者有 图文教程):

  1. 点仓库里的「Deploy to Vercel」按钮,登录 Vercel 并连接 GitHub,创建仓库副本(名字可用 cfnew-panel)
  2. 项目设置:根目录保持 ./,Application Preset(框架预设)选 Other(被自动识别成 Node 时手动改回),不用填构建命令,点 Deploy
  3. 等状态变 Ready,用分配的 项目名.vercel.app 打开即是你的面板(公共模式:首页填 Worker 域名 + UUID 使用)

只给自己用时,在 Vercel 面板项目(不是 Worker)里再加一个变量收紧入口:

项目填写内容
Namew(小写)
Valuehttps://你的Worker域名(只填根地址,不带 UUID、/sub 或路径)
EnvironmentProduction(如需预览环境也生效再勾 Preview)

保存后对正式部署执行一次 Redeploy 才生效。设了 w 之后:面板首页只显示 hello(正常),控制台从 https://面板域名/你的UUID 进入,订阅是 https://面板域名/你的UUID/sub?target=clash(target 可换 singbox / surge / loon / quanx / stash / base64 / v2ray,不带 target 时按客户端请求头自动识别)。面板绑自己的域名时,DNS 的 CNAME 要设为仅 DNS(灰云),且不要和 Worker 的域名共用同一个完整域名。

两个高频坑:

  • 浏览器能打开、客户端更新订阅失败:多半是 Vercel 的 Deployment Protection(Vercel Authentication) 把未登录请求拦了——到面板项目 Settings → Deployment Protection 放行该域名的公开访问,再让客户端更新
  • 改了 w 没变化:确认变量加在面板项目、环境选对,并已 Redeploy;旧的 Preview 链接仍是旧变量,用正式域名验证

常用变量(全 32 项见官方完整变量表)

变量加在 Worker / Pages 项目里;除 u 和 KV 绑定外,大多数设置可以直接在面板改,不必逐项加变量。

变量默认用途
u / U自行设置代理 UUID,也是面板登录凭据
C / c未绑定KV 命名空间绑定(在线保存配置用),不是普通文本变量
d / D空自定义面板登录路径,如 /Admin/Panel
ev / et / exyes / no / no分别开 VLESS WS、Trojan WS、VLESS XHTTP
p / P空指定 ProxyIP,支持 host:port 与 [IPv6]:port
s / S空SOCKS5 / HTTP / HTTPS 出站代理
qj / QJ空出站策略:空=代理优先,no=直连优先,only=只走代理
yx / YX空手填优选地址列表,每行一个,可带端口和备注
yxURL 等空在线优选列表地址,配合面板「仓库优选」开关
jk / JKno开家宽链式订阅,面板出现「CLASH 家宽」入口
freeCpu / FREE_CPUnoFree CPU 预算保护(见下节)

完整变量表:docs/variables.md(32 项配置、别名、默认值、请求参数与 API 都在里面)。

协议与客户端对应关系(最容易踩坑的一节)

功能支持情况
入站VLESS WebSocket、Trojan WebSocket、VLESS XHTTP(不支持 Shadowsocks 入站)
XHTTPHTTP/2 + stream-one;不要改 packet-up / stream-up,auto 也不保证兼容
出站直连、ProxyIP 回退、SOCKS5、HTTP、HTTPS
DNSVLESS 的 UDP DNS 转发;不提供通用 UDP / 游戏 UDP / QUIC 隧道
订阅格式Base64/V2Ray、Clash、Stash、sing-box、Surge、Loon、Quantumult X;sing-box 用 1.12+ 配置格式

按客户端开协议:

  • Surge:必须开 et=yes(Trojan)。Surge 订阅只输出 Trojan,只开 VLESS 时生成不出节点
  • Clash / Mihomo、sing-box、Loon、Quantumult X:用 VLESS 保持 ev=yes。这些格式会把 XHTTP 来源转换成 WS,只开 ex、关了 ev,生成的 VLESS 节点会不可用
  • 支持 XHTTP 的客户端:开 ex=yes,用 Base64/VLESS 分享链接导入,保持 HTTP/2 与 stream-one

优选地址怎么填

优选域名、优选 IP、仓库优选默认开启,IPv4/IPv6 与三网筛选默认开启;有手填列表时优先用手填的。

104.16.1.1:443#手填IPv4
[2606:4700::1111]:8443#手填IPv6
edge.example.com:443#手填域名

每行一个,也支持英文逗号分隔;端口会保留到订阅里;IPv6 带端口必须加方括号(以上地址只示意格式,不保证从你的网络可用)。在线列表填 yxURL 并开「仓库优选」,可在面板获取、筛选、测试后勾选保存。注意面板显示的是面板服务器视角的延迟,实际体验以客户端实测为准;手填优选列表上限 262144 字符,再大就改用在线 URL。

自定义路径登录

设置 d=/Admin/Panel 后,在公共面板第二项填 /Admin/Panel 或 Admin/Panel 即可登录,支持多级路径与中文、大小写必须一致。登录成功后面板会读取真正的代理 UUID 并生成稳定入口,所以改了 d 之后,原来复制的 UUID 订阅仍然可用(d 是管理入口;tp 是 Trojan 密码与 XHTTP 兼容路径,用途不同,别混)。旧内核不支持自定义路径时,先用 UUID 进入再更新 _worker.js。

Free CPU 保护(2026.10.17.2 新增)

默认关闭。面板里开启保存,或设变量 freeCpu=yes / FREE_CPU=yes(KV 设置优先)。开启后单条连接共享 384 KiB / 96 个数据块的预算,超了主动断开、客户端需重连;新连接重新计算,开关修改只对新连接生效。要说清的是:这是流量与处理次数预算,不能保证免费账号 CPU 零超限;正在进行的下载、视频和长连接可能被中断,也不保证自动续传——长下载多的场景慎开。

从旧完整版升级

  1. 备份原 Worker 代码,记下原 u、KV 绑定、域名和兼容日期
  2. 上传本版 _worker.js 或 Pages.zip,保留原 UUID 和原 KV 绑定,兼容日期设 2026-01-20,重新部署(上传新内核不会主动清空 KV)
  3. 打开独立面板,用原域名 + UUID 登录,确认原有配置还在
  4. 从面板重新复制订阅到客户端——旧的 https://Worker域名/UUID/sub 地址不再生成订阅
  5. 检查协议与客户端兼容性(本版 XHTTP 用 stream-one);想回退就把备份的旧代码按原样重新上传,再换回完整版订阅入口

常见问题与检查维修

现象先检查
打开 Worker 只有 hello正常,去独立面板登录
面板接入/鉴权失败域名能否公网访问、u 是否已随部署生效、UUID 是否一致;自定义路径查大小写;Cloudflare Access 或验证码挑战会阻断 API
能生成订阅但保存失败KV 是否绑为 C/c、是否绑到生产环境、绑定后是否重新部署
改环境变量不生效先重新部署,再查 KV 里有没有同名旧值在覆盖
旧订阅地址失效从独立面板重新复制订阅
订阅拿到 hello/HTML是不是用了 Worker 首页地址,或面板被 Vercel 登录保护拦住
XHTTP 不通开 ex、客户端支持 XHTTP、HTTP/2、stream-one 三件套对齐
下载一会儿就断查 Free CPU 保护是否开启且已达预算
Pages 上传失败用发行里的 Pages.zip,别传整个源码包;解压确认 _worker.js 在根目录

视频教程

和同系列另外两款的区别

  • edgetunnel:全家桶面板的成熟代表,协议含 Shadowsocks,教程与社区资源最多,见《edgetunnel 2.1 部署教程》
  • CFNext:功能最全的订阅管理面板,MASQUE / 家宽 / 多后端聚合,见《CFNext 部署教程》
  • CFnew 的定位是轻内核 + 外置面板:转发层小而透明、变量与口径全公开,适合在意可控性和想少被面板绑架的人

资料来源

  • 项目仓库 README 与完整变量表(2026-11,内核 2026.10.17.2):https://github.com/byJoey/cfnew
  • 独立面板仓库:https://github.com/byJoey/cfnew-panel