ServerBee

ZingerLittleBeeAGPL-3.0活跃维护

轻量级 VPS 监控方案,由 Rust 编写的采集端和 Axum 服务端配合 React 网页面板,自托管即可实时查看服务器状态。

Lightweight VPS monitoring with agent + server + web dashboard. Rust + React monorepo.

v1.0.0-beta.5发布于 2026-10-05 10:03 UTC348star30fork同步于 2026-11-10 06:04 UTC

怎么上手

由 README 提炼,执行前请确认
curl -fsSL https://raw.githubusercontent.com/ZingerLittleBee/ServerBee/main/deploy/install.sh | sudo sh -s -- server --method docker
硬件要求按 README 说明

README 未说明具体硬件要求;Agent 冷启动约 4.3 MB、稳态约 27 MB 内存。NVIDIA GPU 指标需自行编译 Agent 并开启 --features gpu,预编译二进制不含 GPU 支持。

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

自托管的轻量 VPS 监控,一个 Rust 二进制搞定服务端、Agent 和实时 Web 面板

轻量级 VPS 监控方案,由 Rust 编写的采集端和 Axum 服务端配合 React 网页面板,自托管即可实时查看服务器状态。

核心能力

  • Agent 通过 WebSocket 上报指标,服务端用内嵌 SQLite 存储
  • 单个二进制内嵌 Web UI,无需外部数据库和重型运行时
  • 实时展示 CPU、内存、磁盘、网络、负载、温度与磁盘 I/O
  • 内置告警、通知、Web 终端、文件管理、Docker 与防火墙管理
  • 支持 OAuth + TOTP 2FA、RBAC 与一次性 Agent 注册码

容易踩的坑

服务端默认监听 9527 端口,管理密码自动生成并打印在启动日志里,首次登录需修改;Agent 注册码一次性且约 10 分钟过期,需在 Add Server 页面重新生成;预编译 Agent 不含 GPU 支持,要 GPU 指标得自行加 --features gpu 编译;反向代理需为 /api/ws/ 和 /api/agent/ws 转发 Upgrade/Connection 头并设长读超时。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本v1.0.0-beta.5
  1. v1.0.0-beta.6pre-release2026-10-06 · 2026-10-06 05:40 UTC
    查看更新说明

    Added

    • Renewal reminders follow each current occurrence -- Expiration rules in once mode admit one durable reminder per rule, server and renewal occurrence, including consecutive monthly deadlines inside the same reminder window. Automatic calendar advancement silently supersedes old targets, and authenticated Web and native iOS views refresh deadlines, alert history and cost advisories

    • Opt-in automatic renewal tracking -- Web and native iOS administrators can enable anchored monthly, quarterly or yearly expiry forecasts. The Server catches up after downtime while the Agent is offline, preserves confirmed expiry history and freezes the same projected deadline when tracking is disabled. Forecasts do not confirm provider renewal or payment

    • Billing-calendar renewal dates -- Web and native iOS administrators can edit a local expiry date in its stored IANA billing timezone. The Server preserves historical expiry instants on unchanged saves and applies the complete local expiry day to explicit date changes

    Fixed

    • IP Quality capability guidance matches Agent-owned permissions -- A compact disabled notice opens a dialog explaining permanent configuration and temporary host-local grants instead of pointing to a nonexistent server-side toggle. Each command has a copy button with clipboard feedback. Manual checks use the Agent-reported capability, and an unavailable report is shown separately from a disabled capability
  2. v1.0.0-beta.5最新正式版2026-10-05 · 2026-10-05 10:03 UTC

    Added

    • Encrypted mobile notifications through a dedicated Push Relay -- The Server stores encrypted delivery work durably and sends it through a stateless Cloudflare Worker to APNs. The native iOS app provides explicit permission and subscription setup for alert triggers and recoveries, administrator security rules, and final scheduled-task outcomes, with successful tasks requiring opt-in. Operators must configure the HTTPS Relay and publisher APNs credentials; live device delivery still requires deployment and validation

    • Documentation landing page and bilingual search improvements -- The documentation site has a redesigned landing page, language-specific Markdown and LLM exports, sitemap metadata, and Chinese word segmentation for search

    Changed

    • Native iOS TestFlight version is 2.0.0 -- The rewritten client and its Notification Service Extension use the existing official app identity and separate private and shared Keychain groups

    Security

    • Documentation server-function XSS is patched -- The documentation site upgrades TanStack Start to a fixed release

    Fixed

    • Mobile notification work survives retries and Server restart -- Durable outbox delivery retains its original expiry, rechecks current recipients and registration revisions, and preserves final task aggregation and pending event recovery

    • Documentation navigation, search, and accessibility are more reliable -- Unknown routes return 404, legacy routes redirect, scrolling survives hydration and history navigation, search restores keyboard focus, and translated labels and contrast support keyboard and screen-reader use

  3. v1.0.0-beta.42026-09-30 · 2026-09-30 04:27 UTC
    查看更新说明

    Security

    • Agents can only answer requests sent to their own server -- The Server matched an Agent's reply to a pending request by the id inside the reply alone, so one connected Agent could answer a scheduled task run on another server and record a forged exit code and output for it (#187, reported by @Koukyosyumei). Replies are now accepted only from the server the request was sent to, and the same check covers terminal sessions, file downloads and uploads, and Docker requests

    • Task results are only accepted for tasks sent to the reporting Agent -- An Agent could store a result, and an exec_finished audit entry, for any task id, including tasks that never targeted it. Such results are now dropped

  4. v1.0.0-beta.32026-09-29 · 2026-09-29 16:46 UTC
    查看更新说明

    Added

    • iOS app speaks Simplified Chinese -- Every screen, error message, and permission prompt is translated, with product and protocol names kept in English as on the web, and Settings → Language switches the app language without changing the device language

    • iOS privacy mode -- A Settings switch masks the last two parts of every IP address the app shows (203.0.*.*, 2001:db8::*:*), for screenshots and screen sharing

    Changed

    • iOS app redesigned in a native style -- The server list, server detail tabs, alerts, insights, settings, and login screens follow the system look, and the app icon is the ServerBee radar logo

    Fixed

    • Linux disk totals count each filesystem once -- The Agent summed capacity per mount point, so bind mounts, btrfs subvolumes, an SSHFS remote mounted twice, or the files Docker bind-mounts into an Agent container inflated disk total and used space several times over (#183). Mounts of the same device or remote are now counted once

    • Issuing a new enrollment offer no longer loops -- On a pending server, "Issue new enrollment offer" kept replacing the offer it had just issued, so the dialog stayed loading and the code never settled. It now issues exactly one offer per click

    • iOS live updates recover after network drops -- The app rebuilds a half-open live connection, keeps retrying after a failed token refresh, and resyncs on pull-to-refresh, and offline servers no longer show their last live metrics

  5. v1.0.0-beta.22026-09-24 · 2026-09-24 18:26 UTC
    查看更新说明

    Changed

    • Prerelease images publish a moving beta tag -- Docker images for prereleases now also move :beta, while :latest only follows stable releases, and the Railway template pins the image of the current release instead of :latest

    Fixed

    • Server memory no longer grows without bound -- Linux release binaries were linked against an allocator that never reused memory freed on another thread, so an idle Server climbed about 20 MB per day (755 MB after a month on the demo instance). Release builds use musl's allocator again and stay flat under sustained database load

    • Domain expiry monitors read registrar dates with UTC offsets -- WHOIS monitors failed every check with "Could not parse expiry date" when the registrar reported dates such as 2028-09-13T07:00:00+0000 (for example MarkMonitor, the registrar of google.com)

    • Add Server works on plain-HTTP dashboards -- The dialog no longer crashes when the dashboard is opened over HTTP on a remote address, where browsers do not provide crypto.randomUUID()

    • An empty status page selection shows every server -- Leaving the server selection empty now includes all visible servers, as the settings page describes

    • Agent disconnects end pending operations immediately -- File transfers, directory listings, and commands waiting on a disconnected Agent now fail right away instead of hanging until their timeout, and terminals open to that Agent are closed

    • The installer is safer to run, rerun, and upgrade -- Piped curl | sudo sh installs can still use the interactive wizard, configuration writes are atomic, failed Docker Agent installs and reinstalls restore the previous files and container, and --channel auto|stable|beta selects the release track explicitly

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    ServerBee

    Lightweight, self-hosted VPS monitoring — one Rust binary, real-time everything.

    CI Release License: AGPL v3 GitHub stars Rust React

    English | 简体中文


    ServerBee watches all your servers from one place. A central server receives metrics from lightweight agents over WebSocket, stores them in embedded SQLite, and serves a real-time React dashboard — no external database, no heavy runtime.

    • 🪶 Tiny footprint — agents use ~4.3 MB at cold start and ~27 MB in steady state, and the server stays lightweight as your fleet grows.
    • ⚡ Real-time — live WebSocket dashboard for CPU, memory, disk, network, load, temperature, disk I/O, and optional NVIDIA GPU metrics from a self-built Agent (--features gpu; prebuilt binaries exclude GPU support).
    • 📦 Single binary — server + embedded web UI in one file. Deploy with Docker, a one-line script, or Railway.
    • 🔋 Batteries included — alerts, notifications, web terminal, file manager, Docker, firewall, status pages, and more.
    • 🔒 Secure by default — OAuth + 2FA, RBAC, audit logs, one-time agent enrollment, agent-owned capability gates.
    • ✅ Battle-tested — 3,800+ automated tests and over 91% measured Rust region coverage, including integration suites that drive the real router over HTTP + WebSocket via a mock-agent harness; green on every CI run.

    [!NOTE] ServerBee is in active development (v1.0.0-alpha.12). Expect rapid iteration.

    Quick Start

    1. Install the server

    curl -fsSL https://raw.githubusercontent.com/ZingerLittleBee/ServerBee/main/deploy/install.sh | sudo sh -s -- server --method docker
    

    Open http://your-server:9527. The admin password is auto-generated and printed to the startup log — change it on first login.

    The install script supports both Docker and native binary installs via --method docker|binary. Docker is recommended for the server; omit the flag to choose interactively. Prefer the cloud? Use the Railway one-click deploy below.

    2. Enroll an agent

    Sign in as admin, choose Add Server, and copy the generated install command. Its Server-bound enrollment offer is single-use and expires in about 10 minutes. Then run it on that node:

    curl -fsSL https://raw.githubusercontent.com/ZingerLittleBee/ServerBee/main/deploy/install.sh | sudo sh -s -- agent --method binary \
      --server-url http://YOUR_SERVER:9527 --enrollment-code YOUR_ONE_TIME_CODE
    

    A native binary is recommended for agents — smallest footprint and full host-level metrics. Pass --method docker to run the agent in a container instead.

    The Agent generates and persists its run token before claiming the offer, then reconnects automatically afterwards. The code is only needed once. That's it. 🎉

    Features

    📊 MonitoringReal-time metrics (CPU/mem/disk/network/load/temp/disk I/O, plus optional self-built NVIDIA GPU support) · historical charts (1h–30d) · Docker container stats, logs & events · monthly traffic statistics with billing-cycle prediction · cost insights (burn rate, per-resource unit cost, 0–100 value score)
    🔔 Alerts14+ metric types · threshold / offline / traffic / expiration rules · Webhook, Telegram, Bark, Email & APNs channels with notification groups
    🌐 NetworkPing monitoring (ICMP/TCP/HTTP) · network-quality probing (96 China 3-ISP + international presets) · service monitors (SSL/DNS/HTTP-keyword/TCP/WHOIS) · IP-quality & streaming-unlock detection with fraud scoring
    🛠️ Remote managementBrowser web terminal (PTY over WS) · sandboxed file manager with Monaco editor · firewall blocklist via nftables · agent-owned capability gates with host-local temporary grants · agent auto-update
    🔐 Security & accessSSH login / brute-force / port-scan detection · OAuth (GitHub/Google/OIDC) + TOTP 2FA · Admin/Member RBAC · audit logs · one-time agent enrollment codes
    🖥️ Dashboards & sharingDrag-and-drop custom dashboards (17 widget types) · public status pages with 90-day uptime timelines · custom OKLCH themes · server groups with country flags · native iOS companion app
    ⚙️ Opsserverbee management CLI · backup & restore · GeoIP region detection · OpenAPI/Swagger docs (180+ endpoints)

    Configuration

    Configure via TOML files or SERVERBEE_-prefixed environment variables (__ is the nested separator, e.g. SERVERBEE_AUTH__MAX_SERVERS). The minimum to get going:

    # /etc/serverbee/server.toml
    [server]
    listen = "0.0.0.0:9527"
    data_dir = "/var/lib/serverbee"
    
    [admin]
    password = ""   # leave empty to auto-generate
    
    # /etc/serverbee/agent.toml
    server_url = "http://your-server:9527"
    enrollment_code = ""   # one-time code from Add Server; only used for first claim
    
    [collector]
    interval = 3           # seconds between reports
    

    📖 Full reference: ENV.md · OAuth, retention, rate limiting, GeoIP, and more in the documentation.

    Deployment

    Railway (one-click)

    Deploy on Railway

    Add a volume mounted at /data to persist data. The server auto-creates an admin account on first start — check the deploy logs for the credentials banner.

    Management CLI

    The installer drops a serverbee CLI at /usr/local/bin/serverbee:

    sudo serverbee status         # status of all components
    sudo serverbee upgrade -y     # upgrade to latest
    sudo serverbee upgrade --channel beta -y  # upgrade to the latest beta
    sudo serverbee restart        # restart services
    sudo serverbee config         # view / set config
    sudo serverbee uninstall agent -y
    

    Reverse proxy

    Behind Nginx/Caddy, proxy / to 127.0.0.1:9527 and make sure the WebSocket routes /api/ws/ and /api/agent/ws forward the Upgrade/Connection headers with a long read timeout. See the deployment docs for a ready-to-use Nginx config.

    Development

    git clone https://github.com/ZingerLittleBee/ServerBee.git
    cd ServerBee
    
    make dev-full         # server (:9527) + Vite dev server (:5173) — login admin / admin123
    make cargo-test       # Rust tests
    make test             # frontend tests
    make cargo-clippy     # Rust lint
    

    make dev-full runs Vite with HMR at http://localhost:5173, proxies /api/* to the Rust server at :9527, creates a development Server, and prints its one-time Agent enrollment command.

    Stack: Rust (Axum 0.8 · sea-orm · SQLite WAL) · React 19 (Vite 7 · TanStack Router/Query · Bklit · shadcn/ui · Tailwind CSS v4) · Rust agents (sysinfo · tokio-tungstenite).

    Testing & quality

    ServerBee ships with 3,800+ automated tests — 3,200+ Rust (unit + 42 integration suites that drive the real Axum router over HTTP/WebSocket with a mock-agent harness) and 600+ frontend Vitest tests. Coverage is measured with cargo-llvm-cov (over 91% region overall; common ~98%, agent ~90%, server ~92%). CI runs zero-warning Clippy, the Rust suite, and frontend type/lint checks for the areas each change touches. See the Testing & Quality guide.

    Commit and PR attribution

    bun install sets up a Lefthook commit-msg hook that blocks Co-authored-by trailers, "Generated by/with" agent text, 🤖 Generated, Assisted-by, and any email address on git commit. The Check commit attribution CI job scans every commit in a pull request and the PR title and description, so --no-verify or LEFTHOOK=0 will not get past it. To fix a rejected commit, run git rebase -i <base-sha>, drop the matching lines, and force-push. Maintainers should mark Check commit attribution as a required check in branch protection; the workflow cannot enable that itself.

    API

    Interactive OpenAPI docs are served at /swagger-ui while the server runs.

    License

    AGPL-3.0