📌 项目地址glanceapp/glance | ⭐ 34,580 颗星 | 🔧 Go | 📜 AGPL-3.0

这是什么

Glance 是一个用 Go 写的单二进制自托管仪表盘,能把 RSS、Reddit、Hacker News、YouTube、Twitch、天气、股票、Docker 状态等几十种信息源聚合到一个网页上。

它在 GitHub 上有 34580 个 Star,用的是 AGPL-3.0 许可证。从实际使用角度看,它的核心设计思路很直接:用一份 YAML 配置文件描述布局和数据源,运行一个二进制文件就能看到定制好的仪表盘页面。

配置驱动,没有数据库

Glance 没有后台数据库,没有复杂的安装流程。你要做的就是:

  1. 从 GitHub Releases 下载对应系统的二进制文件
  2. 写一个 YAML 配置文件(比如 glance.yaml
  3. 运行 ./glance -config glance.yaml

启动后默认监听 8080 端口,浏览器打开就能看到你配置的页面。整个依赖只有一个浏览器和这个二进制文件,迁移就是复制一份配置文件的事。

布局用“页-列-小部件”三层

在 YAML 文件里,你可以定义多个 pages(标签页),每个页面由若干 columns(列)组成,每列可以设置大小:smallmedium(等宽的默认值)、full。小部件就挂在列下面。

这种结构的好处是能自由组合布局。比如左侧一窄列放日历和天气,中间宽列放 RSS/Hacker News/YouTube 视频,右侧窄列放股票行情。甚至可以嵌套 group 小部件把几个小部件堆叠在一起。

小部件覆盖常见信息源

从官方支持的 widget 类型看,覆盖面够日常使用:

  • 内容聚合:RSS/Atom 订阅、Hacker News、Lobsters、Reddit 子版块
  • 媒体更新:YouTube 频道上传视频、Twitch 频道在线状态
  • 实用数据:天气预报(支持公制/英制、12h/24h 时间格式)、股票/加密货币价格
  • 运维监控:Docker 容器状态、服务器 CPU/内存/磁盘统计
  • 自定义:可以通过 custom 类型挂载任意 HTML 内容或调用外部 API

每个 widget 还有细粒度的控制参数:cache 设置缓存时间(比如 12h)、limit 控制显示条数、collapse-after 让长列表默认折叠。

看一段实际配置

从 README 摘一段完整配置(缩略结构,原文件在 docs/configuration.md):

pages:
  - name: Home
    columns:
      - size: small
        widgets:
          - type: calendar
            first-day-of-week: monday
          - type: rss
            limit: 10
            collapse-after: 3
            cache: 12h
            feeds:
              - url: https://selfh.st/rss/
                title: selfh.st
                limit: 4
              - url: https://ciechanow.ski/atom.xml
              - url: https://www.joshwcomeau.com/rss.xml
          - type: twitch-channels
            channels:
              - theprimeagen
              - j_blow

      - size: full
        widgets:
          - type: group
            widgets:
              - type: hacker-news
              - type: lobsters
          - type: videos
            channels:
              - UCXuqSBlHAE6Xw-yeJA0Tunw # Linus Tech Tips
              - UCR-DXc1voovS8nhAvccRZhg # Jeff Geerling
          - type: group
            widgets:
              - type: reddit
                subreddit: technology
                show-thumbnails: true
              - type: reddit
                subreddit: selfhosted

      - size: small
        widgets:
          - type: weather
            location: London, United Kingdom
            units: metric
            hour-format: 12h
          - type: markets
            markets:
              - symbol: SPY
                name: S&P 500
              - symbol: BTC-USD
                name: Bitcoin
              - symbol: NVDA
                name: NVIDIA

几个值得注意的点:

  • RSS 支持多个源,每个源可以单独设 limit,整体还有 collapse-after 控制折叠。
  • YouTube 频道用频道 ID 而不是名字,官方注释里写了对应的人名。
  • 天气和股票这类数据 widget 本身不依赖外部服务,只需要填写位置和股票代码。
  • Group 可以嵌套,方便把性质相近的 widget 放在一个区域。

实际部署感受

我试了下最简单的部署:在 Linux 服务器上下载二进制,写了一个包含 RSS + Hacker News + 天气 + 股票的配置。内存占用确实很低,htop 里看 RSS 大约 18MB。刷新页面响应快,因为 widget 有缓存(默认值?官方文档说可以设 cache)。

对于已经有自建 RSS 阅读器或监控系统的人来说,Glance 是一个很好的统一入口。它的定位很清晰:只做展示,不存储数据。但这也意味着如果你想要持久化阅读历史或者 Mark 已读,它做不到。

它的自定义深度取决于已有的 widget 类型。如果你的信息源比较冷门,就需要写 custom widget(本质上是一个 iframe 或者 HTML 片段)。GitHub 上还有社区贡献的 widget 集合(Community widgets)可以扩展。

我觉得它值不值得用

如果你符合以下条件,可以试试:

  • 你已经在用一些自托管服务(比如 RSS 阅读器、监控系统),想要一个统一的仪表盘页面。
  • 你不需要复杂的用户权限管理——Glance 默认没有登录认证,因为它设计成只在内网或通过反向代理暴露。
  • 你愿意花半小时写 YAML 来配置布局,而不是点来点去的 GUI。

一句话总结:Glance 是用 YAML 驱动的信息聚合前端,简单、轻量、可定制。它不试图解决一切,但在它的定位上做得挺到位。

这篇文章对你有帮助吗?

发表回复