# 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-` (`` 由 `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`