Homer 介绍与选型指南
Homer(bastienwirtz/homer)v26.08.3 认知篇:纯静态 YAML 仪表盘的定位、架构、功能特性、官方快速开始、适用场景与限制,以及与 Heimdall、Dashy、homepage 的量化选型对比(数据为 2026-11-02 GitHub API 实查)。
Homer 介绍与选型指南
目标:回答"Homer 是什么、怎么工作、适合不适合我",并给出它与同类自托管仪表盘(Heimdall、Dashy、homepage)的量化选型依据。本篇为认知篇,社区数据均来自 2026-11-02 对 GitHub API 与官方仓库的实查;动手部署请转 《Homer Docker Compose 部署指南》。
一、环境信息
| 项目 | 取值 |
|---|---|
| 软件名 | Homer(bastienwirtz/homer) |
| 本文对齐版本 | v26.08.3(2026-08-30 发布,CalVer 版本号) |
| 许可证 | Apache-2.0 |
| 主语言 / 前端框架 | Vue(SPA),构建工具 Vite |
| 官方发行形态 | 静态 HTML/JS 包 + 官方镜像 b4bz/homer(内置 lighttpd) |
| 社区规模(2026-11-02 GitHub API 实查) | 11,699 stars / 931 forks / 170 open issues / 58 watchers |
| 仓库动态 | created 2026-06 前(2018-06-14 建仓),pushed_at 2026-11-02,持续活跃 |
| 官方演示站 | https://homer-demo.netlify.app |
| 本系列实测环境 | Ubuntu 22.04(x86_64),Docker Engine 29.9.2 + Compose v5.6.1,部署细节见部署篇 |
💡 说明:Homer 与抓包分析工具 SIPCAPTURE Homer 同名不同物,本专栏指前者(自托管仪表盘,仓库 bastienwirtz/homer)。
二、软件概述
Homer 的官方定位一句话即可概括:"A dead simple static HOMepage for your servER"——用一份简单的 YAML 配置文件,为服务器 / NAS / 家庭实验室做一块"所有服务尽在掌握"的入口面板。作者 bastienwirtz(Bastien Wirtz),2018 年 6 月建仓,至今由个人主导 + 社区贡献持续维护,是 awesome-selfhosted 仪表盘类目的常客。
它的设计哲学与重量级面板相反:没有任何后端。整个产品编译后就是静态 HTML/JS/CSS,由任意 HTTP 服务器(官方镜像内置 lighttpd)直接发给浏览器;浏览器加载页面后再去拉 assets/config.yml,在客户端解析 YAML 并渲染出卡片。因此官方徽章自称 "speed: blazing 🔥"、"Low / No maintenance"——没有数据库要迁移、没有运行时依赖要打补丁,升级即换一个静态包。
两个与生俱来的约束要先知道:
- 它是纯静态 WebApp,必须经 HTTP 服务器访问,直接双击打开
index.html(file://协议)无法工作; - 它不提供任何鉴权能力,访问控制交给前置反向代理(Nginx / Caddy / Authelia 等)或网络隔离。
三、核心架构
Homer 的运行链路短到可以画成一行:
浏览器 ──GET /──> 静态资源(Vue SPA, 由 lighttpd/nginx/任意HTTP服务器发送)
浏览器 ──GET /assets/config.yml──> YAML 配置(你维护的唯一状态文件)
浏览器 ──(可选)直连各服务 API──> 智能卡数据(PiHole/Proxmox/Ping...)
关键点逐个说明:
- 前端单页应用:Vue 3 编写,Vite 构建为带哈希指纹的静态 bundle(实测产物如
resources/index-C32yDzkE.js),页面骨架只有一个<div id="app-mount">,其余全由 JS 渲染。 - 配置即数据:
config.yml是唯一配置来源,运行时由浏览器 fetch 后解析。改配置不需要重启任何进程,刷新浏览器即生效(热更新行为实测见配置篇)。 - 智能卡在浏览器端直连目标 API:
type: PiHole、type: Proxmox等卡片由浏览器直接向目标服务发请求。跨域时受 CORS 约束(这是它与服务端代理型面板的本质差异,见第七章对比)。 - PWA 可安装:内置 service worker 与
manifest.json,可安装为桌面/手机应用,离线时仍能显示上次缓存的面板。 - 发行载体极轻:官方镜像
b4bz/homer静态包内容体积仅数 MB 级(本系列部署篇有逐层实测回显),常驻内存约 1 MiB 量级,树莓派级硬件即可承载。
💡 技术拓展:自托管仪表盘的三种典型架构路线——
路线 代表 特点 代价 纯静态 SPA + YAML(Homer、Flame) Homer 无后端无数据库,最轻、免维护 智能卡受浏览器 CORS 限制,无服务端能力 服务端渲染 + 数据库(Heimdall) Heimdall GUI 配置,功能扩展走服务端 需要 PHP + 数据库,升级有迁移成本 服务端代理 + YAML(homepage、Dashy 部分能力) homepage 服务端代拉 API,天然绕 CORS,集成最多 常驻进程重,需维护更多运行状态 本文主角 Homer 属第一路线:把"轻"和"零维护"做到极致,代价是把跨域取数问题留给使用者(反代加头或同域部署)。
四、功能特性
对照官方 README 的 Highlights 逐项展开:
| 特性 | 说明 |
|---|---|
| 单文件 YAML 配置 | 所有页面、分组、卡片、主题、颜色集中在一份 config.yml,支持 YAML 锚点复用(官方 tips 收录) |
| 模糊搜索 | 内置 fuzzy search,keywords 字段可加隐藏关键词;快捷键 / 开始搜索、Esc 退出、Enter 打开首个结果、Alt+Enter 新标签打开 |
| 多页面 | 顶部链接 url: "#page2" 即加载 assets/page2.yml,以主配置为基底做字段覆盖,可无限扩展页面 |
| 智能卡 50+ | type 字段启用特定服务组件(customservices.md 列约 50 种):PiHole、Proxmox、Portainer、Uptime Kuma、Glances、OpenWeatherMap、qBittorrent、Immich、Seerr(v26.08.3 新增)等,展示状态点、徽标计数、RTT 等 |
| Ping 连通卡 | type: Ping 对任意 URL 发 HEAD/GET 探测并显示往返时延,可自定义成功状态码与超时 |
| 主题与样式定制 | 内置 default / walkxcode / neon 主题 + 社区主题(Catppuccin、Dracula 等);colors: 键或 CSS 变量逐色覆盖;stylesheet: 挂自定义 CSS;支持背景图 |
| 连通性检测 | connectivityCheck: true 周期性 HEAD 探测面板自身,VPN/隧道断开时给出提示;配合鉴权代理可在会话过期时自动重载页面 |
| 外部配置 | externalConfig: 指向远端 YAML URL,多实例共享同一份配置源 |
| 布局控制 | columns(1/2/3/4/6/12 或 auto)+ `layout: columns |
| PWA 安装 | 可安装为独立应用,图标与名称在 assets/icons、assets/manifest.json 中替换 |
| 消息横幅 | message: 支持固定文案、HTML 内容,或从任意 JSON 端点拉取并字段映射(官方示例接 chucknorris.io 新闻/笑话) |
⚠️ 注意:
config.yml会原样暴露在http://<你的面板>/assets/config.yml。写进配置的 API Key 对所有能访问面板的人可见——官方文档明确要求:要么给面板套鉴权,要么用代理(如官方推荐的 CORSair)在服务端注入凭据。
五、快速开始(官方最小示例)
以下三种启动方式均摘自官方 README(Get started 一节),是官方推荐形态;逐参数详解见配置篇,生产级 Compose 编排见部署篇。
方式一:Docker 单命令
# 先确保本地配置目录存在
mkdir -p /opt/homer/assets
docker run -d \
--name homer \
-p 8080:8080 \
--mount type=bind,source="/opt/homer/assets",target=/www/assets \
--restart=unless-stopped \
b4bz/homer:latest
容器默认以 uid/gid 1000 运行,需保证挂载目录属主匹配(chown -R 1000:1000 /opt/homer/assets);INIT_ASSETS=1(默认)时会在空目录里自动落一份示例配置。
方式二:docker-compose
services:
homer:
image: b4bz/homer
container_name: homer
volumes:
- /opt/homer/assets:/www/assets
ports:
- 8080:8080
user: 1000:1000
environment:
- INIT_ASSETS=1
restart: unless-stopped
方式三:静态包(无 Docker)
wget https://github.com/bastienwirtz/homer/releases/latest/download/homer.zip
unzip homer.zip -d homer
cd homer
cp assets/config.yml.dist assets/config.yml
python3 -m http.server 8010 # 或任意 Web 服务器托管
启动后访问 http://<服务器IP>:8080(或 8010),看到示例卡片即成功。三个官方环境变量补充:SUBFOLDER=/homer(子路径托管)、PORT(改内部监听端口,默认 8080)、IPV6_DISABLE=1(关闭 IPv6 监听)。
六、适用场景与限制
适合:
- 家庭实验室 / NAS 的统一入口页:服务几十上百个,用 YAML 集中管理书签 + 状态;
- 树莓派、小规格 VPS 等资源敏感环境:无后端进程,内存占用 MiB 级;
- 喜欢 "配置即代码" 的人:一块面板就是一个 git 仓库里的 YAML 文件,可评审、可回滚;
- 只读展示 + 快捷跳转为主的场景:搜索、书签、少量智能卡足够。
不适合 / 需要权衡:
- 需要面板自带登录鉴权:Homer 无鉴权,必须外置反代;
- 需要大量跨域实时状态:浏览器端直连 API 受 CORS 限制,服务多且域名杂时要么统一域名反代、要么逐服务开 CORS、要么上代理;
- 需要 GUI 点选式编辑:Homer 没有配置界面(官方 tips 建议外接 code-server 远程改 YAML);
- 凭据敏感:写进 config.yml 的 API Key 随文件暴露,须配合访问控制;
- 需要服务端聚合复杂指标(100+ 服务、widget 生态):那是 homepage/Dashy 的地盘。
七、同类选型对比
2026-11-02 GitHub API 实查 + 官方文档核对,四个主流仪表盘横向对比:
| 维度 | Homer | Heimdall | Dashy | homepage |
|---|---|---|---|---|
| 仓库 | bastienwirtz/homer | linuxserver/Heimdall | lissy93/dashy | gethomepage/homepage |
| Stars(实查) | 11,699 | 9,385 | 26,895 | 33,343 |
| Forks | 931 | 623 | 1,965 | 2,153 |
| Open issues | 170 | 5 | 15 | — |
| 主语言 / 运行时 | Vue(纯静态) | PHP (Laravel) | Vue + Node | JavaScript (Next.js) |
| 许可证 | Apache-2.0 | MIT | MIT | GPL-3.0 |
| 建仓时间 | 2018-06 | 2018-01 | 2021-02 | 2022-08 |
| 配置方式 | 单文件 YAML | Web GUI 点选 | YAML + UI 编辑器双轨 | 多 YAML(services/widgets/views) |
| 服务集成 | 约 50 种智能卡 | 依赖 PHP support 包 | 50+ 预置 widget | 100+ 服务 API 集成 |
| 取数架构 | 浏览器直连(受 CORS) | 服务端 | 浏览器直连为主 | 服务端代理(免 CORS,需挂 docker socket 发现) |
| 运行时重量 | 极轻(静态 + lighttpd) | 中(PHP + 数据库) | 重(Node 常驻) | 重(Next.js 服务端) |
| 自带鉴权 | 无 | 有(内置用户体系) | 有 | 无 |
版本节奏(官方 releases 实查):Homer 采用 CalVer(YY.MM.patch),近 15 个月发布 10 个 release(v25.05.2 → v26.08.3),小版本高频、无破坏性大版本,升级心智负担低。
社区评测口径佐证(来源见参考链接):Heimdall 胜在"零 YAML 纯 GUI",Homer 胜在"快、简、书签",homepage 面向 "power user + 100 服务集成";追求外观定制选 Dashy,追求简单链接页选 Heimdall/Flame。
选型建议(如果…则…):
- 如果你的服务都在同一域名/反代之后、只要一块轻量入口板 → Homer;
- 如果你完全不想碰 YAML、且需要内置登录 → Heimdall;
- 如果你要重度外观定制与 widget 交互、不介意 Node 运行时 → Dashy;
- 如果你要 docker label 自动发现 + 服务端聚合大量服务指标 → homepage(注意 GPL-3.0 与凭据落服务端配置文件)。
八、参考链接
- 官方仓库:https://github.com/bastienwirtz/homer
- 官方文档(配置/主题/智能卡/排障):https://github.com/bastienwirtz/homer/tree/main/docs
- Docker Hub:https://hub.docker.com/r/b4bz/homer
- 官方演示:https://homer-demo.netlify.app
- 智能卡清单:https://github.com/bastienwirtz/homer/blob/main/docs/customservices.md
- CORSair(官方推荐的 CORS/凭据代理):https://github.com/bastienwirtz/corsair
- Heimdall:https://github.com/linuxserver/Heimdall | Dashy:https://github.com/lissy93/dashy | homepage:https://github.com/gethomepage/homepage
- 对比文章:https://sumguy.com/heimdall-vs-homepage-vs-homer 、https://pistack.xyz/homer-vs-heimdall-vs-flame 、https://selfhosting.sh/best/dashboards (检索日期 2026-11-02)
- 同系列:《Homer Docker Compose 部署指南》、《Homer v26.08.3 配置参数详解》、《Homer 日常运维手册》