Glance v0.8.7 介绍与选型指南
梳理 Glance v0.8.7 定位、单二进制零数据库架构、28 类 widget 聚合体系与 AGPL 许可现状,给出与 Dashy/homepage/Homarr/Heimdall 的量化选型对比,全文联网溯源(2026-10-25)。
Glance v0.8.7 介绍与选型指南
目标:面向正在为自托管环境挑选「仪表盘/起始页」的工程师,梳理 Glance v0.8.7 的产品定位、核心架构、widget 聚合体系与许可现状,并给出与 Dashy、homepage、Homarr、Heimdall 的量化选型对比。本文为 A1 认知篇(联网溯源),全部事实性内容均于 2026-10-25 从官方渠道(GitHub 仓库 glanceapp/glance、官方 configuration.md 配置文档、releases.atom 订阅源、shields.io 徽章)实查取得并标注来源;部署、配置与命令的实测内容见本专栏后续各篇。
一、环境信息
本文为 A1 认知篇(联网溯源),写作时不依赖本地环境,所有版本、星数、许可与功能口径均于 2026-10-25 从下列官方渠道实查:
| 信息项 | 取值 | 来源 |
|---|---|---|
| 最新稳定版本 | v0.8.7(2026-10-15 发布) | GitHub Releases(releases.atom 订阅源) |
| 开源许可证 | AGPL-3.0 | shields.io github/license 徽章,查询日期 2026-10-25 |
| 社区规模(GitHub Stars) | 约 38k | shields.io github/stars 徽章,查询日期 2026-10-25 |
| Open Issues | 225(查询时点) | shields.io github/issues 徽章,查询日期 2026-10-25 |
| Docker Hub 拉取量 | 约 9.6M | shields.io docker/pulls 徽章(镜像 glanceapp/glance),查询日期 2026-10-25 |
| 最近一次代码提交 | 查询时点前数日(徽章显示 last tuesday) | shields.io github/last-commit 徽章,查询日期 2026-10-25 |
| 技术栈 | Go 单二进制 + 极简原生 JS(项目明确约定「No package.json」,不引入 Node 构建链) | GitHub README 与 Contributing guidelines |
| 二进制体积 | 单文件 <20MB(官方 README 口径;v0.8.7 linux-amd64 实包 6.37MB 压缩包、解压后约 15MB) | GitHub README + Releases 资产实查 |
| 默认监听端口 | 8080(server.port 默认值) | 官方 configuration.md Server 节 |
| 配置方式 | 单份 YAML(glance.yml),支持 $include 拆分与 ${ENV_VAR} 注入 | 官方 configuration.md「The config file」节 |
| 官方镜像 | glanceapp/glance(Docker Hub),标签含 v0.8.7 精确版本与 latest | Docker Hub 仓库页 |
💡 说明:Glance 采用 0.x 版本号体系(当前 v0.8.7),主版本尚未到 1.0,跨小版本偶有配置项废弃(如 legacy 日历 widget 已标记 deprecated);升级前须逐版阅读 Release Notes。本文版本口径截至 2026-10-25。
二、软件概述
2.1 定位与身份
Glance 的官方自我定位只有一句话:「一个轻量、高度可定制的仪表盘,把你的信息流放进美观、精炼的界面」(A lightweight, highly customizable dashboard that displays your feeds in a beautiful, streamlined interface,来源:GitHub README,查询日期 2026-10-25)。它解决的核心痛点是:自托管玩家手上散落着 RSS 订阅、天气预报、股票行情、监控面板、服务健康状态等十几个信息源,每类都要单独开网页看——Glance 把这些「信息流」聚合到一张可分页、可分栏的起始页上,浏览器主页一开,全部信息尽收眼底。
一句话理解它的产品逻辑:在「纯链接收藏页」和「重型可视化平台」之间,Glance 选择做「服务端聚合的信息流仪表盘」——单个 Go 二进制、零数据库依赖、一份 YAML 描述全部页面与 widget,数据在服务端抓取并缓存,浏览器拿到的是渲染好的 HTML(极少量原生 JS 负责交互)。
💡 技术拓展:自托管场景的「仪表盘/起始页」业界主要有三种形态,选型前应先分清——
形态 代表产品 原理 适用场景 服务端聚合信息流仪表盘 Glance、homepage 服务端定时抓取 RSS/行情/监控等数据源,渲染成 HTML 返回 想一眼看到「内容」而不只是「入口」 链接导航 + 小组件面板 Dashy、Heimdall 以应用快捷入口为主,辅以少量动态小组件 以「快速跳转到各应用」为主要诉求 动态 Web 应用平台 Homarr 前端 SPA + 后端 API,拖拽编辑、在线管理 喜欢图形化编辑、多用户协作管理面板 Glance 属于第一种,同时通过 bookmarks widget 覆盖第二种的核心能力、通过
custom-api/extensionwidget 提供第三种的扩展通道。
2.2 版本与许可
- 当前稳定版:v0.8.7,2026-10-15 发布(来源:GitHub Releases / releases.atom,查询日期 2026-10-25)。
- 许可证:AGPL-3.0。对「拿 Glance 改造后对外提供托管服务」的商用场景有传染性约束(修改版含通过网络提供服务须开源),个人自托管与内部使用不受影响。
- 治理与社区:个人主导的开源项目(作者 svilenmarkov,仓库组织 glanceapp),配套 Discord 社区、独立
glanceapp/community-widgets社区 widget 仓库、glanceapp/docker-compose-template官方编排模板仓库与glanceapp/agent远程监控代理仓库(来源:README 链接区,查询日期 2026-10-25)。 - 文档形态:无独立文档站,配置文档以仓库
docs/configuration.md(约 3000 行)为权威,另有docs/themes.md(主题集)与docs/preconfigured-pages.md(预配置页面集);社区还维护着一份第三方 JSON Schema(not-first/glance-schema)供 IDE 补全校验(来源:configuration.md「Config schema」节)。
2.3 版本节奏(量化)
近期发布记录(来源:GitHub releases.atom,查询日期 2026-10-25,时间为 feed updated 字段):
| 版本 | 发布/更新时间 | 备注 |
|---|---|---|
| v0.8.7 | 2026-10-15 | 当前最新稳定版 |
| v0.8.6 | 2026-09-03 | 上一个稳定版 |
| v0.8.5 | 2026-05-30 | |
| v0.8.4 | 2025-06-10 | |
| v0.8.0 | 2025-04-22 | |
| v0.7.13 | 2025-04-14 | v0.7 线最后一版 |
节奏特征:v0.8.x 线自 2025-04 启动后保持约 28 个月一个稳定版的慢节奏,v0.8.5 → v0.8.6 → v0.8.7(2026-05 至 2026-10)进入约 13 个月一版的活跃区间,仓库持续有提交(last-commit 徽章显示查询时点前数日仍有新提交)。对生产使用者的含义是:功能演进稳健但不算快,重大变更多集中在 widget 新增与配置项微调,适合「配好就用、少折腾」的场景。
三、核心架构
3.1 运行时构成
Glance 是单进程单二进制架构(Go 编写),运行时只有它自己,没有数据库、没有消息队列、没有 Node 前端构建产物:
| 组成 | 职责 | 说明 |
|---|---|---|
| HTTP 服务 | 同端口(默认 8080)提供仪表盘页面与全部静态资源 | server.host/server.port 可配,默认监听所有接口 |
| 数据抓取器 | 各 widget 按需抓取外部数据源(RSS/YouTube/Twitch/行情 API 等) | 仅在页面被加载时请求,之后命中缓存;官方 FAQ 明确「后台不做周期性轮询」 |
| 内存缓存 | 每个 widget 的 cache 属性控制数据驻留时长(如 30s/5m/12h/1d) | 重载配置会清空缓存 |
| 配置加载器 | 解析 glance.yml,支持 $include 拆分文件、${ENV_VAR} 环境变量、${secret:xxx} Docker secrets、${readFileFromEnv:xxx} 文件注入 | 配置文件保存自动热重载,无需重启 |
| 认证模块 | 内置用户名/密码登录、bcrypt 哈希口令、5 分钟内失败 5 次自动封禁来源 IP | 可选功能,默认关闭 |
💡 技术拓展:Glance 的「零持久化」是有意的设计取舍。同类仪表盘的持久化形态对比——
形态 原理 代价 无持久化 + 内存缓存(Glance 默认) 配置即状态,数据按 widget 缓存期内存驻留 重启即冷启动;to-do 等用户数据落浏览器 localStorage SQLite/文件存储(Homarr、Heimdall 等) 面板布局、用户、应用列表落库 需要挂载数据卷、考虑备份迁移 服务端多用户体系 注册/角色/权限落库 部署复杂度显著上升 Glance 默认形态下唯一「有状态」的是配置文件本身,把
glance.yml纳入版本控制即完成备份;多 todo 列表用 widgetid区分,数据存在各浏览器本地。
3.2 数据流与渲染链路
Glance 的页面生成完全发生在服务端,浏览器拿到的是渲染完成的 HTML:
浏览器请求 http://server:8080/
│
↓
Glance 服务端解析 glance.yml($include / ${ENV_VAR} 已展开)
│
↓
逐 widget 检查内存缓存:命中 → 直接用;未命中 → 抓取外部数据源
(RSS 源 / open-meteo 天气 / Yahoo Finance 行情 / Hacker News / Twitch GQL / GitHub API …)
│
↓
Go html/template 渲染各 widget 片段 → 拼装整页 HTML(含主题 CSS)
│
↓
浏览器渲染(少量原生 JS 负责 tab 切换、SHOW MORE、时钟跳动等交互)
关键设计点:
- 按需抓取 + 页面刷新更新:官方 FAQ 明确「页面信息不会自动更新,刷新页面才会更新;除时钟等个别动态元素外无后台轮询」。这让它对数据源极其友好(不会像一个后台轮询监控器那样打爆第三方 API),代价是它不是实时监控面板。
- widget 级缓存:
cache: 12h这类属性按 widget 独立生效,日历与天气两个 widget 固定整点更新不可改缓存。 - 热重载:改
glance.yml保存即生效;启动时配置非法会直接报错退出,运行中改坏则控制台报错并继续用旧配置运行。 - 三类自定义数据通道:
custom-api(抓 JSON 用 Go 模板渲染)、extension(第三方托管 widget,HTTP 拉取渲染)、iframe/html(直接嵌入)。这使它理论上能接任何有 API 的系统。
3.3 部署形态
官方支持的部署形态(来源:GitHub README Installation 节,查询日期 2026-10-25):
| 形态 | 适用场景 | 说明 |
|---|---|---|
| Docker Compose + 官方目录模板(推荐) | 服务器部署首选 | glanceapp/docker-compose-template 一键铺出 docker-compose.yml + config/glance.yml + .env + assets/user.css 目录结构 |
| Docker Compose 手写 | 想精简控制 | README 给出 8 行最小编排:挂载 ./config:/app/config、映射 8080 |
| 裸二进制 + systemd | 无容器环境 | GitHub Releases 提供 Linux/Windows/macOS(x86/x86_64/ARM/ARM64)二进制,README 建议放 /opt/glance/ 用 systemd 托管,--config 指定配置路径 |
| 第三方渠道 | 各生态用户 | Proxmox VE Helper Script、NixOS package、Coolify、Hostinger |
四、功能特性
4.1 widget 体系(28 类)
全部 widget 由 type 字段声明(来源:官方 configuration.md,查询日期 2026-10-25),按用途分组如下:
| 用途分组 | widget 类型 |
|---|---|
| 资讯聚合 | rss(4 种样式)、hacker-news、lobsters、reddit、videos(YouTube 频道/播放列表)、twitch-channels、twitch-top-games |
| 信息速览 | clock(多时区)、calendar、weather(open-meteo 数据)、markets(Yahoo Finance 行情 + 21 日走势)、releases(GitHub/GitLab/Codeberg/Docker Hub 发版追踪)、change-detection(网页变更监控) |
| 运维监控 | monitor(站点可达性 + 响应耗时)、docker-containers(读 docker.sock 显示容器状态)、server-stats(本机/远程 CPU、内存、磁盘、温度)、dns-stats(AdGuard Home/Pi-hole/Technitium 拦截统计)、repository(仓库 PR/Issue/Commit 概览) |
| 导航与效率 | bookmarks(分组链接)、search(聚合搜索框 + Bangs 快捷词)、to-do(浏览器本地存储待办) |
| 布局与扩展 | group(多 widget 转 tab)、split-column(全宽栏内再分栏,最多 5 列)、custom-api、extension、iframe、html |
所有 widget 共享 5 个属性:type(必填)、title、title-url、hide-header、cache、css-class;widget 加载失败会在标题旁显示红点提示。布局层用 pages(多页签)→ columns(每页最多 3 列,small 固定 300px + full 弹性,必须 1~2 个 full)→ widgets 三级结构组织。
4.2 主题与外观
- 主题用 HSL 色值定义(背景/主色/正向色/负向色/对比度乘数/饱和度乘数),内置多套预设主题可一键切换,页面右上角自带主题选择器(可用
disable-picker禁用);支持presets自定义预设、custom-css-file注入自定义 CSS(每个 widget 自带widget-type-<name>类便于精确定位)(来源:configuration.md Theme 节)。 - 品牌可换:logo、favicon、应用名、页脚均可通过
branding属性覆盖。 - 移动端优化是官方卖点之一(专用 mobile header、栏位自动折叠为单列)。
4.3 认证与安全
- 内置认证:顶层
auth配置声明用户名/密码;密码支持 bcrypt 哈希落盘(password:hash命令生成);会话用随机 secret-key 签名(secret:make命令生成)。 - 防爆破:5 分钟内连续失败 5 次自动封禁来源 IP;反代场景须设
server.proxied: true以从X-Forwarded-For取真实 IP。 - 默认无认证:不配
auth时仪表盘对能访问到端口的所有人开放,内网直用、公网部署必须配置。
4.4 运维特性
- 配置即运维:
config:validate校验配置、config:print展开全部 include 输出最终生效配置、diagnose一键体检(版本、Go 版本、平台、各数据源连通性)。 - 密码与密钥工具:
password:hash、secret:make内置。 - 传感器与挂载点:
sensors:print列出可用温度传感器(供 server-stats 的cpu-temp-sensor用)、mountpoint:info查看挂载点信息。 - 远程监控代理:跨机
server-stats需在被监控机上跑glanceapp/agent(官方仓库,开发中)。
五、快速开始(最小可用示例)
以下为官方 README「Docker compose manual」给出的最小路径(来源:GitHub README,查询日期 2026-10-25;逐条实测与完整部署流程见本专栏部署篇):
第 1 步:编写 docker-compose.yml:
services:
glance:
container_name: glance
image: glanceapp/glance
restart: unless-stopped
volumes:
- ./config:/app/config
ports:
- 8080:8080
第 2 步:下载预配置模板(官方维护的示例配置,含 RSS/HN/Reddit/天气/行情等一组即开即用的 widget):
mkdir config && wget -O config/glance.yml https://raw.githubusercontent.com/glanceapp/glance/refs/heads/main/docs/glance.yml
第 3 步:启动并访问:
docker compose up -d
完成后浏览器访问 http://服务器IP:8080 即见仪表盘;改 config/glance.yml 保存即自动生效。若想不读配置文档直接要一份成品,也可用官方目录模板:
mkdir glance && cd glance && curl -sL https://github.com/glanceapp/docker-compose-template/archive/refs/heads/main.tar.gz | tar -xzf - --strip-components 2
该模板会铺出 docker-compose.yml、config/home.yml(首页 widget)、config/glance.yml(主题与页面)、.env、assets/user.css 五件套,改完同样 docker compose up -d。
六、适用场景与限制
6.1 适用场景
- 家庭实验室/个人自托管统一起始页:十几个自托管服务(相册、下载器、面板、监控)的状态与入口聚合到一页,browser 主页一开全知道。
- 信息流聚合阅读页:RSS、Hacker News、Reddit、YouTube 频道、Twitch 直播状态组合成一个「每日晨报」页,服务端抓取缓存、刷新即最新。
- 轻量运维状态墙:
monitor看服务可达性、docker-containers看容器状态、server-stats看本机资源、releases盯自部署项目的发版,替代重型监控大屏的「一眼巡检」职能。 - 团队/家庭公共信息板:天气、日历、待办、行情、DNS 拦截统计拼一块挂在客厅屏幕或nas面板上。
6.2 资源参考
- 官方 README 口径:低内存占用、极少依赖、单 <20MB 二进制与同样小的 Docker 镜像、未缓存页面通常 1 秒内加载(取决于网速与 widget 数量)。Go 单进程无数据库,属「百兆级内存」的轻量形态。
- 每次页面加载会对未命中的 widget 发起外部请求,widget 数量多时建议合理设置
cache降低对上游 API 的压力(GitHub API 匿名限额 60 次/小时,releases/repositorywidget 支持 token 提升)。
6.3 限制(评估前必须知道)
- 无自动刷新:数据只在页面加载时更新,官方 FAQ 明确不支持后台轮询——要「实时监控大屏」请选 Uptime Kuma/Grafana 这类专业工具。
- 单用户倾向:无多用户体系、无权限分级;认证只有「共享口令」级,面板布局是全局一份。
- 0.x 版本号:未到 1.0,跨版本偶有配置项废弃(如
calendar-legacy已标记 deprecated 待移除),升级需读 Release Notes。 - AGPL-3.0 传染性:二次开发后对外提供网络服务须开源修改。
- 部分 widget 依赖外部服务可达性:Reddit 匿名 API 拒绝 VPS IP(需注册应用走 app-auth 或代理);Twitch、行情、天气等均需服务器能直连对应 API——网络受限环境需要自行评估连通性。
七、同类选型对比
7.1 竞品对照表
以下星数均来自 shields.io github/stars 徽章实查(查询日期 2026-10-25);许可来自 shields.io github/license 徽章;定性维度来自各项目官方 README/文档站的定位描述(同日期实查):
| 维度 | Glance v0.8.7 | Dashy | homepage | Homarr | Heimdall |
|---|---|---|---|---|---|
| GitHub Stars | 约 38k | 约 27k | 约 33k | 约 7.2k | 约 9.4k |
| 许可证 | AGPL-3.0 | MIT | GPL-3.0 | MIT | MIT |
| 技术栈 | Go 单二进制 + 原生 JS | Vue SPA | Next.js (React) | React SPA + Node 后端 | PHP (Laravel) |
| 配置方式 | 纯 YAML(声明式、可 $include、可热重载) | YAML + 在线编辑器混合 | YAML(声明式) | 在线拖拽图形化编辑 | Web 界面点击添加 |
| 核心取向 | 信息流聚合(RSS/行情/监控内容直接上屏) | 应用导航 + 丰富小组件 + 主题市场 | 应用导航 + 小组件 + 服务发现 | 在线可视化编辑、多用户管理 | 应用书签导航(最简) |
| 内置认证 | 有(口令 + bcrypt + 防爆破封禁) | 有(多用户 + SSO 支持) | 有(多用户) | 有(多用户 + OIDC) | 有(基础登录) |
| 数据持久化 | 无(配置即状态,todo 存浏览器) | 需要(体积较大) | 需要 | 需要(数据库) | 需要(数据库) |
| Docker 镜像拉取量 | 约 9.6M | — | 约 2.3M | 约 80k | — |
| 二进制部署 | 有(Go 单文件,多平台) | 无(Node 构建) | 无(Node 构建) | 无 | 无(PHP 应用) |
| 移动端体验 | 官方重点优化(专用布局) | 良好 | 良好 | 良好 | 一般 |
| 上手成本 | 低(一份 YAML 即成) | 中(功能多配置面广) | 低中(YAML + k8s 服务发现加分项) | 低(图形化但部署重) | 最低 |
关键差异解读:五者不是严格同位竞争——Heimdall 是最纯粹的「应用书签页」;Homarr 强在在线图形化编辑与多用户管理,但部署最重;homepage 与 Glance 同属「YAML 声明式」流派,homepage 的差异化在 k8s/服务发现集成,Glance 的差异化在信息流聚合的深度(RSS 4 种样式、行情走势、发版追踪、自定义 API 模板都是同类中最完整的)与零持久化的部署极简性。
7.2 选型建议(「如果…则…」)
- 如果想让起始页「直接显示内容」(新闻、行情、服务状态)而不是一排图标 → Glance。
- 如果主要诉求是给一堆自托管应用做一个好看的导航页、偶尔看点小组件 → homepage(YAML 党)或 Dashy(要主题市场与在线编辑)。
- 如果要图形化拖拽编辑、多用户各管各的面板 → Homarr。
- 如果只想要最简单的应用书签页、越省心越好 → Heimdall。
- 如果在 k8s 环境且想要自动服务发现 → homepage。
- 如果 AGPL 传染性不可接受 → 改选 MIT 的 Dashy/Homarr/Heimdall(homepage 为 GPL-3.0,同样注意合规)。
- 如果必须二进制裸跑(无 Node/PHP 运行时) → 只有 Glance 提供 Go 单文件形态。
八、参考链接
- GitHub 仓库:https://github.com/glanceapp/glance
- 配置文档(权威):https://github.com/glanceapp/glance/blob/main/docs/configuration.md
- 预配置页面集:https://github.com/glanceapp/glance/blob/main/docs/preconfigured-pages.md
- 主题集:https://github.com/glanceapp/glance/blob/main/docs/themes.md
- 官方 Compose 模板仓库:https://github.com/glanceapp/docker-compose-template
- 社区 widget 仓库:https://github.com/glanceapp/community-widgets
- 远程监控代理:https://github.com/glanceapp/agent
- 第三方配置 Schema:https://github.com/not-first/glance-schema
- Docker Hub 镜像:https://hub.docker.com/r/glanceapp/glance
- 社区 Discord:https://discord.com/invite/7KQ7Xa9kJd