在自托管(Self-hosted)日益普及的今天,管理日益增多的服务——从媒体服务器如 Plex 和 Jellyfin,到智能家居系统 Home Assistant,或是网络工具如 Pi-hole——可能会让你的服务入口变得分散而混乱。记住每个服务的 IP 地址、端口号和各种 URL 既繁琐又低效。此时,一个集中式的仪表盘便能派上用场,提供一个统一、便捷的访问门户。在众多仪表盘解决方案中,Homer 以其独特的“极简主义”哲学脱颖而出。
Homer 是一个开源的静态仪表盘,旨在提供一个简洁、快速且高度可定制的界面,用于聚合你所有的服务和链接。它不依赖复杂的后端数据库,而是通过一个简单的 YAML 配置文件来驱动所有内容,使其成为资源受限设备(如树莓派)和追求极致稳定性的自托管爱好者的理想选择。
主要特性
-
极致的轻量化与高性能
Homer 的核心优势在于其纯静态的架构。它是一个基于 Vue.js 构建的单页应用(SPA),不包含任何后端数据库或动态服务器端逻辑。这意味着:- 资源占用极低: 在 Docker 容器中运行时,Homer 的内存占用通常仅在 2MB 至 10MB 之间,CPU 几乎不消耗资源(闲置时接近 0%)。这使其成为在树莓派 Zero 或老旧硬件上运行的理想选择。
- 部署与加载速度快: 官方 Docker 镜像体积小巧(约 15-25MB),部署迅速。由于所有内容都是静态文件,浏览器加载时仅需下载少量资源(压缩后的 JS/CSS 往往在几百 KB 级别),首屏加载时间通常在 200-500ms 内完成,后续访问几乎瞬时。
- “设置即忘”的稳定性: 无数据库依赖意味着极少出现崩溃,更新也异常简单,只需替换静态文件或更新 Docker 镜像。
-
YAML 驱动的配置
Homer 的所有配置都集中在一个config.yml文件中。这种“代码即配置”的哲学对于技术用户而言是其魅力所在:- 优势: 方便通过 Git 进行版本控制、备份和多设备同步。熟悉基础设施即代码(IaC)的用户会发现这种方式高效且透明。
- 挑战: 对于不熟悉代码编辑的用户,缺乏图形化界面(GUI)意味着需要手动编辑 YAML 文件,且对缩进和语法敏感,容易因格式错误导致页面无法加载。
-
高度可定制的界面
Homer 提供了干净、现代且响应式的用户界面,默认支持暗黑模式。其定制化潜力主要体现在:- CSS 变量覆盖: 通过
custom.css文件,用户可以轻松覆盖内置的 CSS 变量(如背景色、文字色、卡片背景色),实现全局主题切换。 - 流行主题风格: 社区中涌现了大量第三方主题,如 Nord 风格(极地冰雪色调)、Dracula 主题(高对比度暗色)以及流行的 Glassmorphism(玻璃拟态)效果,极大地提升了视觉美感。
- 图标管理: 虽然没有内置图标库搜索功能,但用户可以手动下载图标并放置在
/assets目录或使用远程 URL,配合 Simple Icons 等矢量图标库,实现统一的视觉风格。
- CSS 变量覆盖: 通过
-
灵活的部署方式
由于其静态特性,Homer 的部署方式非常灵活:- Docker: 最推荐和最常见的部署方式,只需一个 Docker 镜像和挂载的
config.yml文件即可运行。 - 静态 Web 服务器: 可以直接托管在任何 Web 服务器(如 Nginx, Apache, Caddy)上。
- GitHub Pages/Netlify: 甚至可以直接部署到静态网站托管服务,实现零服务器成本。
- Docker: 最推荐和最常见的部署方式,只需一个 Docker 镜像和挂载的
-
服务状态与简单集成
Homer 主要作为静态链接导航,但也支持一些基本的动态功能:- 服务状态检查: 可以配置对服务的 HTTP Ping 检查,显示其在线状态。
- 有限的 API 集成: 通过
integration字段,可以集成部分服务的 API,例如显示 Pi-hole 的拦截查询数、Proxmox 的虚拟机 CPU/内存使用率、Plex 的活跃用户数,甚至通过 OpenWeatherMap API 显示实时天气。
安装与快速入门
Homer 的安装通常通过 Docker 进行,非常简单。以下是一个使用 Docker Compose 的快速入门示例:
-
创建
docker-compose.yml文件:
yaml
version: "3.3"
services:
homer:
image: ghcr.io/bastienwirtz/homer:latest
container_name: homer
volumes:
- ./config:/app/www/assets/config # 配置文件目录
- ./icons:/app/www/assets/icons # 可选:用于自定义图标
- ./custom.css:/app/www/assets/custom.css # 可选:用于自定义CSS
ports:
- 8080:8080 # 将容器的8080端口映射到宿主机的8080端口
environment:
- PUID=1000 # 确保容器有权限读取挂载的卷,请根据宿主机实际用户ID调整
- PGID=1000 # 请根据宿主机实际组ID调整
restart: unless-stopped -
创建
config.yml文件:
在与docker-compose.yml同级的config文件夹内创建config.yml。这是 Homer 的核心配置文件。
“`yaml
# config/config.yml 示例
—
title: “我的家庭实验室”
subtitle: “所有服务一览”
logo: “assets/icons/server.png” # 引用自定义图标header: true
footer: truecolumns: 3 # 桌面端显示3列
links:
– name: “GitHub”
icon: “fab fa-github”
url: “https://github.com/bastienwirtz/homer”
target: “_blank” # 在新标签页打开services:
– name: “网络服务”
icon: “fas fa-network-wired”
items:
– name: “路由器”
logo: “assets/icons/router.png”
url: “http://192.168.1.1”
target: “_blank”
– name: “Pi-hole”
logo: “assets/icons/pihole.png”
url: “http://192.168.1.2/admin”
target: “_blank”
# 集成 Pi-hole API 示例,需替换为你的API Key
# integration:
# type: “pihole”
# url: “http://192.168.1.2/admin/api.php”
# key: “YOUR_PIHOLE_API_KEY”- name: “媒体中心”
icon: “fas fa-film”
items:- name: “Plex”
logo: “assets/icons/plex.png”
url: “http://192.168.1.3:32400/web”
target: “_blank” - name: “Jellyfin”
logo: “assets/icons/jellyfin.png”
url: “http://192.168.1.4:8096”
target: “_blank”
“`
更多配置选项请参考 Homer 官方文档。
- name: “Plex”
- name: “媒体中心”
-
启动 Homer:
在docker-compose.yml所在的目录下运行docker compose up -d。
然后通过浏览器访问http://localhost:8080即可看到你的仪表盘。
进阶用法与个性化
Homer 的简洁性为高级用户提供了巨大的定制空间:
- 深度自定义 CSS 与主题:
通过挂载custom.css文件,你可以完全掌控 Homer 的视觉风格。利用 CSS 变量(如--bg-color,--card-background),可以轻松实现全局换色。更进一步,你可以添加backdrop-filter: blur(10px);实现玻璃拟态(Glassmorphism)效果,或通过 CSS 引入 Unsplash API 实现每日动态背景图。 - 动态服务集成:
除了 Pi-hole,Homer 还可以通过integration字段与更多服务进行有限的 API 交互,例如显示 Transmission/Deluge 的下载速度、Proxmox 虚拟机的状态,甚至利用 OpenWeatherMap API 在仪表盘上展示实时天气。 - 自动化配置生成:
对于拥有大量 Docker 容器的用户,社区中存在第三方脚本(通常基于 Python),可以扫描 Docker 容器的标签(Labels),并自动生成 Homer 的config.yml配置片段,实现“部署新容器即自动上线仪表盘”的自动化流程。 - 安全与访问控制:
Homer 本身不提供内置的身份验证机制。为了保护你的仪表盘,强烈建议将其置于反向代理(如 Nginx Proxy Manager, Traefik)之后,并配合 Authelia 或 Authentik 等单点登录(SSO)解决方案,或使用反向代理的 Basic Auth。
典型应用场景
Homer 的灵活性使其适用于多种场景:
- 家庭实验室的统一入口: 为家庭成员提供一个简洁的门户,链接到 Plex、Jellyfin、Home Assistant、共享日历、打印机管理后台等,隐藏复杂的端口和 IP 地址。
- 低功耗设备的应急仪表盘: 将 Homer 部署在树莓派 Zero 或旧手机上,作为主服务器下线时的“应急手册”,显示路由器管理地址、UPS 监控状态或重要文档链接。
- 小微企业的内部导航: 作为轻量级的内网门户,链接到内部文档(Wiki.js)、协作工具(Mattermost)、共享存储等,替代昂贵的企业级解决方案。
- 项目工作流管理: 按照项目(如 3D 打印、媒体创作)而非软件类型来组织链接,将所有相关工具(OctoPrint、Cura、Thingiverse)整合在一个分组下,提高工作效率。
- 专用硬件的 Kiosk 模式: 将旧平板电脑全屏运行 Homer,作为智能家居的物理快捷键面板,或显示天气预报、家庭待办事项的电子告示板。
Homer 与竞品对比
在自托管仪表盘领域,Homer 并非唯一的选择。以下是它与一些主要竞品的对比:
-
Homer:
- 架构: 纯静态单页应用 (Vue.js),无后端数据库。
- 配置: YAML 声明式配置,无 GUI。
- 资源占用: 极低 (2-10MB RAM),启动快。
- 功能: 主要是静态链接导航,支持基本状态检查和有限 API 集成。
- 优势: 极致轻量、稳定、易于备份和版本控制,适合低功耗设备。
- 适用人群: 熟悉 YAML、追求极简主义、硬件资源有限的技术用户。
-
Heimdall:
- 架构: 基于 PHP 框架 (Laravel),需要 Web 服务器和 SQLite 数据库。
- 配置: 提供图形化界面 (GUI) 进行所有配置。
- 资源占用: 中等,高于 Homer。
- 功能: 拥有“增强型应用”功能,可在图标上显示实时数据(如 Plex 观看人数)。
- 优势: 开箱即用,对非技术用户友好,无需手动编辑配置文件。
-
Dashy:
- 架构: 也可静态部署,但功能极其丰富,通常带有复杂后端。
- 配置: 提供复杂的在线编辑器,也支持 YAML,但结构比 Homer 复杂得多。
- 资源占用: 较高 (50-200MB+ RAM),镜像体积大。
- 功能: 功能极其强大,支持大量小部件(Widgets),可显示 CPU 负载、天气、RSS 订阅等动态信息。
- 优势: 极致的定制化和功能深度,适合需要全面监控和丰富交互的用户。
-
Organizr:
- 架构: 完整的 PHP 应用程序,侧重于服务器端处理。
- 配置: 依赖复杂的后台管理面板。
- 资源占用: 较高。
- 功能: 核心是“标签页集成”,通过 iframe 将其他应用嵌入到同一界面,支持多用户管理和权限控制。
- 优势: 适合需要构建多用户门户和统一管理多个应用的场景。
社区支持与常见问题
Homer 拥有一个活跃的社区,主要集中在 GitHub Discussions 和 Reddit 的 r/selfhosted 社区。以下是一些常见的用户反馈和问题:
- YAML 语法错误: 这是新手最常遇到的问题。YAML 对缩进(使用空格而非 Tab)和特殊字符(如冒号
:)非常敏感。建议在保存配置前使用 YAML Lint 或 VS Code 的 YAML 插件进行校验。 - 图标与资产加载失败: 确保
config.yml中引用的图标路径正确,且图标文件已放置在 Docker 容器挂载的assets/icons或assets/tools目录下。更新图标后,可能需要强制刷新浏览器缓存(Ctrl + F5)。 - Docker 权限问题: 如果 Docker 容器启动后无法读取挂载的
config.yml或assets文件夹,报错Permission denied,请检查docker-compose.yml中的PUID和PGID是否与宿主机的用户 ID 和组 ID 匹配。 - 反向代理与子路径部署: 当通过反向代理将 Homer 部署在子路径(如
example.com/homer)时,可能会出现静态资源(JS/CSS)加载失败。这通常需要反向代理(如 Nginx Proxy Manager, Traefik)进行正确的rewrite配置,以确保 Base URL 正确。 - 缺乏自动发现功能: 与某些竞品不同,Homer 不支持自动扫描 Docker 容器并添加图标。这被视为 Homer 的“特性”而非“缺点”,旨在保持极致的轻量和无数据库状态。高级用户可以通过自定义脚本实现自动化。
- 安全性: Homer 本身不提供内置的身份验证功能。为了保护你的仪表盘,务必在前端部署 Authelia、Authentik 或利用反向代理的 Basic Auth。
专家提示:
* 在修改 config.yml 前,始终保留一个 config.yml.bak 备份。
* 访问 GitHub 上的 Homer Theme 讨论帖 或 homer-icons 相关项目,获取大量为 Homer 优化的矢量图标和自定义 CSS 片段。
* 对于图标库,推荐使用 Simple Icons,其风格与 Homer 的极简设计最为契合。
总结
Homer 是自托管爱好者的极简主义宣言。它不是功能最全面的仪表盘,但它以其极致的轻量化、卓越的稳定性、闪电般的响应速度以及高度的定制潜力,在众多竞品中独树一帜。如果你是一位拥有一定技术基础、追求系统稳定性、偏爱通过代码而非鼠标点击来管理导航页的用户,并且希望在树莓派等低功耗设备上运行一个高效的仪表盘,那么 Homer 无疑是你的理想选择。
它将你的所有服务和链接聚合在一个简洁、美观且易于维护的页面中,让你能够专注于享受自托管的乐趣,而不是被复杂的配置和高昂的资源消耗所困扰。

评论(0)