本教程基于最新精简版代码,全程通过网页操作,不需要在电脑上安装任何软件,也不需要敲命令。你只需要有 Cloudflare 账号和 GitHub 账号,按步骤点一点就能完成部署。
第一步:部署检测 Worker(CheckSocks5)
检测 Worker 负责验证 SSTP 节点能不能用,必须自己部署一个。全程在网页上完成。
1. 打开 Worker 源码仓库:
https://github.com/lsh8848/cm-Workers-CheckSocks5
2. 点击右上角 Fork,把仓库复制到你的 GitHub 账号下。
3. 进入 Cloudflare 控制台:
https://dash.cloudflare.com/
登录后,点击左侧菜单的 Workers 和 Pages。
4. 点击“创建” → 选择“创建 Worker”。
给 Worker 起个名字,比如 check-sstp,然后点击部署。
5. 部署完成后,点击“编辑代码”。
把编辑器里默认的代码全部删掉,然后打开你 Fork 的仓库,找到 _worker.js 文件,复制全部内容,粘贴到 Cloudflare 编辑器里。
6. 点击右上角“保存并部署”。
7. 部署完成后,你会得到一个 Worker 域名,格式类似:
https://check-sstp.你的用户名.workers.dev
把这个域名记下来,后面第五步要用,每个人部署的域名都不一样。
第二步:部署 edgetunnel(核心使用端,获取 UUID 和域名)
edgetunnel 是 VLESS 代理 + 链式代理工具,你的节点最终通过它来使用。注意:UUID 和节点域名是在这一步配置和获取的,不需要写在 vpngate.py 里!
1. 打开 edgetunnel 源码仓库:
https://github.com/cmliu/edgetunnel
2. 在 Cloudflare 控制台再创建一个新的 Worker。
名字随便起,比如 edgetunnel,点击部署。
3. 进入“编辑代码”,把默认代码全部删掉。
打开 edgetunnel 仓库的 _worker.js 文件:
https://github.com/cmliu/edgetunnel/blob/main/_worker.js
复制全部内容,粘贴到 Cloudflare 编辑器,然后点击保存并部署。
4. 在 Worker 的“设置”选项卡中,添加环境变量。
找到 变量 → 添加变量:
- 变量名称:ADMIN
- 值:你的管理员密码(自己设一个)
点击保存。
5. 绑定 KV 命名空间。
在 绑定 选项卡中选择 添加绑定 + → KV 命名空间 → 添加绑定:
- 变量名称:KV
- 选择一个已有的命名空间或创建一个新的
点击添加绑定。
6. 绑定自定义域(可选,推荐)。
在 Worker 的 触发器 选项卡,点击 添加自定义域,填入你已转入 CF 的域名,例如 vless.你的域名.com,等待证书生效。
7. 访问你的域名 /admin,输入管理员密码登录后台。
在后台首页记下你的 UUID 和 节点域名,后面要用。
nodes.txt 地址。
第三步:Fork 本项目仓库
小白可以下载此代码,工作流自动更新分24小时和2小时自动更新
下载地址一:【点此跳转】
下载地址二:【点此跳转】
1. 打开项目仓库:
https://github.com/hezhanleiok/gate
2. 点击右上角 Fork,把整个仓库复制到你的 GitHub 账号下。
3. 进入你 Fork 后的仓库,确认根目录有这些文件:
- vpngate.py(Python 主脚本)
- requirements.txt(依赖文件,内容应为 requests)
- .github/workflows/vpngate.yml(工作流文件)
第四步:修改 vpngate.py 文件(一处)
在仓库中打开 vpngate.py,点击右上角铅笔图标进入编辑模式。你只需要修改一处:
搜索 `NODES_URL`(大约在代码第 307 行):
NODES_URL = os.environ.get("NODES_URL", "https://YOUR_GITHUB_USERNAME.github.io/gate/nodes.txt")
把 YOUR_GITHUB_USERNAME 换成你自己的 GitHub 用户名,例如:
NODES_URL = os.environ.get("NODES_URL", "https://hezhanleiok.github.io/gate/nodes.txt")
vpngate.py 中没有 EDT_UUID 和 EDT_DOMAIN 这两个变量。因为这两个参数属于 edgetunnel 本身,在第二步你已经配置好了。你只需要把 nodes.txt 的 URL 填入 edgetunnel 后台,edgetunnel 会自动用它的 UUID 和域名去生成能用的节点,你完全不用担心无法使用!
修改完成后,点击页面底部的 Commit changes 保存。
第五步:配置 Secret 密钥与修改工作流文件
为了防止你的检测 Worker 域名公开后被其他人盗用刷爆额度,我们将检测域名保存在 GitHub Secrets(隐藏密钥)中,让工作流自动读取。
1. 添加 GitHub Secret(配置隐藏变量)
- 进入你 Fork 后的仓库,点击顶部菜单的 Settings(设置)。
- 在左侧边栏依次点击 Secrets and variables → Actions。
- 点击右上角的绿色按钮 New repository secret:
- Name(名称):填入
DOMAIN - Secret(内容):填入你在第一步得到的完整检测 Worker 链接(例如:
https://check-sstp.你的用户名.workers.dev/check?sstp=vpn:vpn@)
- Name(名称):填入
- 点击 Add secret 保存。
2. 修改工作流文件(.github/workflows/vpngate.yml)
在仓库中打开 .github/workflows/vpngate.yml,点击右侧铅笔图标进入编辑模式。
第 1 处【必改项 - 核心密钥】:
找到 CHECK_WORKER: 大概在35行,修改为调用刚添加的 Secret:
修改前(明文暴露域名):
CHECK_WORKER: "https://你的域名/check?sstp=vpn:vpn@"
修改后(通过 Secret 安全读取):
CHECK_WORKER: ${{ secrets.DOMAIN }}
第 2 处【可选项 - 日志站点展示】:
这一步的作用仅仅是在 GitHub Actions 运行完成后的控制台日志尾部打印一行提示信息,改不改完全不影响脚本和节点的自动化抓取运行。如果你希望日志里显示的 URL 对应你自己的 GitHub 账号,大概再71行,可以顺手修改:
修改前:
- name: Show site URL
run: 'echo "site: https://仓库用户名.github.io/gate/ ..."'
修改后:
- name: Show site URL
run: 'echo "site: https://你的GitHub用户名.github.io/gate/ ..."'
修改完成后,点击页面右上角的 Commit changes 保存。
第六步:启用 GitHub Pages
1. 进入你的仓库 → Settings → Pages。
2. 在 Build and deployment 下:
- Source 选择 GitHub Actions
- 目录选择
/public(如果工作流中指定了路径)
3. 保存后,等待第一次工作流运行完成,你的页面就会发布在:
https://你的GitHub用户名.github.io/gate/
第七步:运行自动化流程
手动运行(推荐首次使用):
- 进入你的仓库 → Actions 标签页。
- 左侧选择 VPN Gate Node Check 工作流。
- 点击右侧 Run workflow → Run workflow,即可手动触发一次检测和部署。
自动运行(可选):
如果你希望 GitHub 自动定时更新,需要在工作流文件中修改 on: 下方的 cron 表达式。下面我为你列出了几种常见的时间间隔:
| 运行频率 | cron 表达式 | 小白说明 |
|---|---|---|
| 每 30 分钟 | */30 * * * * |
每小时的 0 分和 30 分各跑一次 |
| 每 60 分钟(1 小时) | 0 * * * * |
每小时的 0 分跑一次 |
| 每 4 小时 | 0 */4 * * * |
每 4 小时跑一次(0点、4点、8点...) |
| 每 12 小时 | 0 */12 * * * |
每 12 小时跑一次(0点和12点) |
| 每 24 小时(每天一次) | 0 0 * * * |
每天 0 点(午夜)跑一次 |
完整的工作流定时写法如下(这里以 每 60 分钟 为例,你只要把 cron 后面的内容替换成表格里你想要的即可):
on:
schedule:
- cron: "0 * * * *"
workflow_dispatch:
保存后,GitHub 就会按照你设置的时间自动运行工作流了。
第八步:验证部署结果
工作流运行完成后,访问你的 GitHub Pages 地址,应该能看到节点列表页面。
同时,仓库的 public/ 目录下会生成 3 个文件:
| 文件 | 用途 |
|---|---|
data.json |
节点检测结果的原始数据 |
index.html |
展示页面(GitHub Pages 的首页) |
nodes.txt |
纯节点行,填 URL 自动轮换(最核心) |
第九步:在 edgetunnel 后台配置自动轮换
- 登录 edgetunnel 后台(
https://你的域名/admin)。 - 找到 自定义优选IP 输入框。
- 填入你的
nodes.txt的网址:
https://你的GitHub用户名.github.io/gate/nodes.txt - 保存。edgetunnel 每次生成订阅时会自动拉取这个文件,解析
$sstp://并套上链式代理。 - 在你的客户端(v2rayN、Clash 等)中订阅 edgetunnel 的订阅地址,即可使用自动轮换的 SSTP 节点。
常见问题
Q:为什么 vpngate.py 里没有 UUID 和域名?会影响使用吗?
A:完全不会影响。UUID 和域名是 edgetunnel 自身的配置,你在第二步已经在 edgetunnel 后台设置好了。vpngate.py 只负责提供节点货源(nodes.txt),edgetunnel 会自动用它的 UUID 和域名对节点进行封装,最后输出给你客户端订阅的。所以这两项不需要写在 vpngate.py 里。
Q:Worker 域名怎么找?
A:在 Cloudflare 控制台 → Workers 和 Pages → 点击你创建的 Worker → 右侧可以看到域名。
Q:工作流运行失败怎么办?
A:进入 Actions 标签页,点击失败的那次运行,查看日志中的错误信息。常见原因:CHECK_WORKER 域名填错、requirements.txt 缺失、Python 文件名不对。
Q:edgetunnel 的 UUID 和域名在哪里看?
A:登录 edgetunnel 后台(https://你的域名/admin),在后台首页就能看到。
Q:需要花钱吗?
A:不需要。Cloudflare Workers 免费版每天有 10 万次请求额度,GitHub Pages 和 GitHub Actions 对公开仓库完全免费。

文章评论 (4)