- Backend: Python FastAPI with SQLite located in
backend/ - Frontend: React + TypeScript built with Vite and Tailwind CSS located in
frontend/ - Deployment: Docker and Docker Compose for packaging and one‑click setup
- ICMP ping with latency measurement
- Traceroute with optional downloadable path report
- HTTP speed test with progress tracking, visual charts and a colour‑coded progress bar
- Automatic collection of client network information (IP, ASN, ISP and location)
- Admin registration, login and test management interface
- Persistent SQLite storage for test records
- Grouped test statistics by browser and IP with hourly aggregation
- Copy probe results as a Markdown summary table
- One‑click deployment via Docker Compose or a prebuilt image
./deploy.shThe script installs dependencies and launches the FastAPI server together with the Vite development server.
This project supports one‑click Docker deployment bundling all required services:
- HTTP service for viewing and accessing probe results
- Database service for persistent test record storage
- Cron service for daily scheduled tasks
git clone https://github.com/podcctv/NodeProbe.git
cd NodeProbe
docker compose up -dDefault data will be stored under /opt/NodeProbe/data/.
The directory can be customised by setting the DATA_DIR environment variable
before running Docker Compose or deploy.sh.
Access example:
http://your-server-ip:8380
On first start the backend creates a default administrator account:
- Username:
NodeProbe - Password:
nodeprobefollowed by the last segment of your server's public IP address (e.g. public IP203.0.113.5-> passwordnodeprobe5)
If the server cannot determine its public IP, you can provide it via the SERVER_IP
environment variable.
The repository provides a deploy.sh script for one‑click deployment or updates. The script automatically switches to its directory and can be executed from anywhere:
git clone https://github.com/podcctv/NodeProbe.git
chmod +x ./NodeProbe/deploy.sh
./NodeProbe/deploy.shThe script sets up persistent directories, pulls the latest code and rebuilds/starts services via Docker Compose.
If you only need to run the service, you can use the prebuilt image directly:
docker pull ghcr.io/podcctv/nodeprobe:latest
docker run -d --name nodeprobe -p 8380:8380 \
-v /opt/NodeProbe/data:/app/data \
ghcr.io/podcctv/nodeprobe:latestData will be saved to /opt/NodeProbe/data/ by default.
For a list of notable changes, see CHANGELOG or the Chinese version.