A self-hosted server monitoring platform with SSH management, DDNS, detection, firewall, scheduled tasks, service management, and file management. Supports both active probing and passive agent reporting.
| Component | Stack | Description |
|---|---|---|
panel-cf |
Node.js + Hono + Cloudflare Workers | Backend API, D1 database, KV cache, Durable Objects |
panel-ui |
React + Antd + Vite | Frontend (served by panel-cf) |
agent-go |
Go | Agent for Linux/Windows/macOS (x86/x64/arm64) |
panel-go |
Go (planned) | Self-hosted panel with WebSocket + frp tunneling |
- Dashboard — Global map + card/list view with real-time metrics (CPU, RAM, disk, bandwidth)
- Server Detail — Historical charts, terminal (SSH/agent), file manager, firewall, tasks, services
- Node Management — Active (SSH/TCP/UDP/ICMP/HTTP) and passive (agent) modes
- Detection — PING, TCPing, HTTP checks bound to servers
- DDNS — Cloudflare, dynv6, DNSPod, Aliyun DNS auto-update
- Firewall — UFW/iptables/netsh management
- Scheduled Tasks — crontab/Windows Task Scheduler
- Service Management — systemctl/sc control
- File Manager — Browse, upload, download, rename, delete
- Security — PBKDF2 passwords, AES-256-GCM encrypted secrets, TOTP 2FA, JWT auth, multi-user
npm install -g wranglerwrangler d1 create vpstatus
wrangler kv:namespace create vpstatusCopy the IDs into panel-cf/wrangler.toml.
cd panel-ui && npm install && npm run buildcd panel-cf
npm run db:migrate:local # local dev
npm run db:migrate # productioncd panel-cf && npm run deployOpen https://your-worker.workers.dev — you will be redirected to /setup on first visit.
Get the registration key from Settings → Registration Key, then on your server:
# Linux/macOS
curl -sSL https://your-panel.example.com/install.sh | sh -s -- \
-panel https://your-panel.example.com \
-key YOUR_REGISTRATION_KEY
# Or run the binary directly
./vpstatus-agent -panel https://your-panel.example.com -key YOUR_REGISTRATION_KEY -installcd agent-go
make linux # builds all Linux targets
make windows # builds all Windows targets
make darwin # builds all macOS targets
make all # builds everythingBinaries are output to agent-go/dist/.
All secrets (JWT, encryption key, registration key) are generated automatically on first /setup. They are stored encrypted in the D1 config table and never exposed via API.
English, 简体中文, 繁體中文, 日本語, Français, Deutsch, Русский, Español, Português, Italiano, العربية, 한국어
- SSH passwords and DDNS API keys are AES-256-GCM encrypted at rest
- Passwords use PBKDF2 (SHA-256, 100k iterations)
- JWT HS256 with short-lived access tokens (1h) and refresh tokens (7d)
- Agent tokens are per-server secrets (not shared across servers)
- TOTP 2FA supported for all user accounts