βββββββ βββββββ βββ βββββββββββββββββββββββ ββββββββββββ βββββββββββ
ββββββββββββββββββββ βββββββββββββββββββββββ βββββββββββββ βββββββββββ
βββββββββββ ββββββ βββ βββ ββββββ βββ ββββββ ββββββ βββββββββββ
βββββββββββ ββββββ βββ βββ ββββββ βββ ββββββ ββββββββββββββββββ
ββββββββββββββββββββββββββ βββ βββββββββββββββββββββββββββ ββββββββββββββ
βββββββ βββββββ βββββββ βββ βββββββββββββββββββββββββββ βββββββββββββ
Modern, Agentless Network Observability Platform
Trace routes β’ Measure latency β’ Visualize paths β all from a single binary

π¨π³ δΈζζζ‘£
β¨ Features
| Feature |
Description |
| π°οΈ Agentless Monitoring |
Ping, MTR traceroute, and SSH-based bandwidth testing β no agents required on targets |
| π Auto-Update |
One-click in-app upgrade mechanism (AdGuard Home style) |
| π Secure by Default |
JWT authentication, login rate limiting (5/min), input sanitization |
| π¨ Modern UI |
React 19 + Ant Design v5 with automatic dark mode |
| π Auto GeoIP |
Automatic GeoIP database download and hop enrichment |
| π Historical Metrics |
Time-series charts for latency, packet loss, and bandwidth trends |
| π¦ Single Binary |
Zero dependencies, one-file deployment with systemd support |
| π― Target Control |
Enable/disable monitoring targets without deletion |
π Quick Start
Option 1: Docker (Recommended)
docker run -d \
--name routelens \
--cap-add NET_RAW \
--cap-add NET_ADMIN \
-p 8080:8080 \
-v $(pwd)/data:/data \
-e RS_JWT_SECRET=your_secure_secret_here \
ghcr.io/yuanweize/routelens:latest
Option 2: Docker Compose
curl -O https://raw.githubusercontent.com/yuanweize/RouteLens/master/compose.yml
docker compose up -d
Option 3: Binary
Download from Releases:
# Linux
curl -LO https://github.com/yuanweize/RouteLens/releases/latest/download/routelens_1.3.1_linux_amd64.tar.gz
tar xzf routelens_1.3.1_linux_amd64.tar.gz
chmod +x routelens
# Run directly
./routelens --port 8080
# Or install as systemd service
./routelens service install --port 8080
π§ Initial Setup
- Open
http://your-server:8080
- You'll be redirected to
/setup on first run
- Create your admin account
- Add monitoring targets in the dashboard
- GeoIP database downloads automatically on first probe
βοΈ Configuration
Environment Variables
| Variable |
Description |
Default |
RS_JWT_SECRET |
β οΈ Required for production - JWT signing key |
Random (changes on restart) |
RS_HTTP_PORT |
HTTP listen address |
:8080 |
RS_DB_PATH |
SQLite database path |
./data/routelens.db |
RS_GEOIP_PATH |
GeoIP database directory |
./data/geoip |
RS_PROBE_INTERVAL |
Probe interval in seconds |
30 |
RS_LOG_LEVEL |
Log level (debug/info/warn/error) |
info |
β οΈ Security Note: In production, always set RS_JWT_SECRET to a strong, random value. If not set, a random secret is generated at startup and all sessions will be invalidated on restart.
Example .env file
RS_JWT_SECRET=your-super-secure-random-string-at-least-32-chars
RS_HTTP_PORT=:8080
RS_PROBE_INTERVAL=60
π In-App Updates
RouteLens supports seamless self-updates directly from the web UI:
- Go to Settings β About & Updates
- Click Check for Updates
- If available, click Install Update
- Service restarts automatically with the new version
Requirements:
- Process must have write permission to its own binary
- For systemd: service will exit and systemd restarts it
π Architecture
flowchart LR
subgraph Backend
A[Scheduler] --> B[MTR Prober]
A --> C[ICMP Prober]
A --> D[SSH Speed Test]
B & C & D --> E[SQLite]
end
subgraph Frontend
F[React 19] --> G[Ant Design v5]
G --> H[ECharts]
end
I[Gin API] --> Frontend
E --> I
π Project Structure
.
βββ cmd/server/ # Application entrypoint
βββ internal/
β βββ api/ # REST API handlers & middleware
β βββ auth/ # JWT authentication
β βββ monitor/ # Probe scheduler
βββ pkg/
β βββ prober/ # MTR, ICMP, SSH speed test
β βββ storage/ # SQLite repository
β βββ geoip/ # GeoIP enrichment
βββ web/ # React frontend (Vite + TypeScript)
π Security
RouteLens v1.3.1 includes security hardening:
- JWT Authentication with cryptographically random secrets
- Login Rate Limiting (5 attempts per IP per minute)
- Input Sanitization on all probe targets (prevents command injection)
π License
MIT License β Free for personal and commercial use.