commit a54424afba78d3879c099d68c10e36813748a56f Author: YOYO Date: Fri Nov 21 16:30:37 2025 +0800 first commit diff --git a/README.md b/README.md new file mode 100644 index 0000000..c53017f --- /dev/null +++ b/README.md @@ -0,0 +1,183 @@ +# LinkMaster Node + +LinkMaster 节点服务,用于执行网络测试任务。 + +## 功能 + +- HTTP GET/POST 测试 +- Ping 测试 +- DNS 查询 +- Traceroute 路由追踪 +- Socket 连接测试 +- TCPing 端口延迟测试 +- FindPing IP段批量ping检测 +- 持续 Ping/TCPing 测试 +- 心跳上报 + +## 安装 + +### 方式一:一键安装(推荐) + +从 GitHub 一键安装,只需指定后端服务器地址。安装脚本会自动克隆源码并编译安装: + +```bash +# 基本用法(替换为实际的 GitHub 仓库地址) +curl -fsSL https://raw.githubusercontent.com/yourbask/linkmaster-node/main/install.sh | bash -s -- http://your-backend-server:8080 + +# 示例 +# 节点和后端在同一服务器 +curl -fsSL https://raw.githubusercontent.com/yourbask/linkmaster-node/main/install.sh | bash -s -- http://localhost:8080 + +# 节点和后端在不同服务器 +curl -fsSL https://raw.githubusercontent.com/yourbask/linkmaster-node/main/install.sh | bash -s -- http://192.168.1.100:8080 +``` + +**重要说明:** +- 节点端需要直接连接后端服务器(端口 8080),不是前端地址 +- 前端通过 `/api` 路径代理到后端,但节点端不使用代理 +- 如果后端在公网,使用公网 IP 或域名 +- 如果后端在内网,使用内网 IP +- **本项目是独立的 GitHub 仓库**,与前后端项目分离 + +**安装说明:** +- 自动检测系统类型和架构 +- 自动安装系统依赖(包括 Git 和 Go) +- 从 GitHub 克隆源码到 `/opt/linkmaster-node` +- 自动编译并安装二进制文件 +- 自动创建 systemd 服务 +- 自动启动服务并验证 + +**指定分支安装:** +```bash +GITHUB_BRANCH=develop curl -fsSL https://raw.githubusercontent.com/yourbask/linkmaster-node/main/install.sh | bash -s -- http://your-backend-server:8080 +``` + +### 方式二:手动编译安装 + +```bash +# 克隆仓库 +git clone https://github.com/yourbask/linkmaster-node.git +cd linkmaster-node + +# 编译 +go build -o agent ./cmd/agent + +# 安装(需要root权限) +sudo cp agent /usr/local/bin/linkmaster-node +sudo chmod +x /usr/local/bin/linkmaster-node + +# 或使用安装脚本 +./install.sh http://your-backend-server:8080 +``` + +### 方式三:手动运行 + +```bash +# 克隆仓库 +git clone https://github.com/yourbask/linkmaster-node.git +cd linkmaster-node + +# 运行(会自动拉取最新代码并编译) +BACKEND_URL=http://your-backend-server:8080 ./run.sh start +``` + +## 配置 + +### 环境变量 + +- `BACKEND_URL`: 后端服务地址(必需,默认: http://localhost:8080) +- `CONFIG_PATH`: 配置文件路径(可选,默认: config.yaml) + +### 配置文件(可选) + +创建 `config.yaml` 文件: + +```yaml +server: + port: 2200 +backend: + url: http://your-backend-server:8080 +heartbeat: + interval: 60 +debug: false +``` + +## 运行脚本 + +使用 `run.sh` 脚本管理节点端。**每次启动时会自动拉取最新代码并重新编译**: + +```bash +# 启动服务(会自动拉取最新代码并编译) +./run.sh start + +# 停止服务 +./run.sh stop + +# 重启服务(会拉取最新代码并重新编译) +./run.sh restart + +# 查看状态 +./run.sh status + +# 查看日志 +./run.sh logs + +# 查看完整日志 +./run.sh logs-all + +# 指定后端地址启动 +BACKEND_URL=http://192.168.1.100:8080 ./run.sh start +``` + +**重要提示:** +- 启动脚本会自动执行 `git pull` 拉取最新代码 +- 拉取代码后会自动执行 `go mod download` 更新依赖 +- 然后自动编译生成新的二进制文件 +- 如果 Git 拉取失败(如网络问题),会使用当前代码继续编译 +- 如果编译失败,服务不会启动 + +## API + +### POST /api/test + +统一测试接口 + +```json +{ + "type": "ceGet|cePost|cePing|ceDns|ceTrace|ceSocket|ceTCPing|ceFindPing", + "url": "测试目标", + "params": {} +} +``` + +### POST /api/continuous/start + +启动持续测试 + +```json +{ + "type": "ping|tcping", + "target": "测试目标", + "interval": 10, + "max_duration": 60 +} +``` + +### POST /api/continuous/stop + +停止持续测试 + +```json +{ + "task_id": "任务ID" +} +``` + +### GET /api/continuous/status?task_id=xxx + +查询任务状态 + +### GET /api/health + +健康检查 +# linkmaster-node