node-ws 是一个轻量级的、自包含的 Node.js 应用程序,旨在创建 VLESS-WebSocket 服务。它完全在 Node.js 运行时内部实现协议,无需下载或运行任何外部进程(如 Xray),也无需依赖任何 Web 框架(如 Koa)。
此设计使得本项目资源消耗极低,并能在有严格进程限制的托管平台(如共享主机、PaaS、Serverless 等)上完美运行。
该项目依赖于标准的 Cloudflare CDN 代理(“小黄云”)来处理 TLS 加密和保护源服务器。
本应用的架构极其简洁高效:
- Cloudflare 代理: 您通过 Cloudflare DNS 将一个域名或子域名(例如
sub.yourdomain.com)指向您的服务器 IP 地址,并确保代理状态设置为“已代理”(橙色云朵图标)。 - Node.js 服务器: 应用程序启动一个原生的 Node.js
http服务器,在单个端口(PORT)上同时监听标准的 HTTP 和 WebSocket 流量。 - 协议处理: 当一个 WebSocket 连接请求到达您配置的路径 (
WS_PATH) 时,Node.js 服务器会:- 验证客户端身份。
- 解析 VLESS 协议,获取客户端想要访问的目标地址。
- 与目标地址建立一个标准的 TCP 连接。
- 在客户端和目标地址之间双向转发数据流。
- 订阅链接: 服务器还提供一个简单的 HTTP 路径(
/{S_PATH}),为客户端提供 Base64 编码的订阅链接。
这种纯软件的实现方式确保了最佳的兼容性和最低的资源占用。
- 一个域名。
- 一个 Cloudflare 账户。
- 一个支持 Node.js 的托管平台。
-
配置 Cloudflare:
- 在您的 Cloudflare 账户中,为您的域名添加一个
A记录,指向您服务器的 IP 地址。 - 确保该记录的“代理状态 (Proxy status)”设置为“已代理 (Proxied)”(橙色云朵图标)。
- 在您的 Cloudflare 账户中,为您的域名添加一个
-
上传文件:
- 将
index.js和package.json这两个文件上传到您网站的根目录(例如public_html,wwwroot等)。
- 将
-
部署应用:
- 在您主机的控制面板中,找到“Setup Node.js App”或类似的选项。
- 创建一个新的 Node.js 应用,并确保应用根目录指向您上传文件的位置。
- 通过平台的
npm install功能安装依赖。 - 在应用设置中,配置下文提到的环境变量。
- 启动应用。应用启动后,订阅链接会直接打印在控制台日志中。
| 变量名 | 是否必须 | 默认值 | 说明 |
|---|---|---|---|
PORT |
否 | 3005 |
平台分配给应用的公开端口。通常由平台自动设置。 |
MY_DOMAIN |
是 | - | 必须设置。 您在 Cloudflare 上配置并指向服务器的域名。 |
UID |
否 | (预设值) | 服务的用户 ID。 |
WS_PATH |
否 | /vld |
WebSocket 使用的路径。 |
S_PATH |
否 | (UID的值) | 订阅链接的访问路径。 |
CIP |
否 | cf.877774.xyz |
(可选) 用于生成订阅链接的优选IP/域名。 |
CPORT |
否 | 443 |
对应 CIP 的端口。 |
NAME |
否 | Vls |
订阅链接中节点的名称前缀。 |
FILE_PATH |
否 | ./tmp |
用于存放生成的订阅文件的临时目录。 |
- 通过应用日志直接获取,或访问
https://<MY_DOMAIN>/{S_PATH}
注意: S_PATH 默认为 UID 的值。
- 本程序仅供学习了解, 非盈利目的,请于下载后 24 小时内删除, 不得用作任何商业用途, 文字、数据及图片均有所属版权, 如转载须注明来源。
- 使用本程序必循遵守部署免责声明,使用本程序必循遵守部署服务器所在地、所在国家和用户所在国家的法律法规, 程序作者不对使用者任何不当行为负责。