2026 年用 Homer / Dashy 做 Homelab 导航页:小机聚合所有自托管服务

服务一多浏览器就乱?这篇用大白话对比两款最火的导航页 Homer 与 Dashy:一个极简静态 YAML,一个功能拉满带状态监控和小部件。给你 Docker 部署、YAML 配置示例,以及图标、认证、内网暴露这些中文圈常漏的坑,帮小机玩家用一个美观首页统管所有自托管服务。

延伸阅读

更多相关攻略推荐:【10刀以内VPS系列 01】年付不到70块钱的便宜VPS,到底能用什么时候非得要独立 IPv4?便宜国外 VPS 独立 IP 适用场景告别繁琐密码:OAuth 2.0、SSO 单点登录与 Passkey2026 实测:VPS 上自托管 AI 编程助手——Continue【知识库自托管 02】2026 实测:VPS 自托管 Anythin

为什么需要一个 Homelab 导航页

当你在 VPS 上陆续装了 Home Assistant、Jellyfin、Nextcloud、qBittorrent、Uptime Kuma、Code Server 之后,浏览器收藏夹基本就失控了。每次想打开某个服务,都要去翻 IP 加端口,根本记不住 8123、8096、8443 到底对应哪个应用。导航页(start page / dashboard)就是给所有自托管服务做一个统一入口:一个美观的静态页面,把你所有的服务、链接、书签排成卡片,点一下就跳过去。

这类"启动页"在 2026 年依然是自托管圈最火的项目之一,因为上手门槛低、分享性强,而且一台便宜小机就能跑。下面我们对比两款被提到最多的:Homer 和 Dashy。它们都是免费开源、用 Docker 一行就能起来,区别主要在"轻"和"全"之间。

Homer 是什么:极简静态 YAML

Homer 的定位非常克制——官方原话是"给服务器用的极简静态首页"。它没有后台数据库,没有实时轮询,所有内容都写在一个 config.yml 里。整个镜像只有十来 MB,启动以毫秒计,放在树莓派或者最低配的 VPS 上都毫无压力。目前 GitHub 上约 1.1 万 star,是很多人的入门首选。

它的核心能力是:服务卡片分组、顶部导航链接、书签、模糊搜索、可装成 PWA 到手机主屏、主题切换,以及一组"智能卡片"(比如直接显示 Pi-hole 的统计、Ping 主机存活)。它适合只想有个干净入口、不想折腾的人。你写完配置,刷新页面就生效,没有花里胡哨的东西。

需要提醒的是,Homer 本身不带登录功能。它假设你是跑在内网、或者用反向代理做了认证。如果你要把它放到公网,后面必须套一层带密码的反代,这点我们后面专门讲。

顺带说几个实用小点:Homer 支持自定义刷新间隔(updateIntervalMs),开启后所有实现了刷新的智能卡片会定期拉数据;它也内置了一套浅色/深色配色,直接在 config.yml 的 colors 段里改十六进制值就能换肤。社区还有 Catppuccin、Dracula 等现成主题可以直接套,嫌默认蓝不好看的人有福了。多页面也很简单,links 里加一个 url 指向 #page2 的条目,再放一份 page2.yml 即可,适合把"工作"和"家庭"服务分开。

Dashy 是什么:功能拉满的面板

Dashy 走的是另外一个极端:功能极其丰富。它用 Vue 构建,目前 GitHub 约 2.4 万 star,是导航页里最"能打"的一个。除了链接聚合,它还内置状态检测(HTTP 状态码 + ICMP ping)、几十种小部件(天气、时钟、系统资源、RSS 订阅)、几十套主题、图标包、键盘快捷键,以及一个可视化编辑器——可以鼠标拖拽添加卡片,几乎不用手改配置文件。

Dashy 还支持多页面布局,适合服务特别多、需要分门别类的人。代价是资源占用更大、镜像也更重,配置项多到初见会有点懵。个人经验是:先别被文档吓到,先用编辑器把卡片加好,再回去看 conf.yml,你会理解得快很多。它同样免费开源(MIT),隐私取向,不偷传数据。

编辑器是 Dashy 最大的卖点:打开网页点"Edit"就能加分区、加卡片、改图标,所见即所得,改完导出 conf.yml 就能版本化管理。你甚至可以把它当成一个不需要写代码的入门方式——家里不太懂技术的人也能帮忙整理服务清单。另外它的搜索框、键盘快捷键(按 / 聚焦搜索)在服务项目多的时候特别顺手,比 Homer 的模糊搜索更跟手。缺点是 Vue 3 迁移进行中,偶尔个别小部件会有小毛病,但主体功能很稳。

Docker 部署:谁更省事

Homer 的部署就几行,端口默认 8080:

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

关键点是把本地配置目录挂到 /www/assets,容器默认用 uid/gid 1000 写文件,所以你的目录要对该用户可写,否则示例配置装不进去(日志会报权限错)。第一次跑完,去 /opt/homer/assets 里就能看到自动生成的 config.yml,直接改它。

Dashy 也简单,内部端口是 8080,习惯映射到 4000:

services: dashy: image: lissy93/dashy:latest container_name: dashy volumes: - /opt/dashy/user-data:/app/user-data ports: - 4000:8080 restart: always

Dashy 要求挂载的 user-data 目录里至少有 conf.yml,否则起来是空配置。官方说 1GB 内存和 1GB 磁盘一般就够,树莓派 3 都能跑。无论选哪个,像 RackNerdCloudConeHostDare 这种一两年付几十块的高内存小机都绰绰有余,完全用不满。

两个项目都支持几个有用的环境变量。Homer 有 SUBFOLDER(部署在 /homer 这类子路径时用)、PORT(改内部端口)、IPV6_DISABLE(设 1 关掉 IPv6 监听)。Dashy 多架构镜像同时支持 amd64 和 arm64,在 ARM 小机(比如很多低价 VPS 其实是 ARM)上也能直接跑,不用自己编译。提醒一句:32 位 arm/v7 镜像官方已经弃用,老设备要注意。

YAML 配置示例

Homer 的 config.yml 长这样(节选):

title: "我的导航" subtitle: "Homelab" logo: "assets/logo.png" columns: "3" connectivityCheck: true message: style: "is-warning" title: "注意" content: "内网服务,勿外传" services: - name: "媒体" icon: "fas fa-film" items: - name: "Jellyfin" logo: "assets/tools/jellyfin.png" subtitle: "影音库" url: "http://192.168.1.20:8096" target: "_blank" - name: "qBittorrent" subtitle: "下载" url: "http://192.168.1.20:8080" - name: "监控" icon: "fas fa-heartbeat" items: - name: "Uptime Kuma" subtitle: "状态页" url: "http://192.168.1.20:3001"

注意 services 是一个数组,每个元素是一个分组,分组下有 items。想加状态卡片就给 item 加 type 字段,比如 type: PiHole 会去拉统计。顶部的 message 可以放公告,connectivityCheck 会在 VPN 断连时提示。

Dashy 的 conf.yml 结构类似,但多了 widgets 和全局 appConfig:

appConfig: statusCheck: true pingCheck: true statusCheckInterval: 60 theme: "onedark" pages: - name: Main widgets: - type: clock sections: - name: 媒体 icon: fas fa-film items: - title: Jellyfin icon: favicon url: http://192.168.1.20:8096 - title: qBittorrent icon: favicon url: http://192.168.1.20:8080

这里 statusCheck: true 是全局开启状态检测,pingCheck 是 ICMP 主机探测,两者可以并存,悬停卡片能看到响应时间和状态码。widgets 还能塞时钟、天气这类小部件。

状态检测、图标与认证

状态检测:Homer 自带的是"连通性检查"(connectivityCheck),主要用来在 VPN 断开时弹提示;真正按服务存活做"智能卡片"需要给 item 配 type(比如 PiHole、Ping)。Dashy 则是开箱即用的 statusCheck / pingCheck,悬停卡片就能看到响应时间和状态码,非常直观,不用额外装监控就能知道哪个服务挂了。

图标:两者都支持 Font Awesome、Simple Icons 和本地图片。Dashy 还能自动抓 favicon、用 emoji、甚至 dashboard-icons 项目的 logo。建议直接用 selfh.st/icons 的 CDN 链接填到 icon 里,省去自己存图。Homer 可以把 logo 图片丢进 assets/tools 目录再引用。

认证:这是最容易踩坑的地方。Homer 本身没有登录功能,必须放在反向代理后面(Caddy/Nginx)加 basic auth,或者配合 Authelia / Authentik 做统一登录。Dashy 自带基础认证——在 appConfig.auth 里放用户名 + SHA-256 密码哈希即可,也支持 Keycloak 这类 SSO,适合想一步到位的人。

安全避坑:内网暴露与 SSO

第一坑:别把导航页裸奔到公网。导航页等于你所有服务的"地图",一旦被扫到,攻击者就拿到你全部内网入口和端口。要么只走 VPN / 隧道访问,要么前面套一层带认证的反代再暴露。

第二坑:SSO 别用默认密码。Dashy 的基础认证哈希必须自己生成,千万别复制文档里的示例 hash。用 openssl passwd -5 或专门工具算一个 SHA-256,再填进 conf.yml。明文密码永远不要写进配置文件。

第三坑:ICMP ping 在 Docker 内需要给权限(pingman 包),而且 localhost 的 ping 对 pingman 无效,测本机别被骗。还有,连接外部图标 CDN 在完全离线的环境会加载失败,记得自托管图标或者用本地图片。最后,反向代理开了 HTTPS 后,导航页里的服务地址最好也统一成内网域名,避免混着 http 被浏览器拦。

到底选哪个

一句话总结:机器弱、想极简、只要个入口 → Homer;服务多、要状态监控和小部件、愿意折腾 → Dashy。新手建议先用 Homer 跑起来,体会一下"写个 YAML 就有首页"的爽感;等服务涨到二三十个、开始想要状态灯和小部件了,再换 Dashy 也不迟。反正面板配置都是纯文本 YAML,迁移成本几乎为零,你甚至可以两套都跑、用链接互跳。

如果你正打算新开一台机器专门放这些自托管服务,挑一台内存宽裕的小机最省心。RackNerdCloudConeHostDare 这类低价高内存机型,跑 Homer 或 Dashy 都是杀鸡用牛刀,剩下的内存还能顺手再塞几个容器。

最后给个落地建议:先把所有服务地址列成清单,再决定用哪款。服务少于十个、纯内网用,Homer 五分钟搞定;服务跨多个分类、还想看状态灯和天气,直接上 Dashy。别在"选型"上耗太久,真正值钱的是你把所有入口收拢到一处的那一刻——从此告别收藏夹地狱。