Skip to content

Scanning Node Pool Management

Scanning nodes execute scanning tasks. This page covers daily operations and status monitoring from the console.

🚀 Deploying & Scaling Scanning Probes

If you need to install new probe instances, set up multi-container clusters using Docker Compose, or review sizing recommendations for specialized workloads, refer to: Distributed Deployment.


Node Pool Overview & Real-Time Status

Navigate to Scanning Nodes -> Node Management in the left sidebar to view active worker probes:

FieldDescriptionExample
Node NameFriendly name configured via TESTNET_NODE_NAMEnode-general-01
Node IDUnique identifier generated upon registrationclient_8f92a0e1
StatusWhether the node can receive tasks🟢 Online / 🔴 Offline / ⚫ Disabled
Last HeartbeatTime of the last heartbeat12 seconds ago
Active TasksNumber of tasks currently running3 / 5
System InfoNode OS, kernel, and memory infoLinux x86_64 / 16GB

Node Status

StatusIconDescription
Online🟢Node running normally, accepting tasks
Offline🔴Node has not reported a heartbeat for 5+ minutes
DisabledManually disabled by admin, no new tasks accepted

Node Operations

Enable / Disable Node

  • When disabled, the node won't receive new tasks (ongoing tasks continue)
  • Useful when a node needs maintenance

Steps:

  1. Find the target node
  2. Click "Disable" / "Enable" in the action column

View Node Details

Click the node name to view:

  • System specs (CPU, RAM, disk)
  • Execution stats (total tasks, success/failure rate)
  • Recent task list

Delete a Node

Offline nodes can be deleted (existing task records are preserved):

  1. Ensure node is offline
  2. Click "Delete"
  3. Confirm

TIP

After deletion, restarting the client will auto-register as a new node.


Execution Capabilities

MethodRequirementsDescription
DockerDocker socket mountedExecute containerized tools (Subfinder, Nuclei, etc.)
ShellBinary installedExecute local CLI tools (PROCESS type)
HTTPNetwork accessibleSend HTTP requests
DNSNetwork accessibleDNS queries
TCPNetwork accessibleTCP port probing

Troubleshooting

Node shows offline after registration

  • Check network connectivity (can node reach server on port 3100 (unified Nginx entry) or 8081 (direct backend)?)
  • Verify TESTNET_CLIENT_SECRET is correct
  • View logs: docker logs testnet-client

Tasks stuck in PENDING

  • Check if any nodes are online
  • Check if nodes are disabled
  • Check server logs to confirm task dispatch is working

Docker tools fail to run

bash
# Verify Docker socket is accessible
docker exec testnet-client docker ps
  • Image pull timeouts on restricted networks: You can configure fallback mirrors in the client config file config.yaml or via environment variables. When the default image pull fails, the probe automatically retries from fallback mirrors:
    yaml
    docker:
      enabled: true
      socket: "/var/run/docker.sock"
      pull_timeout: 10m
      fallback_mirrors:
        - "docker.m.daocloud.io"
        - "huecker.io"
    Or via environment variable:
    bash
    export TESTNET_DOCKER_FALLBACK_MIRRORS="docker.m.daocloud.io,huecker.io"

Client Environment Variables Reference

Client nodes support overriding config.yaml settings via TESTNET_ prefixed environment variables:

Environment VariableTypeDescription
TESTNET_SERVER_URLstringServer URL (e.g., http://host:8081 or https://host:3100)
TESTNET_SERVER_TLS_ENABLEDboolEnable TLS (true/1)
TESTNET_SERVER_TLS_INSECURE_SKIP_VERIFYboolSkip TLS certificate verification (set true for self-signed certs)
TESTNET_CLIENT_SECRETstringNode connection secret (from server .env)
TESTNET_NODE_NAMEstringNode name
TESTNET_LOG_LEVELstringLog level (debug/info/warn/error)
TESTNET_MAX_CONCURRENTintMax concurrent tasks (default 10)
TESTNET_POLL_TIMEOUTdurationLong-poll timeout (e.g., 30s)
TESTNET_POLL_INTERVALdurationLong-poll interval (e.g., 5s)
TESTNET_HEARTBEAT_INTERVALdurationHeartbeat interval (e.g., 15s)
TESTNET_DOCKER_ENABLEDboolEnable Docker executor (true/1)
TESTNET_DOCKER_FALLBACK_MIRRORSstringFallback Docker registry mirror list (comma-separated, e.g., docker.m.daocloud.io,huecker.io)
TESTNET_SERVER_TIMEOUTdurationServer request timeout (e.g., 30s)
TESTNET_WORK_DIRstringTask working directory
TESTNET_CACHE_DIRstringCache directory
TESTNET_ALLOW_PRIVILEGEDboolAllow privileged container execution (default false, high risk)
TESTNET_ALLOW_SSRFboolAllow SSRF probing internal networks (default false, high risk)
TESTNET_ALLOWED_VOLUME_PATHSstringAllowed mount paths (comma-separated, e.g., /tmp/,/opt/testnet/)

WARNING

TESTNET_ALLOW_PRIVILEGED and TESTNET_ALLOW_SSRF pose security risks. Only enable them in controlled internal network debugging. Keep them at default false in production. See Node Sandbox & Security Policies.


Released under the MIT License