在自托管(Self-hosted)日益普及的今天,管理日益增多的服务——从媒体服务器如 Plex 和 Jellyfin,到智能家居系统 Home Assistant,或是网络工具如 Pi-hole——可能会让你的服务入口变得分散而混乱。记住每个服务的 IP 地址、端口号和各种 URL 既繁琐又低效。此时,一个集中式的仪表盘便能派上用场,提供一个统一、便捷的访问门户。在众多仪表盘解决方案中,Homer 以其独特的“极简主义”哲学脱颖而出。

Homer 是一个开源的静态仪表盘,旨在提供一个简洁、快速且高度可定制的界面,用于聚合你所有的服务和链接。它不依赖复杂的后端数据库,而是通过一个简单的 YAML 配置文件来驱动所有内容,使其成为资源受限设备(如树莓派)和追求极致稳定性的自托管爱好者的理想选择。

主要特性

  1. 极致的轻量化与高性能
    Homer 的核心优势在于其纯静态的架构。它是一个基于 Vue.js 构建的单页应用(SPA),不包含任何后端数据库或动态服务器端逻辑。这意味着:

    • 资源占用极低: 在 Docker 容器中运行时,Homer 的内存占用通常仅在 2MB 至 10MB 之间,CPU 几乎不消耗资源(闲置时接近 0%)。这使其成为在树莓派 Zero 或老旧硬件上运行的理想选择。
    • 部署与加载速度快: 官方 Docker 镜像体积小巧(约 15-25MB),部署迅速。由于所有内容都是静态文件,浏览器加载时仅需下载少量资源(压缩后的 JS/CSS 往往在几百 KB 级别),首屏加载时间通常在 200-500ms 内完成,后续访问几乎瞬时。
    • “设置即忘”的稳定性: 无数据库依赖意味着极少出现崩溃,更新也异常简单,只需替换静态文件或更新 Docker 镜像。
  2. YAML 驱动的配置
    Homer 的所有配置都集中在一个 config.yml 文件中。这种“代码即配置”的哲学对于技术用户而言是其魅力所在:

    • 优势: 方便通过 Git 进行版本控制、备份和多设备同步。熟悉基础设施即代码(IaC)的用户会发现这种方式高效且透明。
    • 挑战: 对于不熟悉代码编辑的用户,缺乏图形化界面(GUI)意味着需要手动编辑 YAML 文件,且对缩进和语法敏感,容易因格式错误导致页面无法加载。
  3. 高度可定制的界面
    Homer 提供了干净、现代且响应式的用户界面,默认支持暗黑模式。其定制化潜力主要体现在:

    • CSS 变量覆盖: 通过 custom.css 文件,用户可以轻松覆盖内置的 CSS 变量(如背景色、文字色、卡片背景色),实现全局主题切换。
    • 流行主题风格: 社区中涌现了大量第三方主题,如 Nord 风格(极地冰雪色调)、Dracula 主题(高对比度暗色)以及流行的 Glassmorphism(玻璃拟态)效果,极大地提升了视觉美感。
    • 图标管理: 虽然没有内置图标库搜索功能,但用户可以手动下载图标并放置在 /assets 目录或使用远程 URL,配合 Simple Icons 等矢量图标库,实现统一的视觉风格。
  4. 灵活的部署方式
    由于其静态特性,Homer 的部署方式非常灵活:

    • Docker: 最推荐和最常见的部署方式,只需一个 Docker 镜像和挂载的 config.yml 文件即可运行。
    • 静态 Web 服务器: 可以直接托管在任何 Web 服务器(如 Nginx, Apache, Caddy)上。
    • GitHub Pages/Netlify: 甚至可以直接部署到静态网站托管服务,实现零服务器成本。
  5. 服务状态与简单集成
    Homer 主要作为静态链接导航,但也支持一些基本的动态功能:

    • 服务状态检查: 可以配置对服务的 HTTP Ping 检查,显示其在线状态。
    • 有限的 API 集成: 通过 integration 字段,可以集成部分服务的 API,例如显示 Pi-hole 的拦截查询数、Proxmox 的虚拟机 CPU/内存使用率、Plex 的活跃用户数,甚至通过 OpenWeatherMap API 显示实时天气。

安装与快速入门

Homer 的安装通常通过 Docker 进行,非常简单。以下是一个使用 Docker Compose 的快速入门示例:

  1. 创建 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

  2. 创建 config.yml 文件:
    在与 docker-compose.yml 同级的 config 文件夹内创建 config.yml。这是 Homer 的核心配置文件。
    “`yaml
    # config/config.yml 示例

    title: “我的家庭实验室”
    subtitle: “所有服务一览”
    logo: “assets/icons/server.png” # 引用自定义图标

    header: true
    footer: true

    columns: 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 官方文档
  3. 启动 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)之后,并配合 AutheliaAuthentik 等单点登录(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/iconsassets/tools 目录下。更新图标后,可能需要强制刷新浏览器缓存(Ctrl + F5)。
  • Docker 权限问题: 如果 Docker 容器启动后无法读取挂载的 config.ymlassets 文件夹,报错 Permission denied,请检查 docker-compose.yml 中的 PUIDPGID 是否与宿主机的用户 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 无疑是你的理想选择。

它将你的所有服务和链接聚合在一个简洁、美观且易于维护的页面中,让你能够专注于享受自托管的乐趣,而不是被复杂的配置和高昂的资源消耗所困扰。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。