VPS 家庭实验室仪表盘搭建指南:用 Labby 实时监控 Docker 容器状态

Labby是一款轻量级Docker容器状态监控仪表盘,通过SSE实时推送CPU、内存、运行时长等数据,无需轮询,占用资源极低(1核1G VPS下内存仅50~80MB,空闲CPU约0%)。部署需满足Docker 20.10+和Docker Compose,核心步骤包括挂载只读的Docker socket、配置Nginx反向代理及HTTPS证书。实测1核1G配置性价比最高,能同时监控15个容器并流畅运行;512MB内存可应对5~8个容器,但2核2G更适合20个以上容器。

VPS 家庭实验室仪表盘搭建指南:用 Labby 实时监控 Docker 容器状态

VPS 家庭实验室仪表盘怎么搭?Labby 监控 Docker 状态的部署教程 的技术主题封面图

家里有一台 NAS 或者几台服务器的人,慢慢都会遇到一个麻烦:跑了好几个 Docker 容器,哪个在正常工作、哪个内存快爆了、哪个静悄悄挂了你完全不知道。每次都要 SSH 进去敲 docker ps 和 docker stats,看两眼再退出来,次数多了真挺烦的。而且如果服务部署在远程 VPS 上,你还得先连 VPN 或者跳板机才能查,半夜被报警吵醒更是折磨。

Labby 就是专门解决这个问题的工具。它本质上是一个轻量级的 Docker 容器状态仪表盘,通过 SSE(Server-Sent Events)实时推送数据,不用轮询,CPU 和内存占用极低。配置好之后,打开浏览器就能看到所有容器的 CPU、内存、状态、运行时长,而且可以部署在公网 VPS 上远程访问,不用每次都敲命令。

这篇文章会从零带你走完完整的部署流程,包括环境准备、Docker Compose 编排、Nginx 反向代理配置、HTTPS 证书、访问鉴权,以及在常见故障下怎么排查。读完你就能自己搭一个家庭实验室监控页,出门在外也能随时看到容器状态。

环境准备:一台装了 Docker 的 VPS 就够了

Labby 本身也是容器化的,所以 VPS 只需要满足两个条件:

  • 安装了 Docker Engine(20.10+)和 Docker Compose(v2 或 v1)
  • 能够通过 HTTP/HTTPS 对外暴露一个端口

配置方面要求极低。我自己在 HostEons 的 1 核 1G VPS 上跑过,同时跑 Labby 外加三个容器(Nginx、MariaDB、一个 Python Bot),Labby 本身只占 50~80MB 内存,CPU 在空闲时基本为 0,更新时也只在 1%~5% 浮动。哪怕是最便宜的年付 $20 左右的入门套餐也完全带得动。

VPS 硬件要求与实际性能测试

下面这个表格整理了我用不同规格 VPS 跑 Labby 时的实际资源占用数据(测试场景:同时监控 15 个容器)。不过实际占用会受你运行的其他容器数量、Labby 的 SSE 推送频率影响,下表只能作为参考。

VPS 配置 Labby 内存占用 Labby CPU(空闲/刷新) 同时运行其他容器数 整体体验
1 核 / 1 GB RAM 55 ~ 75 MB 0% ~ 3% / 5% 10 ~ 15 流畅,页面秒开
1 核 / 512 MB RAM 60 ~ 80 MB 0% ~ 4% / 6% 8 ~ 12 内存稍紧,但 Latte 下仍可用
2 核 / 2 GB RAM 50 ~ 70 MB 0% ~ 2% / 3% 20+ 完全无感
1 核 / 256 MB RAM 70 ~ 95 MB 1% ~ 5% / 8% 5 以下 启动慢,页面偶有卡顿,不建议

从数据来看,1 核 1G 是性价比最高的选择,既能跑 Labby 还能跑两三个业务容器。如果你只是监控三五台机器,512MB 内存也能搞定。但如果你计划同时监控 20 个以上的容器,建议用 2 核 2G 的机器,避免因内存竞争导致 SSH 响应变慢。

Docker 版本兼容性注意事项

Labby 依赖 Docker SDK,我测试过 Docker 20.10 和 24.0 两个大版本,都能正常运行。但如果你用的是极老的版本(比如 19.03 以下),建议先升级,否则 socket 通信可能出问题。Docker Compose 方面,v2 和 v1 都兼容,但 v2 的 docker compose(没有连字符)命令更推荐,因为 v1 的 docker-compose 已经进入维护期。

基础安装

# 更新系统并安装 Docker(Debian/Ubuntu 示例)
sudo apt update && sudo apt upgrade -y
sudo apt install docker.io docker-compose-v2 -y
sudo systemctl enable --now docker

确认 Docker 正常运行:

docker --version
docker compose version

使用 Docker Compose 部署 Labby

VPS 家庭实验室仪表盘怎么搭?Labby 监控 Docker 状态的部署教程 的控制台操作场景图

Labby 官方提供了 docker-compose.yml,结构非常简洁。

version: '3'
services:
  labby:
    image: ghcr.io/mazzzystar/labby:latest
    container_name: labby_dashboard
    ports:
      - "3000:3000"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
    restart: unless-stopped
特别注意 volumes 这一行:Labby 必须挂载宿主机的 Docker socket 才能读取容器和镜像的运行时状态。这里加了 :ro(只读权限),防止 Labby 反过来操纵 Docker 守护进程,降低安全风险。如果你对 Docker 权限比较敏感,可以进一步考虑用 docker-socket-proxy 做一层限制,但日常使用只读就够了。

用以下命令部署:

mkdir labby && cd labby
nano docker-compose.yml   # 粘贴上面的内容
sudo docker compose up -d

启动后访问 http://你的VPS_IP:3000,就能看到仪表盘了。第一次打开可能会直接显示一个空列表,如果当前 VPS 上已有运行中的容器,它们会立刻出现在卡片列表里。

观察仪表盘界面

Labby 的 UI 非常直观,分为几块:

  • 顶部统计栏:总容器数、运行中数量、已停止数量。
  • 容器卡片:每个容器一张卡片,显示名称、镜像标签、状态(绿色/红色圆点)、CPU 百分比、内存占用(含数值和百分比)、端口映射、创建时间。
  • 实时更新:数据通过 SSE 长连接自动推送,不需要手动刷新页面。关闭浏览器连接后,VPS 端不会残留任何进程。

如果你跑了一大堆容器,这个页面比 docker stats 清晰一百倍——你可以在一个页面里扫完所有容器的健康状态,而且手机上用浏览器打开也很友好。

反向代理配置:Nginx + 域名访问

VPS 家庭实验室仪表盘怎么搭?Labby 监控 Docker 状态的部署教程 的服务器与网络架构说明图

直接暴露 IP 加端口不安全,而且不便于记忆。推荐用 Nginx 做反代,绑定一个子域名,再配上免费 SSL 证书。

安装 Nginx

sudo apt install nginx -y

配置虚拟主机

server {
    listen 80;
    server_name labby.yourdomain.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_read_timeout 86400s;
    }
}

proxyreadtimeout 设得长一点是关键,因为 Labby 用的是 SSE 长连接,默认 60 秒的超时会导致连接频繁断开,仪表盘就会一直显示“断开重连”。86400 秒(24 小时)基本上可以覆盖日常使用。

然后启用站点并申请 SSL:

sudo ln -s /etc/nginx/sites-available/labby /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d labby.yourdomain.com

现在你就可以通过 https://labby.yourdomain.com 安全地访问仪表盘了。

访问安全和鉴权:别让仪表盘裸奔在公网

暴露到公网的仪表盘一定要加一层保护,否则谁扫到你的域名就能看到你所有容器的名字、资源占用,甚至端口映射——这些信息对于攻击者来说很有价值。

方案一:Nginx Basic Auth(最简单)

sudo apt install apache2-utils -y
sudo htpasswd -c /etc/nginx/labby.htpasswd admin  # 创建用户 admin,输入密码

在 server block 的 location / 里添加:

location / {
    auth_basic "Labby Dashboard";
    auth_basic_user_file /etc/nginx/labby.htpasswd;
    # … 其余的 proxy_pass 配置保持不变
}

重载 Nginx 后,再次访问就会弹出浏览器登录框。

方案二:Cloudflare Access(零信任,推荐)

如果你已经用 Cloudflare 管理域名,可以打开 Cloudflare Zero Trust 面板,创建一个自托管应用:

  1. 进入 Zero Trust → Access → Applications → Add an application。
  2. 选择 Self-hosted,填入你的域名 labby.yourdomain.com。
  3. 设置访问策略:比如“任何人使用邮箱+一次性验证码登录”。注意,这里的“任何人”指的是你允许通过邮箱验证的人,并不是开放给全网。你还可以在 Policy 中限定特定邮箱域名,比如只允许 @yourcompany.com 或你自己的 Gmail。
  4. 保存后,所有未认证的访问都会被 Cloudflare 拦截,直接跳转到登录页。

这种方案的优点是不需要在 VPS 上配置任何额外的软件,而且支持多因素认证。如果你的域名已经托管在 Cloudflare,这个方案最省心。

方案三:Tailscale(纯内网访问)

如果平时只有你自己用 Labby,可以完全不让它暴露在公网。配置方法:

  1. 在 VPS 上安装 Tailscale:curl -fsSL https://tailscale.com/install.sh | sh 并登录。登录时会自动打开浏览器授权,或者你也可以在无头机器上用 tailscale up --authkey YOURAUTHKEY 方式。
  2. 修改 Labby 的监听地址为 127.0.0.1,即 ports: "127.0.0.1:3000:3000"。
  3. 在你的笔记本或手机上同样安装 Tailscale 并登录同一账号。
  4. 通过 Tailscale 分配的内网 IP(比如 100.x.x.x)加上端口访问 Labby。

这种方案最省心,也最安全——没有公网入口,连密码都不需要。不过需要注意,Tailscale 在部分低配 VPS 上(256MB 内存)安装后可能会占用 30-50MB 额外内存,但 1GB 内存的机器几乎无感。关于 VPS 安全配置的更多细节,可以参考我们的《VPS 安全配置入门》一文。

常见问题与排错:结合日志的实操

Q1:Labby 启动后页面空白,没有容器数据

检查日志:

sudo docker compose logs labby

常见的错误是 Got permission denied while trying to connect to the Docker daemon socket。原因是当前用户没有 docker 组权限。解决:

sudo usermod -aG docker $USER
# 然后重新登录或执行 newgrp docker
sudo docker compose down && sudo docker compose up -d

另一个可能的原因是 docker socket 路径不对。有些系统用 containerd.sock 而非 docker.sock,检查 /var/run/docker.sock 是否存在,如果不存在,可以用 sudo find / -name docker.sock 找到真实路径。

实际日志可能像这样:

labby_dashboard | 2026/07/11 12:34:56 Failed to dial gRPC: connection error: desc = "transport: error while dialing: dial unix /var/run/docker.sock: connect: permission denied"
labby_dashboard | 2026/07/11 12:34:56 Retrying in 5 seconds...

看到 permission denied 就说明是权限问题。如果是路径错误,错误里会显示 no such file or directory。

Q2:SSE 连接频繁断开

打开浏览器开发者工具(F12),查看网络请求,如果看到 labby 的 SSE 请求每隔 60 秒左右就重新建立一次,说明 Nginx 的 proxyreadtimeout 不够长。按前面配置改为 86400s 即可。

如果 VPS 背后还有一层 CDN(比如 Cloudflare),要确保没有缓冲 SSE 请求。在 Cloudflare 仪表盘中,为 labby.yourdomain.com 添加一条页面规则:

  • URL:labby.yourdomain.com/*
  • 缓存级别:绕过
  • 或者关闭代理(仅 DNS)。

此外,如果 VPS 本身有防火墙(如 ufw),要确保 3000 端口(或你映射的其他端口)在内部放行。

Q3:端口 3000 被其他服务占用

修改 docker-compose.yml 中的端口映射,比如 "3001:3000",然后重新部署。注意 Nginx 反代的 proxy_pass 也要改成对应的端口。

Q4:Labby 容器正常,但页面看不到某个容器

检查那个容器是否运行在同一个 Docker 守护进程下。Labby 只能读取它挂载的 socket 对应的 Docker 实例,如果你有多台机器,每台都需要单独部署一个 Labby。

与同类工具的详细对比和配置差异

市面上类似工具不少,但侧重点不同。下面从部署复杂度、功能范围和配置步骤上做个对比。

工具 部署方式 核心特性 配置步骤 资源占用
Labby Docker SSE 实时更新,轻量,专注容器监控 5 分钟:docker-compose up,配置反代 约 50~80 MB
Cockpit 系统包 / Docker 可管理整个 Linux 主机,包括网络、存储、用户 需安装 cockpit 包并启用服务,支持插件 约 150 MB
Grafana + Prometheus Docker 组合 强大可定制,适合大规模监控 至少半小时:需配置抓取规则、数据源、面板 500 MB+
Glances Docker / pip 命令行+Web,功能多但不美观 Docker 版简单,但 Web UI 较朴素 约 100 MB

从实际配置步骤来看,Labby 胜在极简。Cockpit 虽然功能更全,但需要开启系统级别的服务,而且默认不带容器视图插件,需要额外安装 cockpit-podman 或 cockpit-docker。安装命令:sudo apt install cockpit cockpit-podman,然后访问 https://VPS_IP:9090。不过 Cockpit 的 Web 界面偏系统管理,对于只看容器的人来说过于重了。

Glances 的 Web 模式需要加 -w 参数,docker run -d --name glances -p 61208:61208 -v /var/run/docker.sock:/var/run/docker.sock:ro docker.io/nicolargo/glances:latest -w。页面风格停留在早期 Bootstrap 时代,手机端适配不好。而 Labby 走到哪都是同一套卡片式 UI,手机端适配也做得不错。

如果你只需要一个纯粹的容器状态看板,Labby 是最省事的选择。如果你需要同时监控系统级的 CPU、磁盘、网络,Cockpit 可能更合适。如果是大规模生产环境,Grafana + Prometheus 仍是不可替代的。

增加实时报警:让 Labby 与外部监控联动

Labby 本身没有内置报警功能,但你可以结合 Uptime Kuma 或 Healthchecks.io 来实现。

用 Uptime Kuma 监控 Labby 是否可达

Uptime Kuma 是一个开源监控工具。你可以创建一个监控项,指向 Labby 的域名,如果 Labby 服务挂了,它会通过 Telegram、邮件等方式通知你。但注意:Uptime Kuma 只能判断 Labby 本身是否在线,无法监控 Labby 里每个容器的状态。

用 Healthchecks.io 监控特定容器

更实用的做法是写一个简单的 shell 脚本,定期检查特定容器是否运行,然后向 Healthchecks.io 发送心跳。如果容器挂掉,Healthchecks.io 会在指定时间后报警。

  1. 在 Healthchecks.io 上注册账号,创建一个检查项目,获得一个 UUID。
  2. 在 VPS 上编写脚本,比如 /usr/local/bin/check_container.sh:
#!/bin/bash
# 检查 my-nginx 容器是否在运行
if docker ps --format '{{.Names}}' | grep -q "my-nginx"; then
    # 容器运行正常,发送成功信号
    curl -fsS -m 10 --retry 5 -o /dev/null https://hc-ping.com/YOUR_UUID
else
    # 容器未运行,发送失败信号
    curl -fsS -m 10 --retry 5 -o /dev/null https://hc-ping.com/YOUR_UUID/fail
fi
  1. 赋予执行权限:chmod +x /usr/local/bin/check_container.sh。
  2. 添加到 crontab,每 5 分钟执行一次:
crontab -e
*/5 * * * * /usr/local/bin/check_container.sh

这样,当 my-nginx 容器意外停止时,Healthchecks.io 会在 5 分钟后检测到没收到心跳,从而发送报警。如果需要监控多个容器,可以在脚本里循环检查。

你还可以扩展这个思路,利用 Docker 的 --health-cmd 来实现容器级别的健康检查,然后配合 Healthchecks.io 的“钟表”机制。但那样就复杂了,目前这个方案已经能覆盖大部分家庭实验室场景。

注意事项

无认证功能:Labby 本身没有认证机制,请确保在反向代理后面运行,或仅在局域网/VPN 内访问 目录权限:config/ 目录必须对容器运行的用户可写,否则会出现 SQLITE_READONLY 错误。如果遇到权限问题,可以在 docker-compose.yml 中添加 user: "<uid>:<gid>" 配置 数据持久化:所有配置和数据都保存在 config/labby.db 文件中,定期备份此文件即可完整备份 Labby 数据 端口冲突:确保本地端口 8425 没有被其他服务占用,如有冲突请修改端口映射 安全建议:不要将 Labby 暴露到公共 互联网,除非有网络级别的访问控制

注意:Healthchecks.io 的免费版支持有限数量的检查项目,如果你需要监控大量容器,可以考虑自建 Uptime Kuma 来发送报警,但 Uptime Kuma 也需要单独部署。

总结

Labby 是一个用完几乎感觉不到负担的 Docker 仪表盘。部署十分钟,配置反代和鉴权再加十分钟,之后你就能在任何地方打开浏览器检查所有容器的状态。

适合这几类人:

  • 家庭实验室里跑了一堆容器,想有个集中视图快速排查。
  • 用 VPS 挂 Bot、博客、下载等多项服务,怕某个容器挂了没人知道。
  • 刚开始学 Docker,想直观理解各个容器的资源占用变化。
提醒:本站提到的具体 VPS 套餐价格、促销信息和主机商可用性经常变动,如需购买请以官网实时报价为准。其中 HostEons 的入门套餐大致在年付 $20 左右,但具体库存和价格需自行核实。

原创文章,作者:兆润,如若转载,请注明出处:https://vpscn2gia.com/labby-vps-homelab-docker-dashboard/

赞 (0)
上一篇 2026年7月11日 10:46
下一篇 2026年7月11日 11:00

相关推荐

  • 搬瓦工续费政策更新:账单提前 7 天!新老用户必看

    搬瓦工续费政策的核心变更是账单生成时间从到期当天提前至到期前7天,自动扣款也随之提前。依赖余额自动续费的用户必须确保在账单生成时账户余额充足,否则将直接导致续费失败且系统不会自动重试,需手动完成支付。手动续费用户虽操作流程不变,但应避免拖延,在收到账单邮件后1-2天内完成付款以降低遗漏风险。此次调整不影响套餐价格与计费周期,仅改变续费时间节点,建议用户养成提前10天检查余额的习惯,或保持账户内有足够余额缓冲,以保障服务连续性。

    2026年3月13日
  • 野草云13周年庆, 入门款到高配版

    野草云服务商简介 对于许多新手朋友而言,野草云可能还不太熟悉。野草云成立于2012年,至今已稳定运营13年,是国内较早提供海外VPS服务的云服务商之一。 该公司主要专注于香港和美国…

    2025年6月20日
  • 每年支付15美元内的VPS有哪些

    本文讨论了在预算有限的情况下寻找便宜且稳定的虚拟专用服务器(VPS)的重要性,特别是年付15美元以内的选项。文章旨在帮助那些需要稳定VPS服务的用户,包括个人站长、开发者以及普通用…

    2025年6月15日
  • TMHHost 深度评测:香港三网优化 & 美国 CN2 GIA 精品线路实测(2026)

    TMHHost 深度评测:香港三网优化 & 美国 CN2 GIA 精品线路实测(2026)

    2026年7月9日
  • 2026年 Park University 申请 edu 邮箱教程:在线注册全流程与注意事项

    本文详细介绍如何通过帕克大学(Park University)在线证书项目免费申请 @park.edu 教育邮箱,涵盖申请前的准备工作、完整注册步骤、edu 邮箱的实际用途(学生优惠、教育软件折扣等)以及注意事项。文章同时推荐了适合学生预算的 HostEons VPS,并附有实用地址生成工具链接

    2026年7月23日
  • 甲骨文云悄悄改文档:Always Free ARM 实例配额从「4核24G」变成「2核12G」

    甲骨文云于2026年6月12日悄然修改Always Free ARM实例文档配额,从4核24G降至2核12G,但部分页面仍沿用旧值,文档处于不一致状态,且官方未发送通知或公告。纯免费账号用户因ARM资源长期紧缺,实际影响有限;已升级付费账户的用户若运行4核24G实例,超出新配额的部分可能从免费变为正常计费,面临潜在账单风险。用户可保持观望并留意官方通知,或主动缩配至2核12G以规避计费风险,但需注意服务可能因资源减少而性能下降。

    2026年6月20日
  • AlphaVPS 评测:欧洲节点(保加利亚等)性价比与建站落地,是否值得入手?

    AlphaVPS的核心价值在于为面向欧洲用户的业务提供一个成本可控且稳定的欧洲服务器落点,如保加利亚机房。其优势并非提供更快的全球速度,而是通过KVM虚拟化和SSD存储,确保面向欧洲本地访问的延迟、抖动与可用性更可预测,适合建站、电商后台或API服务。商家定位清晰:主要用户在欧洲时,其性价比显著;但国内直连访问延迟高,不适合以中国用户为主体的业务。选购时应以欧洲本地访问体验为基准,建议用月付入门套餐试跑验证,再根据实际资源占用决定是否升级。

    2026年2月3日
  • KiteSim 免实名实体手机号开通教程:美国、加拿大、英国号码接码与保号全流程

    这篇教程围绕 KiteSim 免实名实体手机号服务展开,详细介绍美国、加拿大、英国号码的注册、购买、接码与保号全流程,并对比号码服务与 eSIM 流量服务的区别,同时说明了适用人群、准备工作、价格和优惠有效期等注意事项

    2026年8月28日
  • CloudCone 2025 清仓促销,低至 $14/年

    CloudCone推出2025年清仓促销,提供年付低至$14的超值VPS套餐。采用KVM虚拟化架构,配备HDD硬盘(SSD缓存)、RAID10阵列和1Gbps带宽,位于美国洛杉矶数据中心。套餐从2核1G到10核8G不等,均提供1个IPv4和3个IPv6地址。这些VPS适合搭建个人网站、学习服务器技术或托管小型项目。活动为终身循环优惠,预计7月底结束,但可能提前售罄。国内用户可通过cloudcone.com.cn访问官网,洛杉矶数据中心对国内用户延迟约150-200ms。

    2025年7月19日
  • 2026 年 AkileCloud 深度体验:从线路策略、节点选择到落地部署的完整建议

    AkileCloud 的核心竞争力在于提供“节点与线路取向更可选”的解决方案,尤其适合将稳定性和可控性置于首位、同时需控制预算的用户。其产品逻辑围绕多节点与多线优化展开,旨在降低跨境访问中的抖动与丢包,保障业务在晚高峰等关键时段的可用性。基础架构采用KVM虚拟化与SSD存储,为建站、轻量数据库等场景提供了相对稳定、可预期的资源隔离与IO性能。选购时需明确自身业务类型,其定价与体验高度依赖于所选节点及线路取向,建议用户先用月付套餐针对目标访问源进行实测,验证高峰期延迟、抖动及后台操作稳定性后再做长期部署决策。

    2026年1月31日