-
本项目用于在 PaaS 平台上部署 Vmess WebSocket 和 Trojan Websocket 协议,支持 CI/CD 和拉取容器镜像两种部署方式。
已更换为 sing-box 核心,如需部署原 Xray 核心版本,请前往 archieve 分支。
-
可以启用 Cloudflared 隧道,以内网穿透模式接入 Cloudflare,可以使用 Cloudflare 支持的全部十多个端口。
-
支持 WARP 出站。可以通过 CLASH_MODE 变量控制 chatgpt、bing、netflix、disney、dazn、spotify 和 imgur 是否分流到 WARP 出站。
修改 content/config-wg.json 文件 169 行,可自定义分流规则。
-
支持直接访问 .onion tor 网络域名(需要客户端使用 socks/http 代理方式或者 Fakeip/Fakedns 透明代理环境)。
-
支持 WS-0RTT 降低延迟,Xray 核心客户端在 Websocket 路径后加上 ?ed=2048 即可启用。
-
支持 Clash api,可以连接 yacd 面板,选择 Direct / WARP / Tor 出站,启用/关闭分流功能,查看当前速度、连接、日志等信息。
请勿滥用,PaaS 平台账号封禁风险自负
请勿使用本仓库直接部署
Heroku 部署方法
Heroku 已于2022年11月末关闭免费服务
- 点击本仓库右上角Fork,再点击Create Fork。
- 在Fork出来的仓库页面上点击Setting,勾选Template repository。
- 然后点击Code返回之前的页面,点Setting下面新出现的按钮Use this template,起个随机名字创建新库。
- 项目名称注意不要包含
v2ray
和heroku
两个关键字(用户名以example
为例,修改后的项目名以demo
为例) - 登陆heroku后,浏览器访问 dashboard.heroku.com/new?template=https://github.com/example/demo
支持 CI/CD 平台(Render,Northflank,Doprax等)部署方法
- 点击本仓库右上角Fork,再点击Create Fork。
- 在Fork出来的仓库页面上点击Setting,勾选Template repository。
- 然后点击Code返回之前的页面,点Setting下面新出现的按钮Use this template,起个随机名字创建新库。
- 项目名称注意不要包含
v2ray
和xray
等关键字。 - 在 PaaS 平台管理面板中连接你新建立的 github 仓库。
- 按下文变量部分设置所需的变量,如果需要设置内部 HTTP 端口,默认为3000,也可以自行设置 PORT 变量修改。
- 然后部署即可。
支持拉取容器镜像 PaaS 平台(Koyeb,Northflank等)部署方法
- 点击本仓库右上角Fork,再点击Create Fork。
- 在Fork出来的仓库页面上点击Setting,勾选Template repository。
- 然后点击Code返回之前的页面,点Setting下面新出现的按钮Use this template,起个随机名字创建新库。
- 项目名称注意不要包含
v2ray
和heroku
等关键字。 - 点击仓库Settings > Actions > General,滚动到页面最下方,将Workflow permissions设置为Read and write permissions。
- 点击页面右侧 Create a new release,建立格式为 v0.1.0 的tag,其它内容随意,然后点击 Publish release。
- 大概不到一分钟后,github action 构建容器镜像完成,点击页面右侧 Packages, 再点击进入刚生成的 Package。
- 点击页面右侧 Package settings,在页面最下方点击 Change visibility,选择 public 并输入 package 名称以确认。
- 容器镜像拉取地址在 package 页面 docker pull 命令示例中,其它部署步骤请参阅具体平台文档。需要设置的环境变量见下文,内部监听端口默认为3000,也可自行设置 PORT 环境变量更改。
Patr 部署方法
- 点击本项目网页上部 Code 按钮,再点击 Create codespace on main。
- 点击 Patr 管理面板左侧 Docker Repository,建立新 Repo。
- 点击进入 Patr 新建立的 Repo,页面最下方有三条命令:
- 在之前打开的 Codespace 网页中,点击终端,执行上图中的三条命令,中间需要输入 Patr 账户密码。
- 回到 Patr 网页,点击 Infrastructure > Deployment > Create Deployment,Name 随意,Image Details 选择刚才建立的 Repo,Region 选择 Singapore。
- 点击 NEXT STEP,Ports 设置为 3000,按下文变量部分设置好需设定的变量。将 Startup Probe 和 Liveness Probe 端口设置为 3000,路径为
/
。
- 点击 NEXT STEP,将 Horizontal Scale 拉到最左侧,直到价格显示 Free,然后点击 CREATE。
- 点击 Infrastructure > Deployment,点击 START 即启动容器,点击 PUBLIC URL 获得服务域名。
对部署时需设定的变量做如下说明。
变量 | 默认值 | 说明 |
---|---|---|
VmessUUID |
ad2c9acd-3afb-4fae-aff2-954c532020bd |
Vmess 用户 UUID,用于身份验证,务必修改,建议使用UUID生成工具 |
SecretPATH |
/mypath |
Websocket代理路径前缀,务必修改为不常见字符串 |
PASSWORD |
password |
Trojan 协议密码,务必修改为强密码。同时也是 Clash api 连接密钥 |
ArgoJSON |
可选,Cloudflared 隧道 JSON 文件,保持默认空值为禁用 Cloudflared 隧道 | |
OVERRIDE_DEST |
可选,默认使用流量探测强制重新解析域名,保证 WARP 解锁效果并可以解决客户端 DNS 污染问题。但会造成 Tor 浏览器无法连接成功。设置为 disable 将禁用此功能 |
|
BLOCK_QUIC_443 |
true |
可选,默认禁止 443 端口 quic 流量,强制网页流量使用 TCP 协议 |
WG_MTU |
1408 |
可选,WireGuard MTU 值,如果 WARP 出站工作不正常,可尝试调整 |
CLASH_MODE |
rule |
可选,默认 "rule" 模式会开启自动分流功能,设置为 direct 将禁用分流功能 |
NodeStatus_DSN |
可选,NodeStatus 探针服务端连接信息,保持默认空值为禁用。示例:wss://username:password@status.mydomain.com |
-
支持的协议:Vmess WS 80端口(仅限 Heroku)、Vmess WS TLS 443端口、Trojan WS TLS 443端口、Vmess WS 80/8080等端口 + Cloudflared 隧道、Vmess WS TLS 443/8443等端口 + Cloudflared 隧道、Trojan WS TLS 443/8443等端口 + Cloudflared 隧道。
Cloudflared 隧道模式可以使用 Cloudflare 支持的全部端口:https://developers.cloudflare.com/fundamentals/get-started/reference/network-ports/
-
Vmess 协议 AlterID 为 0。
-
Websocket路径分别为:
# Vmess ${SecretPATH}/vm # Vmess + 全局 WARP 出站 ${SecretPATH}/wgvm # Trojan ${SecretPATH}/tr # Trojan + 全局 WARP 出站 ${SecretPATH}/wgtr
为了减少特征,浏览器直接访问Websocket路径,会返回401而不是bad request。
-
使用IP地址连接时,无tls加密配置,需要在 host 项指定域名,tls加密配置,需要在sni(serverName)项中指定域名。
-
Xray 核心的客户端直接在路径后面加 ?ed=2048 即可启用 WS-0RTT,v2fly 核心需要在配置文件中添加如下配置:
"wsSettings": { "path": "${WSPATH}", "maxEarlyData": 2048, "earlyDataHeadName": "Sec-WebSocket-Protocol" }
-
yacd 面板 连接 URL 为 https://<域名><SecretPATH 变量>/api,Secret 密钥为 PASSWORD 变量值。
可以通过代理选项卡中的 Select 代理组,选择指定出站。(容器重启后需要重新选择)
以下三种方式均可以将应用接入 CloudFlare,在某些网络环境下配合cloudflare优选ip可以提速。
- 为应用绑定 Cloudflare 上托管的域名。
- 通过 CloudFlare Workers 反向代理,workers.dev域名被sni阻断,无法使用tls协议链接,可以使用80端口无tls协议连接。也可以使用 Workers Routes 功能,绑定自己的域名。
- 通过 Cloudflared 隧道接入 CloudFlare
- 设置Cloudflare Workers服务
- 代理服务器地址/host域名/sni(serverName)填写上面创建的Workers service域名。
- 前提在 Cloudflare 上有一个托管的域名,以example.com为例。以下为 Windows 系统命令举例。
- 下载 Cloudflared
wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-windows-amd64.exe
- 运行 cloudflared login,此步让你绑定域名。
.\cloudflared-windows-amd64.exe login
- 运行 cloudflared tunnel create 隧道名,此步会生成隧道 JSON 配置文件。
.\cloudflared-windows-amd64.exe tunnel create mytunnel
- 运行 cloudflared tunnel route dns 隧道名 argo.example.com, 生成cname记录,可以随意指定三级域名。
.\cloudflared-windows-amd64.exe tunnel route dns mytunnel mytunnel.example.com
- 重复运行上面两步,可配置多个隧道。
- 部署时将 JSON 隧道配置文件内容填入 ArgoJSON 变量。
- 如果 PaaS 平台有容器空闲休眠的限制,无法通过 Cloudflared 隧道唤醒容器,保持长期运行建议使用 uptimerobot 之类网站监测服务定时 http ping PaaS 平台所提供的域名地址。