feat: Go agent source (stdlib-only rewrite of agent.js) + parity/install docs; binaries ship as release assets

This commit is contained in:
aaaamoooo
2026-10-20 06:55:29 +00:00
parent c6615f0ab5
commit ddfc27efba
13 changed files with 2626 additions and 0 deletions
+46
View File
@@ -0,0 +1,46 @@
# Go Agent 安装/更新流程(自 v0.6.8 起默认)
Agent 已从 Node.js(`agent/agent.js`)切换为 Go 静态二进制
(`agent-go/`,约 6MB,实测 RSS 约 12MB,节点机不再需要安装 Node.js)。
协议、环境变量、状态文件格式与 Node 版完全一致(见 `PARITY.md`),
可直接接管已有节点的状态。
## 新装(scripts/agent-install.sh)
- 默认从 GitHub Release 下载二进制:
`https://github.com/aaaamoooo/NexusGate/releases/download/agent-v0.6.8/nexusgate-agent-linux-<arch>`
(`<arch>` 由 `uname -m` 决定:x86_64→amd64,aarch64→arm64)
- 安装到 `/opt/nexusgate-agent/nexusgate-agent`(0755)。
- 服务名仍为 `nexusgate-agent`:
- systemd:`systemd/nexusgate-agent.service`,`EnvironmentFile=/etc/nexusgate/agent.env`,
`ExecStart=/opt/nexusgate-agent/nexusgate-agent`,`Restart=always`。
- OpenRC:`openrc/nexusgate-agent`,`command` 指向同一二进制,
脚本内手动 source `/etc/nexusgate/agent.env`(OpenRC 不读 EnvironmentFile)。
- 其余流程与旧版一致:写 `agent.env`、注册、安装 sing-box、logrotate、心跳校验。
- 环境变量:`NG_AGENT_RELEASE` 可覆盖 Release tag;`NG_LOCAL_SRC` 指向本地
仓库时从 `agent-go/` 取已构建的二进制(离线/调试用)。
## 更新(scripts/agent-update.sh / ng-agent update)
脚本按已安装程序自动判断实现:
- 存在 `/opt/nexusgate-agent/nexusgate-agent` → Go 路径:先用当前二进制
`flush-usage` 落盘流量计数,再下载同一 Release 资产替换二进制、
刷新服务文件并重启,最后校验心跳。
- 只有 `agent.js` → Node 路径:保持旧流程(下载 agent.js/run.sh 并
`node --check`);刷新服务文件时会把 ExecStart/command 改回经
`run.sh` 启动。
## 回退到 Node Agent
- 新装时回退:`NG_AGENT_IMPL=node bash agent-install.sh ...`(会安装
nodejs 包、部署 `agent/agent.js` + `agent/run.sh`,服务经 run.sh 启动)。
- 已装 Go 的节点回退:同样用 `NG_AGENT_IMPL=node` 重跑安装脚本,
它会删除 Go 二进制并部署 Node 版(注册信息会重新生成,需用新 token)。
## 发布清单(Release: agent-v0.6.8)
需上传到 tag `agent-v0.6.8` 的资产(文件名必须完全一致):
- `nexusgate-agent-linux-amd64`
- `nexusgate-agent-linux-arm64`