A self-hosted dashboard that puts all your feeds in one place
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 1 年前 | ||
| 15 天前 | ||
| 15 天前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 3 个月前 | ||
| 3 个月前 | ||
| 3 个月前 | ||
| 2 年前 | ||
| 3 个月前 | ||
| 3 个月前 | ||
| 3 个月前 | ||
| 2 年前 |

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

特性
多种组件
- 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即可使用仪表盘。
常见问题
请求超时
最常见的原因是在使用 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小组件 —— 允许你插入自定义静态 HTMLextension小组件 —— 从 URL 获取 HTMLcustom-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 .
或者,如果你只是想运行应用而不生成二进制文件——比如在测试改动时——你可以直接运行:
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 - 尽量避免引入新的依赖
- 尽量避免做出不向后兼容的配置变更
- 尽量避免引入新的颜色或硬编码颜色,请使用标准的
primary、positive和negative - 对于图标,尽量在适用的情况下使用 heroicons
- 如果涉及 UI 改动,请尽可能提供截图
- 不包含
package.json
[1] [2] [3]
[1] 该功能可能已有相关的工作进展,可能与你的实现产生冲突
[2] 该功能的需求、实现方式或功能定义尚不明确
[3] 暂时没有计划添加该功能
致谢
感谢所有慷慨地赞助该项目的人们,以及每一位以任何方式做出贡献的朋友——无论是提交 PR、报告问题、在讨论区或 Discord 服务器中帮助他人、编写指南和工具,还是只是在社交媒体上提到 Glance。你们的支持意义重大,是推动项目持续前行的动力。
项目介绍
一款自主托管的仪表板,将您所有的信息源汇集于一体【此简介由AI生成】