手上有几台 VPS、一台 NAS、家里还有个跑 Docker 的小主机,想随时看一眼它们的 CPU、内存、磁盘和容器状态,又嫌 Prometheus + Grafana 太重?开源项目 Beszel(MIT 协议)就是为这种场景做的:一个 Hub 面板 + 每台机器一个轻量 Agent,Docker 一条命令就能跑起来,中文界面开箱即用。
协议为 MIT,个人和商用都很宽松。项目非常活跃(GitHub 2.6 万+ Star,本文实测版本 0.21.1,2026-10 发布)。Hub 基于 PocketBase,Agent 是单个 Go 二进制,空闲内存占用都只有十几 MB,小内存 VPS 也毫无压力。
技术栈:Go · PocketBase · SQLite · React · Docker 一键部署
你将得到什么
- 多台服务器的统一总览:CPU、内存、磁盘、负载、网络、温度、GPU、运行时间,一眼看全
- 每台机器的历史曲线:CPU / 内存 / 磁盘 I/O / 带宽 / 系统负载,可切 1 小时~30 天
- Docker / Podman 容器级统计:每个容器的 CPU、内存、网络,还有全局「所有容器」列表
- 网络监控:由 Agent 发起 ICMP / TCP / HTTP / DNS 探测,记录响应时间与丢包率
- 告警:掉线、CPU、内存、磁盘、带宽、温度、丢包等阈值告警,支持邮件和 Shoutrrr(Telegram、企业微信 Webhook、Bark、ntfy 等)
- 多用户与权限、OAuth / OIDC 登录、自动备份到 S3、S.M.A.R.T. 硬盘健康
- 演示只监听
127.0.0.1,不直接暴露公网
环境要求
- 已安装 Docker(含 Compose 插件)的 Linux / macOS / Windows;Agent 也可以用单二进制装在不跑 Docker 的机器上
- Hub 内存几十 MB 即可;Agent 十几 MB
- Hub 端口默认
8090;SSH 模式下 Agent 默认监听45876
官方仓库:github.com/henrygd/beszel,文档:beszel.dev。本文实机镜像为 henrygd/beszel:latest 与 henrygd/beszel-agent:latest(0.21.1)。
第一步:Docker Compose 启动 Hub
新建目录写入 docker-compose.yml。端口只绑定本机,由反向代理(Nginx/Caddy/1Panel 的 OpenResty)对外提供 HTTPS。USER_EMAIL/USER_PASSWORD 可以在首次启动时直接创建管理员,不写的话首次打开网页时也会引导你创建:
mkdir -p ~/beszel && cd ~/beszel
# docker-compose.yml
services:
beszel:
image: henrygd/beszel:latest
container_name: beszel
restart: unless-stopped
ports:
- "127.0.0.1:8090:8090"
environment:
APP_URL: "https://status.example.com" # 换成你的域名(可选)
USER_EMAIL: "admin@example.com" # 首次启动自动创建管理员(可选)
USER_PASSWORD: "换成你的强密码"
volumes:
- ./beszel_data:/beszel_data
- ./beszel_socket:/beszel_socket
docker compose up -d
docker logs -f beszel # 看到 Server started at http://0.0.0.0:8090 即启动成功
第二步:登录面板
浏览器打开你的域名(本机演示为 http://127.0.0.1:8090),用邮箱 + 密码登录。界面默认跟随浏览器语言,简体中文翻译完整,右上角还能切换深色模式:

第三步:添加系统并部署 Agent
点右上角「添加 系统」,填写名称和主机 IP,面板会自动给出 Hub 的公钥和令牌,并能一键复制对应的 docker-compose.yml(或切到「二进制」页复制一行安装命令):

与 Hub 同一台机器时,官方推荐用 Unix Socket 连接,Agent 不用开放任何端口。把下面这段追加到同一个 compose 文件里(KEY、TOKEN 换成对话框里复制的值),添加系统时「主机/IP」填 /beszel_socket/beszel.sock:
beszel-agent:
image: henrygd/beszel-agent:latest
container_name: beszel-agent
restart: unless-stopped
network_mode: host
volumes:
- ./beszel_agent_data:/var/lib/beszel-agent
- ./beszel_socket:/beszel_socket
- /var/run/docker.sock:/var/run/docker.sock:ro # 读取容器统计
environment:
LISTEN: /beszel_socket/beszel.sock
HUB_URL: http://localhost:8090
TOKEN: "对话框里的令牌"
KEY: "ssh-ed25519 AAAA...对话框里的公钥"
其它服务器上只需要跑 Agent(LISTEN: 45876,主机/IP 填这台机器的地址)。务必在防火墙里把 45876 只放行给 Hub 所在 IP;配置了 HUB_URL + TOKEN 时,Agent 也会主动用 WebSocket 连回 Hub,NAT 后面的机器同样能接入。
第四步:总览所有服务器
Agent 连上后,首页「所有客户端」表格会实时显示每台机器的 CPU、内存、磁盘、负载、网络、运行时间和 Agent 版本,可按列排序、过滤:

第五步:单机详情与历史曲线
点进任意系统,顶部是在线状态、IP、主机名、运行时长、系统版本、CPU 型号与内存总量;下面是 CPU 使用率、Docker 容器 CPU、内存、容器内存等历史曲线,右上角可以切换 1 小时 / 12 小时 / 24 小时 / 1 周 / 30 天。下图中 CPU 的几个波峰就是演示时人为加的压测负载:

继续往下是磁盘用量、磁盘 I/O、带宽、容器网络 I/O 和系统负载(1/5/15 分钟),挂了额外硬盘、有 GPU 或温度传感器的机器还会多出对应图表:

第六步:容器列表
顶部的盒子图标进入「所有容器」,汇总所有机器上的 Docker 容器:CPU、内存、网络、健康检查、端口映射、镜像和运行状态,排查「哪个容器在吃内存」特别方便:

第七步:网络监控(Ping / TCP / HTTP / DNS)
新版加入的「网络监控」由指定的 Agent 发起探测,支持 ICMP、TCP 端口、HTTP(S)(含证书到期信息)和 DNS 解析,记录实时响应、1 小时平均 / 最大 / 最小与丢包率。演示里分别探测了 Nginx 容器、Redis 端口、Hub 健康检查接口和 example.com 的解析:

第八步:配置告警与通知
在首页表格每台机器行尾点铃铛图标即可设置告警:掉线、CPU、内存、磁盘、带宽、温度、负载、网络监控丢包等,每项都能设阈值和持续时长(例如 CPU 平均超过 80% 持续 10 分钟才报警),也可以切到「所有客户端」一次性应用到全部机器:

「设置 → 通知」里填写收件邮箱(需先在 PocketBase 后台 /_/ 配置 SMTP),或添加 Shoutrrr URL 推送到 Telegram、Discord、Bark、ntfy、Gotify、通用 Webhook 等,还能设置维护期间的静默时间:

安全与运维建议
- Hub 不要直接映射到 0.0.0.0。教程用的是
127.0.0.1:8090,对外走带证书的反向代理;只自己看的话放在内网 / Tailscale / WireGuard 里更省心。 - Agent 的
45876端口只对 Hub IP 放行;Agent 只接受持有对应私钥的 Hub 连接,但少暴露一个端口总是好的。 - Docker socket 以
:ro只读挂载;不需要容器统计的机器可以不挂。 - 超级管理员后台在
/_/(PocketBase),可配置 SMTP、OAuth、S3 自动备份,记得给它设强密码。 - 备份:定期打包
./beszel_data(data.db与id_ed25519私钥),换机器时整个目录拷过去即可,Agent 无需重配。 - 升级:
docker compose pull && docker compose up -d;二进制 Agent 可用beszel-agent update(国内可加--china-mirrors)。 - 演示用完可删:
docker compose down && rm -rf ./beszel_data ./beszel_socket ./beszel_agent_data。
小结
Beszel 用一个 Hub + 若干个轻量 Agent,就把「多台服务器的资源曲线 + 容器统计 + 网络探测 + 阈值告警」这套常用监控做全了,界面清爽、中文完整、资源占用极低。比 Uptime Kuma 多了主机与容器层面的指标,又比 Prometheus + Grafana 省去一堆配置,个人站长和小团队管几台机器非常合适。
项目地址:https://github.com/henrygd/beszel(MIT)














暂无评论内容