节点独立部署
系统默认会在服务端主机上启动一个内置的客户端。如果您想在多台不同的服务器上分布式运行扫描任务,可以将其他客户端节点连接到主服务器。
两种部署方式按需选择:
| 方式 | 适用场景 | 特点 |
|---|---|---|
| Docker 部署(推荐) | 已安装 Docker 的主机 | 一条命令启动,容器化隔离,升级方便 |
| 二进制部署 | 轻量 VPS、内网跳板机、ARM 设备等不方便运行 Docker 的场景 | 静态二进制直接运行,支持一键脚本或手动安装 |
前置:获取连接密码
其他探针节点连接主服务器时需要密码。请在主服务器的部署目录下找到并复制连接密码:
bash
cd testnet-deploy
grep TESTNET_CLIENT_SECRET .env方式一:Docker 部署(推荐)
在任意已安装 Docker 的独立主机上执行以下命令。需要挂载 docker.sock,以便探针程序能够调用 Docker 运行各种容器化的扫描工具;同时挂载工作目录与临时目录,确保工具容器与探针之间的扫描结果与数据文件正常交换:
bash
docker run -d \
--name testnet-client \
--restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v ./client-data:/opt/testnet/client-data \
-v ./client-work:/opt/testnet/client-work \
-v /tmp:/tmp \
-e TESTNET_SERVER_URL=https://your-server-ip:3100 \
-e TESTNET_SERVER_TLS_ENABLED=true \
-e TESTNET_SERVER_TLS_INSECURE_SKIP_VERIFY=true \
-e TESTNET_CLIENT_SECRET=<从服务端获取的密码> \
-e TESTNET_NODE_NAME=node-guangzhou-01 \
-e TESTNET_DATA_DIR=/opt/testnet/client-data \
-e TESTNET_WORK_DIR=/opt/testnet/client-work \
testnet0/testnet-client:latest国内加速镜像源
在国内服务器上部署时,可直接使用阿里云镜像加速源拉取客户端镜像: registry.cn-hangzhou.aliyuncs.com/testnet0/testnet-client:latest
方式二:二进制部署(无需 Docker)
方法 A:一键脚本(推荐)
一键安装脚本支持 root 及 普通非 root 用户(普通用户自动注册 systemd --user 用户级自启服务,免 root 也能实现开机后台驻留)。
bash
# 基础安装(服务端 URL 和连接密码为必填项)
bash <(curl -fsSL https://cnb.cool/testnet0/testnet-public/-/git/raw/main/install-client.sh) \
-s https://your-server-ip:3100 \
-k <从服务端获取的密码> \
-n node-beijing-01
# 自签名证书场景(跳过 TLS 验证)
bash <(curl -fsSL https://cnb.cool/testnet0/testnet-public/-/git/raw/main/install-client.sh) \
-s https://your-server-ip:3100 \
-k <从服务端获取的密码> \
--no-tls-verify
# 仅下载解压,不注册 systemd 服务(手动前后台运行)
bash <(curl -fsSL https://cnb.cool/testnet0/testnet-public/-/git/raw/main/install-client.sh) \
-s https://your-server-ip:3100 \
-k <从服务端获取的密码> \
--no-systemd脚本自动化特性
install-client.sh 自动完成:
- 权限自适应:root 用户安装至
/opt/testnet/client并注册系统级服务;普通用户安装至~/testnet-client并注册systemd --user用户级开机自启服务,配合loginctl enable-linger即使 SSH 登出依然常驻。 - 环境探测:自动识别
amd64/arm64,优先走国内 CNB 加速节点下载最新静态二进制与配置模板。 - Docker 权限提示:自动检测当前用户是否具备 Docker Socket 权限,并给出用户组加权指引。
常用服务运维命令
安装完成后,系统已自动注册全局快捷命令 testnet-client-ctl(亦可执行安装目录下的 install-client.sh),在任意路径下均可直接运行:
bash
testnet-client-ctl status # 查看探针运行状态
testnet-client-ctl restart # 重启探针
testnet-client-ctl stop # 停止探针
testnet-client-ctl start # 启动探针
testnet-client-ctl logs # 实时追踪运行日志
testnet-client-ctl update # 在线平滑升级至最新版本
testnet-client-ctl uninstall --purge # 彻底卸载客户端并清理缓存
# 也可以直接指定脚本路径执行(例如 /opt/testnet/client 或 ~/testnet-client)
bash /opt/testnet/client/install-client.sh status方法 B:手动下载安装
步骤 1:下载对应架构的压缩包
| 架构 | 下载地址(国内 CNB) | 下载地址(GitHub) |
|---|---|---|
| amd64 (x86_64) | testnet-client-linux-amd64.tar.gz | GitHub Releases |
| arm64 (AArch64) | testnet-client-linux-arm64.tar.gz | GitHub Releases |
bash
# 自动检测架构并下载(国内 CNB 节点)
ARCH=$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/')
VERSION="v3.0.4"
curl -fsSL "https://cnb.cool/testnet0/testnet-public/-/releases/download/${VERSION}/testnet-client-linux-${ARCH}.tar.gz" \
-o testnet-client.tar.gz
# 解压
tar -xzf testnet-client.tar.gz
chmod +x testnet-client步骤 2:创建配置文件
压缩包已附带 configs/config.yaml 模板,修改关键项即可:
yaml
server:
url: "https://your-server-ip:3100" # 服务端地址
secret: "<从服务端获取的密码>" # TESTNET_CLIENT_SECRET
tls:
enabled: true # HTTPS 时设为 true
insecure_skip_verify: true # 自签名证书时设为 true
node:
name: "node-beijing-01" # 节点名称(在控制台显示)
task:
max_concurrent: 5 # 最大并发任务数步骤 3:运行客户端
bash
# 直接运行(前台,测试用)
./testnet-client --config configs/config.yaml
# 后台运行(nohup)
nohup ./testnet-client --config configs/config.yaml > /var/log/testnet-client.log 2>&1 &
# 或通过环境变量配置,无需修改 config.yaml
TESTNET_SERVER_URL=https://your-server-ip:3100 \
TESTNET_CLIENT_SECRET=<密码> \
TESTNET_NODE_NAME=node-beijing-01 \
./testnet-client步骤 4(可选):注册为 systemd 服务实现自启
bash
# 将二进制移动到系统目录
sudo mkdir -p /opt/testnet/client/configs
sudo mv testnet-client /opt/testnet/client/
sudo mv configs/config.yaml /opt/testnet/client/configs/
# 创建 systemd 服务文件
sudo tee /etc/systemd/system/testnet-client.service > /dev/null <<'EOF'
[Unit]
Description=TestNet Scanning Client Node
After=network-online.target docker.service
Wants=network-online.target
[Service]
Type=simple
ExecStart=/opt/testnet/client/testnet-client --config /opt/testnet/client/configs/config.yaml
WorkingDirectory=/opt/testnet/client
Restart=on-failure
RestartSec=10
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
EOF
# 启用并启动
sudo systemctl daemon-reload
sudo systemctl enable --now testnet-client
# 查看状态与日志
sudo systemctl status testnet-client
sudo journalctl -u testnet-client -f验证节点上线
部署完成后,登录管理后台,在 「扫描节点」 页面中就能实时查看到新加入的节点,并能查看其在线状态、并发数限制等信息。
一键脚本方式(推荐)
bash
# 在线更新升级
bash install-client.sh update
# 完整卸载(含服务、目录与缓存数据清理)
bash install-client.sh uninstall --purge手动操作方式
升级客户端:重新下载新版压缩包解压,覆盖二进制文件后重启服务即可:
bash
# 系统级服务
sudo systemctl stop testnet-client
# 覆盖 /opt/testnet/client/testnet-client
sudo systemctl start testnet-client
# 用户级服务
systemctl --user stop testnet-client
# 覆盖 ~/testnet-client/testnet-client
systemctl --user start testnet-client卸载节点:
bash
# 系统级服务
sudo systemctl disable --now testnet-client
sudo rm -f /etc/systemd/system/testnet-client.service
sudo systemctl daemon-reload
sudo rm -rf /opt/testnet/client
# 用户级服务
systemctl --user disable --now testnet-client
rm -f ~/.config/systemd/user/testnet-client.service
systemctl --user daemon-reload
rm -rf ~/testnet-client