家庭实验室仪表盘Labby

家庭实验室仪表盘Labby

简介

什么是 Labby ?

Labby是一个开源的自托管家庭实验室仪表盘,轻量如Glance,交互如Homarr。它使用单个Bun进程运行,配置存储在小型SQLite数据库中,支持应用内编辑。

主要特点

  • 丰富的 Widget 组件:支持服务监控、DockerqBittorrent/TransmissionSABnzbdAdGuardJellyfinEmbyPlexBeszelRadarrSonarrReelward、天气、日历、速度测试、RedditHacker News等多种集成
  • 实时更新:服务器轮询集成并通过SSE推送更改,无需客户端轮询,确保数据实时性
  • 交互式控制:支持启动/停止Docker容器、暂停/恢复下载任务、切换AdGuard保护等功能
  • 配置与凭据管理:配置存储在SQLite数据库中,支持Zod验证,可通过应用内的「管理服务」页面编辑服务URL和密钥
  • 主题定制:支持命名颜色方案保存到数据库,首次加载无闪烁
  • 开源免费:基于MIT协议开源,可免费使用和修改

应用场景

  • Homelab 服务监控:统一查看所有自托管服务的运行状态,包括NAS、媒体服务器、下载工具、网络工具等
  • Docker 容器管理:通过Web界面直接启动、停止容器,无需登录服务器命令行
  • 下载任务管理:控制qBittorrentTransmission等下载客户端,暂停、恢复下载任务
  • 网络工具集成:集成AdGuardPi-hole等网络工具,一键切换保护状态
  • 媒体库管理:查看JellyfinEmbyPlex等媒体服务器状态,管理电影、剧集等媒体资源
  • 开发测试环境:开发人员可以快速搭建统一的测试环境入口

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:latest

docker-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文件或环境变量。

内置集成

类型配置说明
monitorHTTP 站点检查(每个站点的标题、URL、图标)
docker读/写 Docker 主机,容器过滤器(running/all
qbittorrentURL、用户名、密码
transmissionURL、用户名、密码
sabnzbdURL、API 密钥
adguardURL、用户名、密码
jellyfinURL、API 密钥
embyURL、API 密钥
plexURL、令牌
beszelURL、用户名、密码、令牌
radarrURL、API 密钥
sonarrURL、API 密钥
reelwardURL、API 密钥
weatherOpenWeather API 密钥、城市或经纬度、单位
calendarICS 订阅 URL(每行一个)
speedtestSpeedtest Tracker URL、API 令牌
reddit合并为一个订阅源的 Subreddits
hackernews无需配置(Algolia 前端)

您可以添加多个相同类型的集成(例如两个Radarr实例) - 每个都有自己的行、轮询间隔和SSE通道(int:<id>)。

Docker 集成配置

要实现对Docker容器的交互式控制(启动/停止),需要通过Docker Socket Proxy方式连接。

注意LabbyDocker集成UI只支持http://https://s3://格式的URL,不支持unix://格式的socket路径。因此需要使用Docker Socket ProxyUnix 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权限。请确保:

  1. 仅在内网或VPN环境下使用
  2. 不要暴露到公网
  3. 配置防火墙规则,仅允许特定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和凭据,根据需要添加不同的集成(DockerJellyfinqBittorrent等)

配置完成后,仪表盘会自动显示各个服务的状态

进入docker

查个日志

或者启停都是可以的

注意事项

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