告别信息焦虑,拥抱一目了然的核心功能

136 阅读12分钟

还在为信息爆炸的时代,每天辗转于各种App和网站之间获取碎片化信息而烦恼吗?想不想拥有一个属于自己的、能够将所有关注动态一网打尽的“情报中心”?今天,就为大家介绍一款能帮你实现这个愿望的开源神器——Glance

Glance是一个自托管的仪表盘(Dashboard)项目,它的核心理念就是**“一目了然”(What if you could see everything at a... Glance)**。它能将你关心的各种信息源整合到同一个界面,让你无需频繁切换,即可轻松掌握所有动态。

想象一下,清晨醒来,打开你的Glance仪表盘,RSS订阅的新闻、关注的Subreddit热帖、Hacker News的最新讨论、今日天气预报、喜爱的YouTube频道更新、Twitch主播是否开播、关心的股票市场行情、自家Docker容器的运行状态,甚至是服务器的实时统计数据……所有这一切,都清晰地呈现在你眼前。是不是感觉效率瞬间提升,焦虑感大大降低?

告别信息焦虑,拥抱一目了然的核心功能

Glance之所以能够成为你的信息聚合利器,离不开其强大而灵活的功能特性:

  1. 1. 丰富多样的小组件 (Various widgets)

    • RSS feeds:轻松订阅各大新闻网站、博客、公众号(部分支持RSS输出)的内容,打造个性化资讯流。
    • Subreddit posts:实时追踪你感兴趣的Reddit板块,不错过任何热门讨论和新鲜事。
    • Hacker News posts:科技爱好者必备,第一时间掌握前沿技术动态和深度讨论。
    • Weather forecasts:直观显示指定地点的天气情况,为你的出行和生活提供参考。
    • YouTube channel uploads:订阅你喜欢的YouTuber,新视频更新即时知晓。
    • Twitch channels:关注的游戏主播开播了?Glance会告诉你。
    • Market prices:追踪股票、加密货币等市场价格波动。
    • Docker containers status:对于自托管爱好者和开发者而言,能够直接在仪表盘监控Docker容器状态无疑非常实用。
    • Server stats:了解你的服务器负载、存储等关键信息。
    • Custom widgets:更棒的是,Glance还支持自定义小组件,你可以通过iframe、HTML、API等方式接入更多类型的信息源。
    • • 还有更多小组件等待你去探索和配置!
  2. 2. 极致性能,轻盈如燕 (Fast and lightweight)

    • 低内存占用:对服务器资源要求极低,即使是小型设备也能流畅运行。
    • 依赖极少:减少了潜在的冲突和安全风险。
    • 极简原生JS:保证了前端加载速度和性能。
    • 小巧的二进制文件/Docker镜像:单个可执行文件不到20MB,支持多种操作系统和架构;Docker镜像同样保持了极小的体积。
    • 快速加载:在网络状况良好且小组件数量适中的情况下,未缓存的页面通常能在1秒内加载完成。
  3. 3. 深度定制,随心所欲 (Tons of customizability)

    • 多种布局:根据你的屏幕大小和信息优先级,调整仪表盘的列数和排布。
    • 无限页面/标签页:你可以创建任意数量的页面或标签页,对不同类别的信息进行分组管理。
    • 丰富的小组件配置选项:每个小组件都提供了大量的配置项,例如RSS源的显示条数、折叠阈值、缓存时间等。
    • 部分小组件支持多种显示样式
    • 自定义CSS:如果你懂CSS,完全可以打造出独一无二的视觉风格。
  4. 4. 移动优先,随时相伴 (Optimized for mobile devices)
    Glance深知你希望随时随地都能访问自己的信息中心,因此对移动设备进行了专门优化,在手机或平板上也能获得良好的浏览体验。

  5. 5. 主题随换,颜值在线 (Themeable)
    你可以通过调整几个参数轻松创建自己的主题,或者从社区提供的现有主题中选择一款你喜欢的。让你的仪表盘不仅实用,更要好看!

配置你的专属仪表盘

Glance的配置完全通过YAML文件进行,这种格式简洁易懂,上手非常快。你可以定义页面的布局、添加和配置各种小组件。想知道如何玩转布局、添加更多页面以及配置小组件的详细信息,可以查阅官方的配置文档。

下面是一个配置文件的示例预览,让你感受一下它的简洁与强大:

pages:
  - name: Home # 定义一个名为 Home 的页面
    columns: # 定义页面的列布局
      - size: small # 第一列,尺寸为 small
        widgets: # 该列下的小组件
          - type: calendar # 日历小组件
            first-day-of-week: monday # 设置周一为每周第一天

          - type: rss # RSS 订阅小组件
            limit10 # 最多显示10条
            collapse-after3 # 超过3条则折叠
            cache12h # 缓存12小时
            feeds: # 订阅源列表
              - urlhttps://selfh.st/rss/
                title: selfh.st # 自定义标题
                limit4 # 此特定源最多显示4条
              - urlhttps://ciechanow.ski/atom.xml
              - urlhttps://www.joshwcomeau.com/rss.xml
                title: Josh Comeau
              - urlhttps://samwho.dev/rss.xml
              - urlhttps://ishadeed.com/feed.xml
                title: Ahmad Shadeed

          - type: twitch-channels # Twitch 频道小组件
            channels:
              - theprimeagen
              - j_blow
              - piratesoftware
              - cohhcarnage
              - christitustech
              - EJ_SA

      - size: full # 第二列,尺寸为 full
        widgets:
          - type: group # 小组件分组
            widgets:
              - type: hacker-news
              - type: lobsters

          - type: videos # YouTube 视频小组件
            channels:
              - UCXuqSBlHAE6Xw-yeJA0Tunw # Linus Tech Tips
              - UCR-DXc1voovS8nhAvccRZhg # Jeff Geerling
              - UCsBjURrPoezykLs9EqgamOA # Fireship
              - UCBJycsmduvYEL83R_U4JriQ # Marques Brownlee
              - UCHnyfMqiRRG1u-2MsSQLbXA # Veritasium

          - type: group
            widgets:
              - type: reddit
                subreddit: technology
                show-thumbnails: true # 显示缩略图
              - type: reddit
                subreddit: selfhosted
                show-thumbnails: true

      - size: small # 第三列,尺寸为 small
        widgets:
          - type: weather # 天气小组件
            location: London, United Kingdom # 地点
            units: metric # 单位(摄氏度)
            hour-format12h # 12小时制

          - type: markets # 市场行情小组件
            markets:
              - symbol: SPY
                name: S&P 500
              - symbol: BTC-USD
                name: Bitcoin
              - symbol: NVDA
                name: NVIDIA
              - symbol: AAPL
                name: Apple
              - symbol: MSFT
                name: Microsoft

          - type: releases # Github Release 小组件
            cache1d # 缓存1天
            repositories:
              - glanceapp/glance
              - go-gitea/gitea
              - immich-app/immich
              - syncthing/syncthing

通过这个例子,你可以看到,配置项非常直观。你可以定义页面名称、列的宽度(small, full等),然后在每一列中添加不同类型的小组件,并对它们进行精细化的参数设置。

轻松部署,快速上手

Glance提供了多种安装方式,其中最推荐的是使用Docker Compose。

Docker Compose 配合预设目录结构 (推荐)

官方推荐这种方式,它能帮你快速搭建好Glance所需的目录结构和基础配置文件。

  1. 1. 创建名为 glance 的新目录,并下载模板文件:mkdir glance && cd glance && curl -sL https://github.com/glanceapp/docker-compose-template/archive/refs/heads/main.tar.gz | tar -xzf - --strip-components 2这条命令会创建一个glance目录,并在其中解压所需的模板文件结构。
  2. 2. 根据你的需求编辑以下文件:
    • docker-compose.yml: 配置端口、数据卷等Docker相关设置。
    • config/home.yml: 配置主页的小组件和布局。
    • config/glance.yml: 如果你想更改主题或添加更多页面,可以编辑此文件。
  3. 3. 你可能还想编辑的其他文件:
    • .env: 配置环境变量,这些变量可以在配置文件中被引用。
    • assets/user.css: 添加你自己的CSS样式。
  4. 4. 一切就绪后,启动服务:``` docker compose up -d
  5. 5. 如果遇到问题,可以通过以下命令查看日志:``` docker compose logs

手动配置 Docker Compose

如果你更喜欢手动控制,可以这样做:

  1. 1. 创建一个 docker-compose.yml 文件,内容如下:``` services:   glance:     container_name: glance     image: glanceapp/glance     restart: unless-stopped     volumes:       - ./config:/app/config # 将本地的config目录映射到容器内     ports:       - 8080:8080 # 将容器的8080端口映射到主机的8080端口
  2. 2. 创建一个名为 config 的目录,并下载示例 glance.yml 文件到其中:``` mkdir config && wget -O config/glance.yml raw.githubusercontent.com/glanceapp/g…
  3. 3. 根据你的喜好编辑 glance.yml 文件,然后启动服务:``` docker compose up -d
  4. 4. 查看日志:``` docker logs glance

手动二进制安装

Glance也提供了预编译的二进制文件,支持Linux、Windows和macOS(x86, x86_64, ARM, ARM64架构)。

  • Linux:
    访问最新发布页面下载对应的二进制文件。你可以将其放置在例如 /opt/glance/ 目录下,并通过systemd服务使其随系统启动。默认情况下,二进制文件会查找同目录下的 glance.yml。你可以使用 --config 参数指定配置文件路径:/opt/glance/glance --config /etc/glance.yml获取初始配置文件模板:``` wget raw.githubusercontent.com/glanceapp/g…
  • Windows:
    从最新发布页面下载并解压可执行文件(通常是名为 glance-windows-amd64.zip 的文件,如果你的系统是64位的话),将其放置在你选择的文件夹中。然后在同一文件夹下创建一个名为 glance.yml 的文本文件,并将这里的内容粘贴进去。之后,你应该就能运行可执行文件,并通过浏览器访问 http://localhost:8080 来查看仪表盘了。

其他安装渠道

Glance还可以通过以下第三方渠道安装:

  • • Proxmox VE Helper Script
  • • NixOS package
  • • Coolify.io

常见问题与使用技巧 (Common issues & FAQ)

  • 请求超时 (Requests timing out)
    最常见的原因是使用了Pi-Hole、AdGuard Home或其他广告拦截DNS服务,它们默认的请求速率限制较低。根据页面中小组件的数量,很容易超出这个限制。解决方法是在你的DNS服务设置中提高速率限制。
    如果使用Podman,在极少数情况下,超时可能是由未知问题引起的,此时可以尝试在docker-compose.yml文件底部添加以下内容解决:``` networks:   podman:     external: true

  • 市场、书签或其他小组件布局错乱 (Broken layout for markets, bookmarks or other widgets)
    这几乎总是由浏览器扩展程序Dark Reader引起的。解决方法是为你托管Glance的域名禁用暗黑模式。

  • cannot unmarshal !!map into []glance.page 错误
    最常见的原因是在 glance.yml 中有一个 pages 键,然后在你包含的某个页面配置文件(如 home.yml)的顶层又有一个 pages 键。解决方法是从你包含的页面配置文件顶部移除 pages 键。

  • 页面上的信息会自动更新吗?
    不,需要刷新页面才能更新信息。一些在逻辑上需要动态更新的内容(如时钟小组件和相对时间显示)会自动更新。

  • 小组件多久更新一次?
    Glance不会在后台定期发起请求。信息仅在加载页面时获取,然后进行缓存。每个小组件的默认缓存生命周期不同,并且可以配置。

  • 我可以创建自己的小组件吗?
    是的,有多种方式可以创建自定义小组件:

    • iframe widget: 允许你嵌入来自其他网站的内容。
    • html widget: 允许你插入自己的静态HTML。
    • extension widget: 从一个URL获取HTML内容。
    • custom-api widget: 从一个URL获取JSON数据,并使用自定义HTML模板进行渲染。
  • 我可以更改小组件的标题吗?
    是的,所有小组件的标题都可以通过在其配置中指定 title 属性来更改:``` - type: rss   title: 我的自定义RSS标题

    - type: markets   title: 我的自定义市场行情标题

    - type: videos   title: 我关注的视频更新

    # 其他所有小组件依此类推...

同类项目概览

在自托管仪表盘和信息聚合领域,除了Glance,还有一些其他优秀的项目,它们各有侧重,可以满足不同的需求:

  1. 1. Homer Dashboard (homer-dashboard/homer)
    • 特点:Homer是一个非常流行的静态HTML/JS仪表盘,主要用于组织和快速访问你的应用程序和服务。它配置简单,通过一个YAML文件即可定义所有链接和分组。
    • 与Glance对比:Homer更侧重于“应用启动器”和“书签导航”,而Glance则专注于聚合和展示来自不同源的动态“信息流”。Homer本身不主动获取和展示内容,而是提供链接。
  2. 2. Heimdall Application Dashboard (linuxserver/Heimdall)
    • 特点:与Homer类似,Heimdall也是一个专注于应用程序链接的仪表盘。它提供了更美观的界面和一些基础的集成功能,例如可以显示部分应用的API信息。
    • 与Glance对比:Heimdall同样偏向于应用启动器,虽然比Homer功能稍多一些,但在信息聚合展示方面不如Glance灵活和强大。
  3. 3. Organizr (causefx/Organizr)
    • 特点:Organizr是一个功能更为全面的HTPC/Homelab管理系统。它支持标签页,可以将你的各种Web服务嵌入到其界面中,并提供用户管理、SSO等高级功能。
    • 与Glance对比:Organizr更像一个“Homelab门户”或“统一入口”,强调服务的整合和管理,而Glance则是一个轻量级的、专注于信息“概览”的仪表盘。Organizr相对更重,配置也更复杂。
  4. 4. Homepage (gethomepage/homepage)
    • 特点:Homepage是近年来非常受欢迎的一款仪表盘,通过YAML配置,支持与众多服务的API集成(如Plex, Pi-hole, Radarr等),可以直接显示这些服务的状态或数据。它也支持Docker集成,可以发现并展示容器信息。
    • 与Glance对比:Homepage在服务状态展示和Docker集成方面非常出色,更像一个“服务监控与启动面板”。Glance则在聚合外部信息源(如RSS、社交媒体、新闻)方面提供了更多专门的小组件类型,更侧重于“内容聚合”。两者在功能上有所重叠,但侧重点不同。
  5. 5. FreshRSS / Tiny Tiny RSS (TT-RSS)
    • 特点:这两者都是非常强大的开源RSS阅读器。它们提供了完整的RSS订阅管理、文章阅读、过滤、标签等功能。
    • 与Glance对比:FreshRSS和TT-RSS专注于RSS这一特定信息源,并提供深度管理。Glance的RSS小组件是其众多信息源中的一种,提供的是“概览”而非深度管理。如果你的核心需求是RSS阅读,那么FreshRSS/TT-RSS更合适;如果希望将RSS作为仪表盘的一部分信息,Glance则更方便。

总而言之,Glance以其轻量、高度可定制和专注于信息聚合的特性,在众多仪表盘项目中独树一帜。如果你厌倦了在无数标签页和App之间来回切换,渴望拥有一个能让你“一目了然”掌握所有关注动态的个人中心,那么Glance绝对值得你一试!自己动手,打造一个专属于你的高效信息聚合平台吧!