家庭实验室仪表盘Labby
简介
什么是 Labby ?
Labby是一个开源的自托管家庭实验室仪表盘,轻量如Glance,交互如Homarr。它使用单个Bun进程运行,配置存储在小型SQLite数据库中,支持应用内编辑。
主要特点
- 丰富的 Widget 组件:支持服务监控、
Docker、qBittorrent/Transmission、SABnzbd、AdGuard、Jellyfin、Emby、Plex、Beszel、Radarr、Sonarr、Reelward、天气、日历、速度测试、Reddit、Hacker News等多种集成 - 实时更新:服务器轮询集成并通过
SSE推送更改,无需客户端轮询,确保数据实时性 - 交互式控制:支持启动/停止
Docker容器、暂停/恢复下载任务、切换AdGuard保护等功能 - 配置与凭据管理:配置存储在
SQLite数据库中,支持Zod验证,可通过应用内的「管理服务」页面编辑服务URL和密钥 - 主题定制:支持命名颜色方案保存到数据库,首次加载无闪烁
- 开源免费:基于
MIT协议开源,可免费使用和修改
应用场景
- Homelab 服务监控:统一查看所有自托管服务的运行状态,包括
NAS、媒体服务器、下载工具、网络工具等 - Docker 容器管理:通过
Web界面直接启动、停止容器,无需登录服务器命令行 - 下载任务管理:控制
qBittorrent、Transmission等下载客户端,暂停、恢复下载任务 - 网络工具集成:集成
AdGuard、Pi-hole等网络工具,一键切换保护状态 - 媒体库管理:查看
Jellyfin、Emby、Plex等媒体服务器状态,管理电影、剧集等媒体资源 - 开发测试环境:开发人员可以快速搭建统一的测试环境入口
Labby是一个轻量级、功能丰富的家庭实验室仪表盘,帮助Homelab爱好者统一管理和监控所有自托管服务。通过丰富的Widget组件和实时更新功能,用户可以轻松查看服务状态、控制Docker容器、管理下载任务等。
安装
在群晖上以 Docker 方式安装。
本文写作时,
latest版本对应为1.5.0;
镜像托管在ghcr.io,群晖Docker套件无法直接搜索,需要通过命令行拉取镜像。
docker cli 安装
如果你熟悉命令行,可能用docker cli更快捷
# 新建文件夹 labby 和 子目录mkdir-p/volume1/docker/labby/config# 进入 labby 目录cd/volume1/docker/labby# 修改目录权限chmoda+rw config# 一键启动dockerrun-d\--name=labby\--restart=unless-stopped\-p8425:8080\-v/volume1/docker/labby/config:/app/config\ghcr.io/samuelloranger/labby:latestdocker-compose 安装
也可以用docker-compose安装,将下面的内容保存为docker-compose.yml文件
version:'3.8'services:labby:image:ghcr.io/samuelloranger/labby:latestcontainer_name:labbyrestart:unless-stoppedports:-"8425:8080"volumes:-./config:/app/config# 配置文件目录然后通过SSH登录到您的群晖,执行下面的命令:
# 新建文件夹 labby 和 子目录mkdir-p/volume1/docker/labby/config# 进入 labby 目录cd/volume1/docker/labby# 修改目录权限chmoda+rw config# 将 docker-compose.yml 放入当前目录# 一键启动docker-composeup-d配置
用户配置存储在SQLite数据库中。无效配置会显示错误状态,而不会导致服务器崩溃。
服务凭据和实例设置(监控站点、天气位置、Docker主机、下载客户端 URL 等)存储在integrations表中。仪表盘组件通过integrationId引用集成,仅携带显示选项(标题、布局样式、最大项目数)。轮询频率在集成行中设置(refreshSeconds),而不是在仪表盘 JSON 中。
所有配置都从「管理服务」页面进行,无需.env文件或环境变量。
内置集成
| 类型 | 配置说明 |
|---|---|
monitor | HTTP 站点检查(每个站点的标题、URL、图标) |
docker | 读/写 Docker 主机,容器过滤器(running/all) |
qbittorrent | URL、用户名、密码 |
transmission | URL、用户名、密码 |
sabnzbd | URL、API 密钥 |
adguard | URL、用户名、密码 |
jellyfin | URL、API 密钥 |
emby | URL、API 密钥 |
plex | URL、令牌 |
beszel | URL、用户名、密码、令牌 |
radarr | URL、API 密钥 |
sonarr | URL、API 密钥 |
reelward | URL、API 密钥 |
weather | OpenWeather API 密钥、城市或经纬度、单位 |
calendar | ICS 订阅 URL(每行一个) |
speedtest | Speedtest Tracker URL、API 令牌 |
reddit | 合并为一个订阅源的 Subreddits |
hackernews | 无需配置(Algolia 前端) |
您可以添加多个相同类型的集成(例如两个Radarr实例) - 每个都有自己的行、轮询间隔和SSE通道(int:<id>)。
Docker 集成配置
要实现对Docker容器的交互式控制(启动/停止),需要通过Docker Socket Proxy方式连接。
注意:
Labby的Docker集成UI只支持http://、https://和s3://格式的URL,不支持unix://格式的socket路径。因此需要使用Docker Socket Proxy将Unix socket 转换为HTTP API。
方案一:使用 Docker Socket Proxy(推荐)
使用tecnativa/docker-socket-proxy作为中间代理,将 Docker socket 转换为 HTTP API:
version:'3.8'services:labby:image:ghcr.io/samuelloranger/labby:latestcontainer_name:labbyrestart:unless-stoppedports:-"8425:8080"volumes:-./config:/app/config# 配置文件目录depends_on:-docker-proxydocker-proxy:image:tecnativa/docker-socket-proxy:latestcontainer_name:docker-proxyrestart:unless-stoppedvolumes:-/var/run/docker.sock:/var/run/docker.sock:ro# 挂载 Docker Socket(只读)environment:-CONTAINERS=1# 允许容器操作-POST=1# 允许 POST 请求在Labby中添加Docker集成时,host填写:http://docker-proxy:2375
在Labby中添加Docker集成时,如果想控制Docker启停,需要配置两个字段:
RO Host(只读主机):
http://docker-proxy:2375(用于查看容器列表、日志等只读操作)RW Host(读写主机):
http://docker-proxy:2375(用于启动、停止、重启容器等操作)
方案二:群晖 DSM 6.2 直接开放 Docker TCP(不推荐)
如果不想使用Docker Socket Proxy,可以在群晖上直接开放Docker TCP API:
第一步:修改 Docker 配置文件
通过SSH登录群晖,编辑Docker配置文件:
# 备份原始配置sudocp/var/packages/Docker/etc/dockerd.json /var/packages/Docker/etc/dockerd.json.bak# 编辑配置文件sudovi/var/packages/Docker/etc/dockerd.json在配置文件中添加hosts字段(保留原有内容):
{"registry-mirrors":[],"hosts":["unix:///var/run/docker.sock","tcp://0.0.0.0:2375"]}第二步:重启 Docker 服务
sudosynoservice--restartpkgctl-Docker第三步:验证端口是否开放
netstat-tuln|grep2375如果显示tcp 0 0 0.0.0.0:2375 0.0.0.0:* LISTEN,说明配置成功。
第四步:在 Labby 中添加 Docker 集成
host填写:http://<群晖IP>:2375(如http://192.168.0.199:2375)
安全警告:直接暴露
Docker TCP API会赋予完全控制宿主机Docker的权限,相当于root权限。请确保:
- 仅在内网或
VPN环境下使用- 不要暴露到公网
- 配置防火墙规则,仅允许特定
IP访问2375端口
图标
icon字段接受带前缀的字符串:
| 前缀 | 示例 |
|---|---|
di: | di:jellyfin- dashboard-icons(构建时内置,CDN 回退) |
sh: | sh:immich- selfh.st |
lucide: | lucide:film- 内置线条图标 |
| URL / 路径 | https://...或/icons/custom.svg |
刷新间隔
在「管理服务」页面为每个集成设置轮询频率(refresh Seconds;默认值来自集成类型)。浏览器通过SSE接收更新,而不是自己的定时器。
运行
在浏览器中访问http://<群晖IP>:8425即可进入Web界面。
点击页面右上角的数据库图标进入Manager services
在「管理服务」页面添加您的服务URL和凭据,根据需要添加不同的集成(Docker、Jellyfin、qBittorrent等)
配置完成后,仪表盘会自动显示各个服务的状态
进入docker
查个日志
或者启停都是可以的
注意事项
- 无认证功能:
Labby本身没有认证机制,请确保在反向代理后面运行,或仅在局域网/VPN内访问 - 目录权限:
config/目录必须对容器运行的用户可写,否则会出现SQLITE_READONLY错误。如果遇到权限问题,可以在docker-compose.yml中添加user: "<uid>:<gid>"配置 - 数据持久化:所有配置和数据都保存在
config/labby.db文件中,定期备份此文件即可完整备份Labby数据 - 端口冲突:确保本地端口
8425没有被其他服务占用,如有冲突请修改端口映射 - 安全建议:不要将
Labby暴露到公共互联网,除非有网络级别的访问控制
参考文档
samuelloranger/labby: Self-hosted homelab dashboard — lightweight like Glance, interactive like Homarr
地址:https://github.com/samuelloranger/labby
Labby - Docker 镜像
地址:https://ghcr.io/samuelloranger/labby
