简体中文 · Dashboard · Product / PRD
Deployable probes for Probelune (巡汐). Run a node on each network you want to observe; it connects outward to your dashboard, executes structured checks, and buffers results during brief disconnections. No inbound node port is required.
Probe nodes connect to the dashboard, run checks from their own networks and report results for the web, mobile and desktop clients.
To set up Probelune, start with the dashboard and a probe node, then connect the clients you use. The project overview has the architecture and deployment guides.
| Component | What it provides |
|---|---|
| Project overview | Product overview, architecture and deployment guides |
| Dashboard | Web dashboard and Go API server |
| Probe node | Probe executor for monitored networks |
| Mobile app | Flutter client for Android and iOS |
| Desktop app | Electron desktop client and diagnostic tools |
| Contracts | Shared Go models, validation and API protocols |
| Continuous monitoring | One-off diagnostics |
|---|---|
| HTTP/HTTPS, TCP, UDP, ICMP, DNS | The same checks plus MTR and traceroute when installed |
UDP sends a bounded UTF-8 or HEX payload and waits for a non-empty response, with an optional response-content assertion. A timeout means no reply was observed, not proof of a closed port.
Monitoring intervals are set in the dashboard (15–86400 seconds, greater than the check timeout). The node advertises its supported checks and executes assigned cycles.
HTTP verifies TLS by default, records connection timing, supports status/text assertions and bounded redirects. ICMP reports loss and RTT; DNS uses an independent resolver. Private targets require explicit CIDRs set by the dashboard administrator. Tasks are data, never arbitrary shell commands.
Install Go; the current verified patch is 1.27.3.
git clone https://github.com/sihuangtech/probelune-node.git
cd probelune-node
./scripts/build.shCreate a node in the dashboard's Nodes page and use its one-time token within ten minutes:
export PROBELUNE_REGISTER_TOKEN='ONE_TIME_TOKEN'
./dist/probelune-node --panel https://monitor.example.com --node-id NODE_ID --data ./node-dataThe node stores its identity under node-data/credential.json (0600). Stop with Ctrl-C; unset the registration variable before later runs. Restart with the same panel, node ID and data directory. An already registered node ignores a leftover registration variable; explicitly use --register when rotating credentials. Do not share data directories between nodes or dashboard instances.
For an isolated development network only, explicitly add --allow-http. Set --concurrency between 1 and 32 (default 4). --version prints the implementation version.
docker build --pull -t probelune-node:local .
docker run --name probelune-node --restart unless-stopped \
--cap-drop ALL --cap-add NET_RAW \
-e PROBELUNE_PANEL=https://monitor.example.com \
-e PROBELUNE_NODE_ID=NODE_ID \
-e PROBELUNE_REGISTER_TOKEN=ONE_TIME_TOKEN \
-v probelune-node-data:/data probelune-node:localThe image uses Go 1.27.3 for compilation and Alpine 3.24.3 at runtime. It runs as UID 65532, includes MTR/traceroute and grants only raw-network capability to the relevant executables. ICMP results depend on the host/kernel/network policy. See Deployment for a host service and package refresh commands.
printf '%s\n' '{"check":{"type":"http","target":"https://example.com","timeout":10},"policy":{"allow_cidrs":[]}}' | ./dist/probelune-node --checkThe command emits one JSON result and never creates a continuous monitor. Explicitly add a CIDR if you intentionally want to inspect a private endpoint. A command success exit does not mean the target check succeeded; inspect the result's status.
Assignments expire after 15 minutes. Cached tasks continue only until their lease ends. The file spool is capped at 100 MiB and 24 hours; discarded entries are counted. Uploads are idempotent, and late results remain historical evidence instead of replacing fresh state. Server disconnection, permission errors and target failures are different conditions.
This release targets small self-hosted networks. Production capacity, real geographic diversity and provider-specific behavior require deployment validation. See protocol semantics, SECURITY.md and Releases.
Development: source . ./scripts/go-env.sh, then run go fmt ./..., go vet ./..., go test ./..., go build ./cmd/node. Distributed under GPL-3.0-or-later.
- Developer: Snake Konginchrist
- Email: developer@skstudio.cn
- Feedback: GitHub Issues