写在前面的话
咳咳,这个系列教程居然不知不觉更新到第三期了,这一期的教程是教大家从零开始编译PlayFast加速器 (https://github.com/narwhal-cloud/playfast)的客户端,并完成加速器分流规则的编写。这期教程比以往的两期相对来说更难,但效果挺不错的,相信如果大家有耐心且细心地看完文章也会成功的。好了,话不多说,让我们开始吧。
前期准备
- 一台空闲的VPS(我这里以阿里云香港轻量服务器为例,以下简称服务器A)
- 一台能够连接到外网的Windows电脑(用V2RayN,Clash之类的软件就可以啦)
- 一颗善于谷歌和AI搜索的脑瓜
- SSH工具和FTP工具(如FinalShell,WinSCP等,推荐Finalshell)
- 一点点本地电脑硬盘空间
- 一点点代码知识,比如说带#的是说明文字,并不是实际的代码
- 一个优质线路VPS的节点(只能是Shadowsocks、VLESS、SOCKS5三种协议,以下用Shaowsocks协议节点作为演示
(其实也推荐这个协议,因为加密不多))
1.本地编译环境搭建
1.1 安装 Git
- 前往Git官网https://git-scm.com/downloads,选择Windows版本的git进行下载安装,安装过程一路回车即可。

1.2 安装 Go
- GO语言是本次编译
PlayFast的语言后端,因此我们需要前往Go语言官网https://golang.google.cn/dl/进行下载安装,选择图示最新的msi文件下载并一路回车安装即可

1.3 安装 Node.js
- 编译
PlayFast加速器呢还需要用到Node.js,用于编译加速器的Wails前端界面,我们同样前往Node.js的官网地址https://nodejs.org/en/download/并下载其 LTS (长期支持) 版本,并一路回车使用默认选项安装 (确保npm被一同安装)。

1.4 安装 VS Code (推荐)
- 其实如果你有其他代码编辑软件的话也可以不用下载VS Code,我这里是用习惯了VSC修改 Go 源代码和 JSON 配置文件了,所以才让大家下载这个,同样的,去VS Code官网:https://code.visualstudio.com/下载最新版本,一路回车安装即可。

2.配置编译环境的网络配置 (GOPROXY)
由于Go 语言默认的模块代理服务器 (proxy.golang.org) 在中国大陆地区无法访问。因此我们必须将其配置为国内镜像,不然后续编译api校验的时候会报错。(海外的用户可以忽略这一点,直接跳到第三点)
我们用Win+R打开命令提示符 (cmd),执行以下两条命令,设置 Go 代理:
# 1. 设置 Go 模块代理
go env -w GOPROXY=https://goproxy.cn,direct
# 2. 设置 Go 校验和数据库代理
go env -w GOSUMDB=sum.golang.google.cn
3.编译 Wails 核心及前端依赖
原项目的 build.bat 脚本在我电脑上不知道为什么跑不起来。因此后续所有编译步骤都是我手动编译的。
3.1 克隆项目
Win+R打开 cmd,输入以下命令克隆源代码:
cd Desktop
git clone https://github.com/narwhal-cloud/playfast
cd playfast
3.2 安装 Wails CLI
# 此命令会下载并安装 wails 命令行工具
go install github.com/wailsapp/wails/v2/cmd/wails@latest
3.3 检查环境
运行 Wails doctor 命令来检查所有依赖是否齐全:
wails doctor
必须确保 Wails、Go、Node.js、npm 和 WebView2 全部显示为 Installed (已安装) 状态。如果 Node.js 或 npm 缺失,请返回步骤 1.3。

4. 修改源码并编译核心
在编译前,我们必须修改源码指向我们自己的后端 API,并添加Playfast原项目缺失的编译标签。
4.1 修改 API 端点
- 使用 VS Code 打开
playfast文件夹。 - 找到并打开文件
internal/api/patch.go - 将其中的
Domain变量修改为你任意一台空闲的服务器A(也可以是你想拿来当作游戏加速节点的VPS)。- 将const Domain = “https://playfast.narwhal-api.com” // 改为: const Domain = “http://你服务器A的IP”
- Ctrl+S保存文件。
这里的第三点是什么意思呢?你可以理解为我们加速器连接的是存放信息的服务器A,服务器A上存放着你加速器要显示的公告信息、加速器分流规则以及节点信息,而你用服务器B、C、D创建的节点信息会在我往下的教程中汇总成一个json文件上传到服务器A,加速器在启动时会连接服务器A并获取服务器A上的节点文件,这样一来加速器就会读到你在服务器A上保存的其他的服务器BCD的节点信息,并变成节点选项让你选择连接,所以这台拿来存放节点信息以及分流规则的服务器A的配置以及线路的要求不用太高,当然如果你说你只有一台线路好的服务器怎么办呢?很简单,那这台服务器就既充当你放公告以及分流规则的服务器A,也充当节点服务器B的角色。

4.2 核心编译
PlayFast 客户端依赖 TUN 模式 (gVisor) 和 Clash API,但我自己在编译的时候却显示缺少这两个API,因此我这里进行手动添加。
在 cmd挂载playfast 文件夹后,运行以下编译命令:
# -tags "..." 命令会强制编译器把 gVisor (TUN) 和 Clash API 打包进去
wails build -tags "with_clash_api,with_gvisor"
等待大概几分钟。等到提示编译完成后,你会在 playfast\build\bin 目录中找到 PlayFast.exe 文件。

至此我们加速器的本体就已经搭建好了,接下来要做的就是写我们的部署后端API了。
5.后端 API 服务器部署 (Caddy)
PlayFast 加速器客户端启动时,会访问步骤 4.1 中你填写的地址(以下简称服务器A),并请求 读取5 个配置文件(别急,在步骤6会教你怎么写)。接下来需要你的服务器A上使用 Caddy 搭建一个简单的 Web 服务器来提供这些文件。
以下命令在你的服务器A (系统为Ubuntu/Debian) 上执行。
5.1 安装 Caddy
依次执行以下命令
sudo apt update
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt install caddy
5.2 配置 Caddy
- 创建文件目录:
sudo mkdir -p /var/www/playfast - 配置
Caddyfile:找到这个目录下的文件:/etc/caddy/Caddyfile,并用WinSCP或者FinalShell等软件打开 - 清空 Caddyfile 里的所有内容,并粘贴以下配置 (将
YOUR_SERVER_IP替换为你的服务器A的IP):http://你的服务器A的IP地址:80 {
root * /var/www/playfast
file_server
} - 重启 Caddy:
sudo systemctl restart caddy
5.3 开放防火墙
登录你的云服务商控制台,放行 TCP 80 端口。(当然我觉得你可能已经放完了)
6.创建配置文件
这是本教程的核心。我这里教大家写一点常见的分流规则,少浪费一点你珍贵的优质线路流量。
在本地电脑上新建一个文件夹,叫什么都可以,我这里叫my-backend,然后创建以下 5 个文件

1. announcement
- 注意这个announcement文件没有后缀名,就叫这名
- 内容: (Announcement文件里面写的是你想展示在加速器主页的公告,必须是 HTML格式)
- #公告内容可以随便写,只要符合HTML规则即可。向文件内写入如下信息:
<h3>欢迎使用</h3> <p>节点由我个人维护。</p>

2. proxy.json
- (重要) 我们这里使用最稳定的 Shadowsocks (SS) 协议作为加速协议。请确保你优质线路的服务器B\C\D上已搭建好 SS 节点并开放了相应防火墙端口。
- 往文件里输入以下代码,记得保存。
[ { "name": "想叫什么都行(SS)", "protocol": "shadowsocks", "method": "aes-256-gcm", "password": "YOUR_SS_PASSWORD", "host": "YOUR_SERVER_IP", "port": 你ss节点的端口} ]

那如果我们有多个ss/s5/vless节点怎么办呢?诶,你只需要按照下列图示多加几条即可,如果有一条或者多条ss协议就按照图一的ss节点示例,然后根据根据图二示例,把vless的部分改成ss的节点示例就行了。

3. black-list.json
往文件里输入以下代码,记得保存。
{
"version": 3,
"rules": []
}

4. direct-list.json (分流规则文件)
往文件里输入以下代码,记得保存。
{
"version": 3,
"rules": [
{
"domain_suffix": [
".cn",
"163.com",
"126.com",
"baidu.com",
"bilibili.com",
"qq.com",
"tencent.com",
"weibo.com",
"sina.com.cn",
"taobao.com",
"tmall.com",
"jd.com",
"zhihu.com",
"douban.com",
"douyin.com",
"kuaishou.com",
"mihoyo.com",
"hooverse.com"
]
},
{
"ip_cidr": [
"192.168.0.0/16",
"10.0.0.0/8",
"172.16.0.0/12"
]
}
]
}
5. version.json
往文件里输入以下代码,记得保存。
{
"version": "v0.1",
"url_windows": "",
"sha256_windows": ""
}
最后使用Finalshell、 WinSCP 等工具,将它们全部上传到服务器的 /var/www/playfast 目录。

7.Enjoy Your Gaming Time!!!
玩的开心!!!
至此,所有教程内容就都已经结束了,打开我们编译好的加速器,选择你需要的节点进行加速就可以了,因为这个加速器本质上是利用你的节点进行游戏访问,什么延迟啊丢包啊什么的都取决于你和你节点之间的网络环境,但大部分情况下是够用的。如果出现开了加速器也没有办法打游戏的情况,请检查你是否开了其他代理软件。另外这个加速器本质上就是一个singbox,所以导入节点以后是可以直接当代理软件用的。Anyway,好久没更新长篇教程了,没想到花了一个上午来写哈哈哈(我的论文还没写的说2333),不管怎么说,希望本篇教程对你有所帮助吧,✿✿ヽ(゚▽゚)ノ✿完结撒花!


大佬 一步一步照着教程走 最后报这个 是因为啥,求教 start box error 0 initialize router: parse rule-set[0]: invalid sing-box rule-set file
可能是编译的时候文件没下完整,要重新编译一下加速器
谢谢老哥回复, 已解决 ,问题是下载github那两个文件一直下不下来,导致校验文件格式的时候没过