使用 Docker Compose 搭建 Glance 平台及其用法
摘要
随着技术的不断发展,信息平台的搭建和管理变得愈加重要。Glance 是一个高度集成的 RSS 阅读和管理平台,它提供了简洁而强大的功能来聚合最新的文章和新闻。本文详细介绍了如何使用 Docker Compose 来搭建 Glance 平台,配置环境,以及如何利用该平台进行 RSS 聚合和内容管理。
关键词
Glance, Docker Compose, 容器化, RSS 聚合, 信息管理平台, 时区配置
1. 引言
随着信息化时代的到来,新闻、博客、学术论文等内容的分散和繁多给用户带来了极大的信息处理压力。RSS(Really Simple Syndication)作为一种新闻聚合技术,能够将分散在互联网上的文章和内容整合成统一的格式,帮助用户更高效地获取信息。Glance 是一款开源的 RSS 管理工具,它支持用户订阅多个 RSS 源,并以简洁美观的方式展示内容。
本文旨在介绍如何通过 Docker Compose 搭建 Glance 平台,并详细讲解其配置和使用方法,以帮助用户实现自动化的信息聚合和内容展示。
2. Glance 平台概述
Glance 是一个基于 Web 的 RSS 阅读器,支持多种功能,包括:
- 订阅和管理 RSS 源:用户可以方便地将不同的 RSS 源加入 Glance 平台,自动获取最新的文章。
- 支持丰富的内容格式:Glance 支持显示文章的标题、链接、摘要、发布时间等信息。
- 高度自定义:用户可以自定义文章展示样式,调整内容的排版和格式。
- 易于部署:Glance 提供 Docker 镜像,用户可以通过容器化的方式快速搭建该平台。
3. 环境要求
在开始搭建 Glance 平台之前,我们需要确保以下环境要求:
- 操作系统:支持 Docker 和 Docker Compose 的 Linux、macOS 或 Windows 系统。
- Docker 和 Docker Compose:需要安装 Docker 引擎以及 Docker Compose 工具。
- 网络连接:为了获取 RSS 源中的最新内容,Glance 需要能够访问互联网。
安装 Docker 和 Docker Compose 可以参考官方文档:
4. 使用 Docker Compose 搭建 Glance
4.1 创建 docker-compose.yml
配置文件
要使用 Docker Compose 搭建 Glance,我们首先需要编写 docker-compose.yml
文件,定义 Glance 容器的配置。以下是一个示例配置:
version: '3.8'
services:
glance:
image: glanceapp/glance:latest
container_name: glance
restart: unless-stopped
volumes:
- /home/glance/config:/app/config # 用于存放配置文件
- /home/glance/assets:/app/assets # 用于存放文章和图片
- /etc/TZ:/etc/timezone:ro # 设置时区
- /etc/localtime:/etc/localtime:ro # 同步本地时间
ports:
- "8080:8080" # 映射容器端口
environment:
- TZ=Asia/Shanghai # 设置时区为上海时区
networks:
- glance_network # 使用自定义网络进行容器通信
networks:
glance_network:
driver: bridge # 使用桥接网络模式
在上面的配置中,我们定义了以下内容:
- 镜像:使用
glanceapp/glance:latest
镜像来启动 Glance。 - 容器名称:设置容器的名称为
glance
,便于管理。 - 重启策略:设置容器在停止后自动重启,除非手动停止。
- 数据卷:挂载了主机上的配置文件目录
/home/glance/config
和资产目录/home/glance/assets
。 - 时区:通过
TZ
环境变量设置容器的时区为上海时区,确保容器的时间与本地时间同步。 - 端口映射:将容器的 8080 端口映射到主机的 8080 端口,方便访问。
- 网络:创建并使用一个自定义的网络
glance_network
,确保容器之间能够良好通信。
4.2 启动 Glance 容器
在编写好 docker-compose.yml
文件后,接下来可以通过以下命令启动 Glance 服务:
docker-compose up -d
该命令会在后台启动 Glance 容器。如果你想查看容器的日志,可以使用以下命令:
docker-compose logs -f glance
通过访问 http://localhost:8080
,你可以在浏览器中查看 Glance 的 Web 界面。
5. 配置和使用
5.1 配置 Glance
Glance 的配置文件位于 /home/glance/config
目录下,用户可以在该目录中编辑配置文件来添加和管理 RSS 源。配置文件通常包括以下内容:
- RSS 源:用户可以指定多个 RSS 源,Glance 会自动抓取这些源中的最新文章。
- 显示样式:用户可以自定义显示格式,例如文章标题、摘要和时间等。
5.2 添加 RSS 源
在 Glance 的管理界面中,用户可以通过提供 RSS 源的 URL 来添加新的订阅。添加后,Glance 会自动抓取该源中的最新文章,并将其展示在平台中。
5.3 自定义样式
Glance 提供了多种展示样式,用户可以根据自己的需求选择不同的样式来显示文章。常见的样式包括:
- 列表展示:按时间顺序展示最新文章。
- 卡片展示:每篇文章作为一个卡片进行展示,适合多图文内容。
5.4 文章管理
用户可以通过 Glance 管理平台查看、编辑、删除已添加的 RSS 源,并管理已聚合的文章内容。Glance 还支持设置缓存时间,以确保内容更新的频率。
6. 高级功能
6.1 Webhook 集成
Glance 支持与外部服务进行集成,用户可以通过配置 Webhook 实现内容的自动推送。例如,当 Glance 更新内容时,可以通过 Webhook 将新文章发送到指定的 Slack 通道或其他应用。
6.2 定时更新
用户可以设置定时任务,指定 Glance 在一定时间间隔内自动更新文章列表。通过合理设置更新频率,可以确保 Glance 聚合的内容保持最新。
Glance 是一个可定制的仪表盘应用,允许用户通过配置文件聚合和展示来自不同来源的信息。
快速上手 (Preconfigured page)
- 提供了一个预配置的
glance.yml
文件,可以快速启动并看到一个示例仪表盘。 - 用户可以在此基础上修改,添加页面、小部件等,进行个性化定制。
配置文件 (glance.yml
)
- 核心: Glance 的所有配置都在一个 YAML 文件中(通常是
glance.yml
)。 - 自动重载: 修改并保存配置文件后,Glance 会自动重新加载配置,无需重启服务。
- 注意: 环境变量的更改不会触发自动重载,需要手动重启。删除配置文件会停止监视。
- 警告: 无效配置会导致启动失败。若运行时修改配置出错,Glance 会保留旧配置并报错,改正后即可加载新配置。
- 注意: 重载配置会清空缓存,可能导致 API 请求频率过高而被限流。
- 环境变量: 支持在配置文件的任何地方使用
${ENV_VAR}
语法插入环境变量。若变量不存在会报错。使用\
转义可输出${...}
字面量。 - 包含其他配置文件: 使用
!include 文件路径
指令可以将其他 YAML 文件内容包含进来,支持相对/绝对路径和环境变量。被包含文件的更改也会触发自动重载。- 调试:
!include
可能导致 YAML 报错行号不准,可用glance --config /path/to/glance.yml config:print | less -N
(或 Docker 等效命令) 查看完整展开的配置及行号。
- 调试:
服务器 (Server)
在顶层 server
块下配置:
host
: (可选, 默认监听所有接口) 服务器监听的地址,如localhost
。port
: (可选, 默认 8080) 监听的端口号。base-url
: (可选) 如果通过反向代理部署在子目录下(如/glance
),则设置此项。重要: 反代需配置去除此前缀再转发给 Glance。assets-path
: (可选) 指定一个本地目录,其内容会通过/assets/
URL 路径提供服务。用于自托管图标等资源。重要: Docker 部署时,需要将此本地目录挂载到容器内对应的路径。
文档 (Document)
document.head
: (可选) 在所有页面的<head>
标签内插入自定义 HTML(如引入 JS 脚本)。
品牌化 (Branding)
在顶层 branding
块下配置:
hide-footer
: (可选, 默认 false) 设为true
隐藏页脚。custom-footer
: (可选) 使用自定义 HTML 作为页脚。logo-text
: (可选, 默认 'G') 导航栏 Logo 文字。logo-url
: (可选) 导航栏 Logo 图片 URL。若同时设置logo-text
,则优先使用图片。favicon-url
: (可选) 自定义 Favicon 图标 URL。
主题 (Theme)
在顶层 theme
块下配置,颜色使用 HSL 格式 (色相 饱和度 亮度,空格分隔,无需 %
):
light
: (可选, 默认 false) 是否为浅色主题 (反转文字颜色以适应浅色背景)。background-color
: (可选, 默认 240 8 9) 页面和部件背景色。primary-color
: (可选, 默认 43 50 70) 主要颜色,如未访问链接。positive-color
: (可选, 默认同 primary-color) 用于表示积极状态 (如股价上涨、服务在线)。negative-color
: (可选, 默认 0 70 70) 用于表示消极状态 (如股价下跌、服务离线)。contrast-multiplier
: (可选, 默认 1) 调整文字对比度 (可见性),大于 1 增强,小于 1 减弱。text-saturation-multiplier
: (可选, 默认 1) 调整文字饱和度。custom-css-file
: (可选) 指向自定义 CSS 文件(可为外部 URL 或/assets/
下的本地文件)。- 提示: 可使用
.widget-type-{部件类型名}
类或部件的css-class
属性精确控制样式。
- 提示: 可使用
- 可用主题: 文档提供了几个预设主题的 HSL 值供参考。
页面与列 (Pages & Columns)
- 结构: Glance 通过页面 (Pages) 和列 (Columns) 来组织小部件。
- 页面 (Pages): 在顶层
pages
列表下定义。- 第一个定义的页面是主页。按定义顺序出现在导航栏。
- 属性:
name
: (必需) 页面名称 (显示在导航栏)。slug
: (可选, 自动从 name 生成) URL 路径片段。width
: (可选, 默认 1600px) 页面最大宽度 (slim
: 1100px,wide
: 1920px)。slim
时最多 2 列。center-vertically
: (可选, 默认 false) 垂直居中页面内容。hide-desktop-navigation
: (可选, 默认 false) 隐藏桌面端顶部页面导航。expand-mobile-page-navigation
: (可选, 默认 false) 移动端页面导航默认展开。show-mobile-header
: (可选, 默认 false) 移动端显示带页面名称的页头。columns
: (必需) 包含的列定义。
- 列 (Columns): 在页面的
columns
列表下定义。- 每页最多 3 列,必须有 1 或 2 个
full
列。 - 属性:
size
: (必需) 列宽类型 (small
: 固定 300px,full
: 占据剩余宽度)。widgets
: (可选) 包含的小部件列表。
- 常见布局:
small-full-small
,full-small
,full-full
。
- 每页最多 3 列,必须有 1 或 2 个
小部件 (Widgets)
在列的 widgets
列表下定义。
- 共享属性:
type
: (必需) 小部件类型。title
: (可选) 小部件标题。title-url
: (可选) 点击标题跳转的 URL。cache
: (可选) 数据缓存时间 (如30s
,5m
,2h
,1d
)。注意: 部分部件(如日历、天气)缓存时间固定。css-class
: (可选) 为此部件实例添加自定义 CSS 类。
可用的小部件类型:
-
RSS:
- 显示来自多个 RSS/Atom Feed 的文章列表。
- 关键属性:
feeds
(URL 列表, 可单独设置标题/限制数量/隐藏分类描述/请求头等),style
(多种布局样式:vertical-list
,detailed-list
,horizontal-cards
,horizontal-cards-2
),limit
(总文章数),collapse-after
(折叠阈值),preserve-order
(保留原文顺序),thumbnail-height
,card-height
。
-
Videos (视频):
- 显示指定 YouTube 频道或播放列表的最新视频。
- 关键属性:
channels
(频道 ID 列表),playlists
(播放列表 ID 列表),limit
,style
(horizontal-cards
,vertical-list
,grid-cards
),collapse-after
/collapse-after-rows
,include-shorts
(是否包含 Shorts),video-url-template
(自定义视频链接模板)。
-
Hacker News:
- 显示 Hacker News 的帖子列表。
- 关键属性:
limit
,collapse-after
,sort-by
(top
,new
,best
),extra-sort-by
(engagement
),comments-url-template
(自定义评论链接模板)。
-
Lobsters:
- 显示 Lobsters (或自托管实例) 的帖子列表。
- 关键属性:
instance-url
(实例地址),custom-url
(自定义获取 URL),limit
,collapse-after
,sort-by
(hot
,new
),tags
(按标签过滤)。
-
Reddit:
- 显示指定 Subreddit 的帖子列表。
- 警告: Reddit 可能阻止来自 VPS IP 的未授权 API 访问。可使用
request-url-template
或proxy
属性绕过。 - 关键属性:
subreddit
,style
(vertical-list
,horizontal-cards
,vertical-cards
),show-thumbnails
(仅 vertical-list),show-flairs
,limit
,collapse-after
,sort-by
(hot
,new
,top
,rising
),top-period
(当 sort-by 为 top 时),search
,extra-sort-by
(engagement
),comments-url-template
,request-url-template
(自定义请求 URL 模板,用于代理),proxy
(HTTP/S 代理设置)。
-
Search (搜索):
- 显示一个搜索框,可在多种搜索引擎或自定义站点搜索。
- 关键属性:
search-engine
(预设引擎名或自定义 URL 模板{QUERY}
),new-tab
(默认新标签页打开),autofocus
,placeholder
,bangs
(定义快捷方式,如!yt
搜索 YouTube)。 - 支持键盘快捷键 (S 聚焦, Enter 搜索, Ctrl+Enter 新标签页搜索, Esc 取消聚焦, Up 历史查询)。
-
Group (分组):
- 将多个小部件组织在一个带标签页的部件中。
- 关键属性:
widgets
(在此定义要分组的部件)。 - 限制: 不能在 Group 部件内嵌套 Group 或 Split Column 部件。
- 技巧: 可使用 YAML 锚点 (
&
定义,*
引用) 共享部件属性。
-
Split Column (分列):
- 将一个
full
尺寸列水平分割成两半,并排放置部件。在移动端或宽度不足时自动变为单列。 - 关键属性:
widgets
(在此定义要并排的部件)。 - 可用于创建更复杂的布局,如等宽 3 列、4 列或瀑布流。
- 限制: 不能在 Group 部件内嵌套 Split Column 部件。
- 将一个
-
Custom API (自定义 API):
- 从 JSON API 获取数据,并使用自定义模板展示。
- 要求: 需要一定的编程、HTML/CSS、Go 模板及 GJSON 知识。
- 关键属性:
url
,headers
,method
(GET, POST 等),body-type
(json
,string
),body
,template
(Go HTML 模板),frameless
(移除边框和内边距),allow-insecure
(忽略证书错误),skip-json-validation
(用于 JSON Lines),parameters
(附加到 URL 的查询参数),subrequests
(并发执行额外的 API 请求并在模板中通过.Subrequest "key"
访问)。
-
Extension (扩展):
- 显示由外部源 (第三方) 提供的部件。
- 关键属性:
url
(扩展的 URL),headers
,parameters
(传递给扩展的查询参数),allow-potentially-dangerous-html
(允许执行 HTML,危险,请确保来源可信),fallback-content-type
。
-
Weather (天气):
- 显示指定地点的天气信息 (数据源: open-meteo.com)。
- 关键属性:
location
(城市, 国家 - 可指定州名区分同名城市),units
(metric
摄氏度 /imperial
华氏度),hour-format
(12h
/24h
),hide-location
,show-area-name
。 - 界面显示温度曲线、日出日落、降水概率。
-
Monitor (监控):
- 显示一组网站/服务的可达性状态 (通过 GET 请求检查 200 状态码) 及响应时间。
- 关键属性:
sites
(站点列表),style
(compact
),show-failing-only
。 sites
下属性:title
,url
(点击跳转的 URL, 也是默认检查 URL),check-url
(可选, 专门用于状态检查的 URL),error-url
(可选, 错误时跳转的 URL),icon
(图标 URL, 支持/assets/
,si:simple-icons
,di:dashboard-icons
),allow-insecure
,same-tab
(是否同标签页打开),alt-status-codes
(视为正常的其他状态码)。
-
Releases (发布):
- 显示 Github, GitLab, Codeberg, Docker Hub 仓库的最新发布版本。
- 关键属性:
repositories
(仓库列表, 格式:owner/repo
或带前缀gitlab:
,codeberg:
,dockerhub:
),show-source-icon
,token
(Github API Token),gitlab-token
,limit
,collapse-after
。 - 支持 Docker Hub 官方镜像 (
dockerhub:nginx
) 和指定标签 (dockerhub:nginx:stable-alpine
)。 - 支持为 GitHub 仓库单独配置
include-prereleases: true
。
-
Docker Containers (Docker 容器):
- 显示 Docker 容器的状态、图标和描述。
- 要求: 需要访问
docker.sock
(容器部署时需挂载卷)。 - 配置方式: 通过给 Docker 容器打标签 (Labels) 来配置显示内容。
- 关键属性 (Widget):
hide-by-default
(是否默认隐藏所有容器),sock-path
。 - 关键标签 (Container Labels):
glance.name
,glance.icon
,glance.url
,glance.description
,glance.hide
,glance.same-tab
,glance.id
(父容器 ID),glance.parent
(子容器指向的父容器 ID, 用于分组)。
-
DNS Stats (DNS 统计):
- 显示来自 AdGuard Home 或 Pi-hole 的统计数据。
- 关键属性:
service
(adguard
,pihole
v5-,pihole-v6
),url
,username
(AdGuard 必需),password
(AdGuard, Pi-hole v6+ 必需),token
(Pi-hole v5- 必需),allow-insecure
,hide-graph
,hide-top-domains
,hour-format
。
-
Server Stats (服务器状态):
- 显示本地或远程服务器的 CPU、内存、磁盘使用率等。(远程需运行 Glance Agent)
- 注意: 此部件仍在开发中。
- 关键属性:
servers
(服务器列表)。 - 服务器属性 (
local
或remote
):type
,name
,hide-swap
。 - 本地服务器 (
local
) 附加属性:cpu-temp-sensor
(指定温度传感器),hide-mountpoints-by-default
,mountpoints
(配置要显示的挂载点及其名称/隐藏状态)。 - 远程服务器 (
remote
) 附加属性:url
(Agent 地址),token
,timeout
。
-
Repository (仓库):
- 显示 Github 仓库的基本信息、最新 PR、Issue 和 Commit。
- 关键属性:
repository
(owner/repo
),token
(Github API Token),pull-requests-limit
,issues-limit
,commits-limit
(设置为 -1 不显示)。
-
Bookmarks (书签):
- 显示分组的链接列表。
- 关键属性:
groups
(分组列表)。 - 分组属性:
title
,color
(HSL),links
(链接列表),same-tab
(应用于组内所有链接),hide-arrow
,target
。 - 链接属性:
title
,url
,icon
(支持/assets/
,si:
,di:
),same-tab
,hide-arrow
,target
(覆盖分组设置)。
-
ChangeDetection.io:
- 显示来自 changedetection.io 实例的监控项列表。
- 关键属性:
instance-url
,token
(API Token),limit
,collapse-after
,watches
(可选, 指定要显示的监控项 UUID 列表)。
-
Clock (时钟):
- 显示当前时间和日期,可选显示其他时区时间。
- 关键属性:
hour-format
(12h
/24h
),timezones
(时区列表, 包含timezone
标识符和可选的label
)。
-
Calendar (日历):
- 显示一个日历视图。
- 关键属性:
first-day-of-week
(一周起始日, 如monday
,sunday
)。
-
Calendar (legacy) (旧版日历):
- 已弃用。 显示一个简单的日历。
- 关键属性:
start-sunday
(是否周日开始)。
-
Markets (市场):
- 显示股票/加密货币等市场行情 (数据源: Yahoo Finance),包括价格、日涨跌幅和小图表。
- 关键属性:
markets
(市场列表),sort-by
(排序方式:change
,absolute-change
),chart-link-template
(图表链接模板),symbol-link-template
(代码链接模板)。 - 市场属性:
symbol
(代码),name
,symbol-link
(覆盖模板),chart-link
(覆盖模板)。
-
Twitch Channels (Twitch 频道):
- 显示指定 Twitch 频道的直播状态。
- 关键属性:
channels
(频道用户名列表),collapse-after
,sort-by
(viewers
,live
)。
-
Twitch Top Games (Twitch 热门游戏):
- 显示 Twitch 上观众最多的游戏/分类。
- 关键属性:
exclude
(要排除的分类 slug 列表),limit
,collapse-after
。
-
iframe:
- 嵌入一个 iframe 页面。
- 关键属性:
source
(URL),height
(高度, 像素)。
-
HTML:
- 直接嵌入自定义 HTML 代码。
7. 总结
本文介绍了如何使用 Docker Compose 搭建 Glance 平台,并提供了详细的配置和使用说明。通过 Docker 容器化的方式,Glance 可以轻松地部署和管理,并为用户提供高效、便捷的信息聚合平台。无论是技术开发者还是信息管理人员,Glance 都是一个不可或缺的工具,帮助用户实现个性化的 RSS 订阅和内容展示。
参考文献
- "Docker 官方文档", Docker Inc. https://docs.docker.com/
- "Docker Compose 安装文档", Docker Inc. https://docs.docker.com/compose/install/
- "Glance 项目主页", Glance. https://github.com/glanceapp/glance
本文作者: 永生
本文链接: https://yys.zone/detail/?id=399
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
发表评论
评论列表 (0 条评论)
暂无评论,快来抢沙发吧!