glance:多源信息聚合仪表盘,支持自定义布局与主题的轻量工具

A self-hosted dashboard that puts all your feeds in one place

分支6Tags34
文件最后提交记录最后更新时间
1 年前
15 天前
15 天前
1 年前
1 年前
1 年前
3 个月前
3 个月前
3 个月前
2 年前
3 个月前
3 个月前
3 个月前
2 年前

Glance

安装配置Discord赞助

社区组件预配置页面主题

一款轻量级、高度可定制的仪表盘,将你的信息流
以美观、简洁的界面呈现

特性

多种组件

  • RSS 订阅源
  • Subreddit 帖子
  • Hacker News 帖子
  • 天气预报
  • YouTube 频道更新
  • Twitch 频道
  • 市场价格
  • Docker 容器状态
  • 服务器统计
  • 自定义组件
  • 以及更多...

快速且轻量

  • 内存占用低
  • 依赖少
  • 最简原生 JS
  • 单个 <20mb 的二进制文件,支持多种操作系统和架构,Docker 容器同样小巧
  • 未缓存的页面通常在 ~1 秒内加载完成(取决于网络速度和组件数量)

高度可定制

  • 多样化布局
  • 任意数量的页面/标签页
  • 每个组件均有众多配置选项
  • 部分组件支持多种样式
  • 自定义 CSS

针对移动设备优化

因为你会想随时随地随身携带它。

可定制主题

通过调整几个数值即可轻松创建自己的主题,或从已有主题中选择其一。


配置

配置通过 YAML 文件完成,想了解更多关于布局的工作方式、如何添加更多页面以及如何配置组件,请访问配置文档

预览示例配置文件
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
                title: Josh Comeau
              - url: https://samwho.dev/rss.xml
              - url: https://ishadeed.com/feed.xml
                title: Ahmad Shadeed

          - type: twitch-channels
            channels:
              - theprimeagen
              - j_blow
              - giantwaffle
              - cohhcarnage
              - christitustech
              - EJ_SA

      - size: full
        widgets:
          - type: group
            widgets:
              - type: hacker-news
              - type: lobsters

          - type: videos
            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
        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
              - symbol: AAPL
                name: Apple
              - symbol: MSFT
                name: Microsoft

          - type: releases
            cache: 1d
            repositories:
              - glanceapp/glance
              - go-gitea/gitea
              - immich-app/immich
              - syncthing/syncthing

安装

选择以下任一方式:

使用提供的目录结构通过 Docker compose 安装(推荐)

运行以下命令,新建一个名为 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

点击此处查看将创建的文件

然后,根据需要编辑以下文件:

  • docker-compose.yml 用于配置端口、卷及其他容器相关设置
  • config/home.yml 用于配置首页的组件或布局
  • config/glance.yml 如需更改主题或添加更多页面
其他你可能需要编辑的文件
  • .env 用于配置配置文件中可用的环境变量
  • assets/user.css 用于添加自定义 CSS

准备就绪后,运行:

docker compose up -d

如果您遇到任何问题,可以通过运行以下命令来查看日志:

docker compose logs

Docker compose 手动配置指南

创建包含以下内容的 docker-compose.yml 文件: </需要翻译的内容>

services:
  glance:
    container_name: glance
    image: glanceapp/glance
    restart: unless-stopped
    volumes:
      - ./config:/app/config
      - /etc/localtime:/etc/localtime:ro
    ports:
      - 8080:8080

然后,新建一个名为 config 的目录,并通过运行以下命令,将示例起始文件 glance.yml 下载至该目录中:

mkdir config && wget -O config/glance.yml https://raw.githubusercontent.com/glanceapp/glance/refs/heads/main/docs/glance.yml

尽情按你的喜好编辑 glance.yml 文件,准备就绪后运行:

docker compose up -d

如果您遇到任何问题,可以通过运行以下命令来查看日志:

docker logs glance

手动安装二进制文件

预编译的二进制文件适用于 Linux、Windows 和 macOS(支持 x86、x86_64、ARM 和 ARM64 架构)。

Linux

请访问最新发布页面查看可用的二进制文件。您可以将二进制文件放置在 /opt/glance/ 目录下,并通过 systemd 服务 使其随服务器自动启动。默认情况下,运行二进制文件时,它会在所在目录中查找 glance.yml 配置文件。如需指定其他配置文件路径,请使用 --config 选项:


/opt/glance/glance --config /etc/glance.yml

要获取配置文件的起始模板,请运行:

wget https://raw.githubusercontent.com/glanceapp/glance/refs/heads/main/docs/glance.yml

Windows

最新版本下载并解压可执行文件(如果你使用的是64位系统,大概率是名为glance-windows-amd64.zip的文件),然后将其放置到你选择的文件夹中。接着,在同一文件夹下新建一个名为glance.yml的文本文件,并将此处的内容粘贴进去。随后,运行该可执行文件,并在浏览器中访问http://localhost:8080即可使用仪表盘。


其他安装方式

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



常见问题

请求超时

最常见的原因是在使用 Pi-Hole、AdGuard Home 或其他具有广告拦截功能的 DNS 服务时,这些服务默认的速率限制较低。根据单个页面上放置的小组件数量,这个限制很容易被超出。要解决此问题,请在 DNS 服务的设置中提高速率限制。

如果使用 Podman,极少数情况下超时可能是由未知问题引起的,此时可以尝试在docker-compose.yml文件的末尾添加以下内容来解决问题:

networks:
  podman:
    external: true
市场、书签或其他小组件出现布局错乱

这几乎总是由浏览器扩展程序 Dark Reader 导致的。要解决此问题,请为 Glance 所在的域名禁用深色模式。

无法将 !!map 反序列化为 []glance.page

此问题最常见的原因是:你的 glance.yml 中有一个 pages 键,同时你引入的某个页面文件内部也包含 pages 键。要解决此问题,请从你引入的页面文件顶部移除 pages 键。


常见问题

页面上的信息会自动更新吗? 不会,信息需要刷新页面才能更新。不过某些内容会在合适的场景下动态更新,例如时钟小组件,以及显示事件发生多久前的相对时间。
小组件的更新频率是怎样的? 后台不会定期发起请求,信息仅在页面加载时获取,然后进行缓存。每个小组件的默认缓存时长各不相同,且可以自行配置。
我可以创建自己的小组件吗?

可以,有多种方式可以创建自定义小组件:

  • iframe 小组件 —— 允许你嵌入来自其他网站的内容
  • html 小组件 —— 允许你插入自定义静态 HTML
  • extension 小组件 —— 从 URL 获取 HTML
  • custom-api 小组件 —— 从 URL 获取 JSON 并使用自定义 HTML 进行渲染
我可以修改小组件的标题吗?

可以,所有小组件的标题都可以通过在小组件配置中指定 title 属性来修改:

- type: rss
  title: My custom title

- type: markets
  title: My custom title

- type: videos
  title: My custom title

# and so on for all widgets...

功能请求

欢迎随时提出新功能建议,我们会予以考虑,但请留意,部分建议可能超出项目既定目标(或合理能力范围)。如果您有新功能的想法并希望分享,可在此处提交链接

功能请求会标注以下标签之一:

  • 路线图 — 将在未来版本中实现
  • 待办事项 — 未来可能实现,但需社区进一步反馈或关注
  • 搁置事项 — 目前与项目目标或能力不符,暂无实施计划,后续可能会重新评估

从源码构建

请选择以下任一方式:

使用 Go 构建二进制文件

环境要求:Go 版本不低于 v1.23

要为当前操作系统和架构构建项目,请运行:

go build -o build/glance .

要为特定的操作系统和架构进行构建,请运行:

GOOS=linux GOARCH=amd64 go build -o build/glance .

点击此处查看完整的 GOOS 和 GOARCH 组合列表

或者,如果你只是想运行应用而不生成二进制文件——比如在测试改动时——你可以直接运行:

go run .

使用 Docker 构建项目与 Docker 镜像

前置要求:Docker

若仅使用 Docker 来构建项目及镜像,请运行:

(将 owner 替换为您的姓名或组织名称)

docker build -t owner/glance:latest .

如果您希望将镜像推送到注册表(默认为 Docker Hub),请运行:

docker push owner/glance:latest


贡献指南

  • 在着手开发新功能之前,最好先提交功能请求,并说明你希望亲自实现它
  • 请勿为路线图[1]、待办列表[2]或冻结列表[3]中的功能请求提交 PR
  • 如果你要添加新功能或修复漏洞,请使用 dev 作为基础分支,否则使用 main
  • 尽量避免引入新的依赖
  • 尽量避免做出不向后兼容的配置变更
  • 尽量避免引入新的颜色或硬编码颜色,请使用标准的 primarypositivenegative
  • 对于图标,尽量在适用的情况下使用 heroicons
  • 如果涉及 UI 改动,请尽可能提供截图
  • 不包含 package.json
[1] [2] [3]

[1] 该功能可能已有相关的工作进展,可能与你的实现产生冲突

[2] 该功能的需求、实现方式或功能定义尚不明确

[3] 暂时没有计划添加该功能


致谢

感谢所有慷慨地赞助该项目的人们,以及每一位以任何方式做出贡献的朋友——无论是提交 PR、报告问题、在讨论区或 Discord 服务器中帮助他人、编写指南和工具,还是只是在社交媒体上提到 Glance。你们的支持意义重大,是推动项目持续前行的动力。

项目介绍

一款自主托管的仪表板,将您所有的信息源汇集于一体【此简介由AI生成】

定制我的领域
8436.82 K1.44 K访问 GitHub