Skip to content

节点独立部署 ​

系统默认会在服务端主机上启动一个内置的客户端。如果您想在多台不同的服务器上分布式运行扫描任务,可以将其他客户端节点连接到主服务器。

两种部署方式按需选择:

方式适用场景特点
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 自动完成:

  1. 权限自适应:root 用户安装至 /opt/testnet/client 并注册系统级服务;普通用户安装至 ~/testnet-client 并注册 systemd --user 用户级开机自启服务,配合 loginctl enable-linger 即使 SSH 登出依然常驻。
  2. 环境探测:自动识别 amd64 / arm64,优先走国内 CNB 加速节点下载最新静态二进制与配置模板。
  3. 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.gzGitHub Releases
arm64 (AArch64)testnet-client-linux-arm64.tar.gzGitHub 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

相关文档 ​

最近更新

基于 MIT 协议发布