一个页面看遍所有信息流:Glance 个人仪表盘自托管避坑指南
2026-08-16 · DevCraft Studio
想用一台月付几块钱的小机搭出清爽的信息聚合主页?这篇手把手教你在便宜 VPS 上用单 YAML 部署 Go 写的 Glance,聚合 RSS、Hacker News、Docker 状态、服务器资源和天气,并对比 Homer/Dashy 的轻量优势,避开中文教程常漏的坑。
延伸阅读
更多相关攻略推荐:2026 VPS 选购决策树与白皮书:一张图看懂怎么买、如何给 VPS 厂商做"信用评估":跑路、超售与售后风险排查手册、【网盘密码 02】用便宜 VPS 自建私人网盘:Nextcloud 、【10刀以内VPS系列 01】年付不到70块钱的便宜VPS,到底能用、【隐私分析 01】GA4 隐私替代方案 2026:Plausible。
为什么选 Glance:一个页面看遍所有信息流
如果你和我一样,每天要打开十几个标签页看 RSS、刷 Hacker News、盯盯自己服务器和 Docker 容器,你会发现时间全花在"切换"上。Glance 就是来解决这个问题的:它用一块 Go 编译出来的单二进制程序,在网页上把这些信息流全摆在一个页面里,左边日历天气、中间 Hacker News 和 RSS、右边 Docker 容器状态和服务器资源占用。打开浏览器就是你的"每日简报"。
最关键的一点是它真的轻。Glance 没有数据库、没有迁移、没有首次启动向导,容器起来几秒钟就能访问。官方仓库已经 34k+ stars,2026 年更新依旧活跃。对比那些动辄几百 MB 内存的同类面板,Glance 在 1GB 内存的小机上跑得舒舒服服,这也是它特别适合便宜 VPS 的原因。像 RackNerd、Cloudcone 这种常年打折的高内存机型,甚至 Virtono、Contabo 的入门款,都能轻松扛住。换句话说,你手里那台吃灰的月付小机,正好能派上用场,不用为它再单独开一台服务器。
准备工作:一台便宜小机就够了
说实话,Glance 对硬件几乎没要求。我实测下来,一个运行中的容器常驻内存大约在 20MB 上下,CPU 基本是 0%。官方也说它是 low memory usage、few dependencies。所以你完全不需要什么豪华机器。
- 内存:512MB 就能跑,但建议选 1GB 起步的机型,给系统和 Docker 留点余量。RackNerd 的 1GB 套餐、Cloudcone 的按量小机都很合适。
- 硬盘:Glance 不写数据库,配置加缓存顶多几十 MB,5GB 硬盘足矣。
- 系统:任意带 Docker 的 Linux 发行版都行,Ubuntu 22.04 / Debian 12 最省心。
- 前置依赖:装好 Docker 和 Docker Compose 即可,没别的。
如果你刚买机器还没装 Docker,一条命令搞定:curl -fsSL https://get.docker.com | sh,装完别忘了 systemctl enable --now docker。Virtono 和 Contabo 的镜像一般自带 Docker,但保险起见自己确认一下版本。再啰嗦一句选型:Glance 不吃配置,所以与其追高主频,不如挑内存和带宽划算的机型。RackNerd 年付几刀的 1GB 套餐、Cloudcone 的按量计费小机都是经典选择;Virtono 在欧洲节点延迟低,Contabo 的德国大硬盘款则适合顺手把 Glance 和别的自建服务放一台。无论选哪家,记得在安全组里只放行 22 和你要用的面板端口,其余一律关掉,别给扫描器留门。
还有一个新手常问的问题:到底用不用固定版本号?我的习惯是生产环境把镜像写成 glanceapp/glance:latest 之外,偶尔锁一个具体 tag,比如 glanceapp/glance:v0.8.5,这样上游发版不会悄悄改了你的布局。Glance 的 YAML schema 一向稳定,但锁版本能让更新可控,出问题也知道回退到哪一版。写进 compose 后,升级只需 docker compose pull && docker compose up -d。
用 Docker Compose 三行命令拉起
Glance 官方最推荐的姿势是用 docker-compose-template 那个目录模板,我更喜欢自己写最小化的 compose,更清楚每一步在干嘛。先建个目录:
mkdir -p ~/glance && cd ~/glance
然后新建 docker-compose.yml,内容就这几行:
services:
glance:
image: glanceapp/glance
container_name: glance
restart: unless-stopped
volumes:
- ./glance.yml:/app/glance.yml:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "8080:8080"
注意我挂载了 /etc/localtime 这一行,很多中文教程都漏了它。Glance 的 RSS 时间会显示"2 小时前"这种相对时间,如果不挂时区文件,它会用 UTC 算,你看到的更新时间会差八个小时,体验很割裂。挂上之后一切以你服务器时区为准。
启动就一句:docker compose up -d。没有数据库迁移、没有 seed 数据,几秒后访问 http://你的服务器IP:8080 就能看到默认示例页。看日志用 docker compose logs -f glance。第一次起来如果打不开,先确认防火墙放没放行 8080;云厂商的安全组是独立于系统防火墙的,两边都要查。本机可以用 curl -I http://127.0.0.1:8080 验证服务本身活着,再逐步往外排错,别一上来就怪 Glance。默认示例页已经带了日历、RSS、天气和股市的小组件,你可以先感受一下布局,再对照下一节的 YAML 把它换成自己的信息源。
核心:一个 YAML 搞定所有小组件
Glance 的全部逻辑都写在 glance.yml 这一个文件里,结构是 pages → columns → widgets 三层。每个页面可以分若干列,列有 small / full / large 几种宽度,列里再塞各种 widget。下面是我自己常用的首页配置,直接抄改即可:
pages:
- name: Home
columns:
- size: small
widgets:
- type: weather
location: Beijing, CN
units: metric
- type: server-stats
- size: full
widgets:
- type: hacker-news
- type: rss
limit: 12
feeds:
- url: https://selfh.st/rss/
- url: https://www.jeffgeerling.com/blog.xml
- size: small
widgets:
- type: docker-containers
- type: markets
markets:
- symbol: BTC-USD
name: 比特币
widget 类型很全:RSS、Hacker News、Lobsters、Reddit 帖子、天气、YouTube、Twitch、股市行情、Docker 容器、服务器状态、日历、时钟、GitHub Releases 等等,加起来 30 多种。你完全可以按自己口味增删列和 widget,改完 docker compose restart glance 即时生效,不用重建镜像。
关于 RSS 这块多说两句:每个 rss widget 可以挂多个 feeds 源,limit 控制总条数,collapse-after 决定折叠到第几条之后,配合 cache: 12h 还能减少重复抓取、对源站更友好。如果你的订阅源很多,建议拆成两三个 widget 分列摆放,比塞进一个长列表好读。天气 widget 的 location 填城市名加国家代码即可,比如 Shanghai, CN,units: metric 用公制;股市 markets 里既能填 BTC-USD 这种加密对,也能填 AAPL、NVDA 这类股票代码,开盘时段实时刷新。
主题也不用愁。Glance 在 glance.yml 顶层用 theme 字段就能改背景色、主色和对比度,例如 theme: { background-color: 20 20 22, primary-color: 80 160 240 },三个数字是 HSL 分量,随手调就能配出暗色护眼风。社区还有现成主题和 preconfigured pages 可以直接抄,想深度美化再写 assets/user.css 覆盖样式即可,不写也完全能看。
资源监控与 Docker 容器状态
自托管玩家最关心的两块——服务器资源和容器健康——Glance 都有现成 widget。 server-stats 会直接画出 CPU、内存、硬盘的占用条,纯前端读取,不依赖任何 agent。docker-containers 则会列出本机容器,显示 running / exited 状态和运行时长,点开还能看日志入口。
这里有个坑:默认情况下 Glance 读的是容器内部的 Docker 资源,如果你的 Glance 跑在独立 compose 里,它读不到宿主机其他容器的状态。解决方法有两种:要么把 Glance 和其他服务放同一个 Docker 网络;要么把宿主机的 /var/run/docker.sock 只读挂进 Glance 容器(- /var/run/docker.sock:/var/run/docker.sock:ro),这样它就能看到全局容器列表。生产环境建议用只读挂载,别给写权限。
想监控对外服务是否在线?用 monitor widget,给一组 URL 做 HTTP 探活,返回绿黄红状态。配合 Uptime Kuma 的状态页 API 还能拿到真实响应时间,比裸 ping 有用得多。如果你的 Glance 和 Uptime Kuma 在同一个 Docker 网络,直接用容器名当主机名即可,跨机就用内网 IP 或 Tailscale 地址,简单可靠。
中文圈最容易踩的三个坑
- 时区错位:上面说过,漏挂
/etc/localtime会让所有相对时间差八小时。这是中文教程最高频的遗漏。 - 配置缩进报错:YAML 对缩进零容忍,
pages/columns/widgets三层必须严格对齐,复制别人配置时最容易因为空格/制表符混用而启动失败。报错看docker compose logs里的 YAML parse 信息即可定位。 - 端口被占:8080 是很多面板的默认端口,如果你机器上已经跑了 Homer 或 Dashy,记得把 Glance 映射到别的端口,比如
8888:8080,别硬刚。 - 公网裸奔:前面强调过,Glance 无鉴权,图省事直接映射公网等于把服务器状态贴上网。要么套 Basic Auth,要么放进 Tailscale,二选一,别裸奔。
另外提醒一句:Glance 默认没有任何鉴权。如果你要把它暴露在公网,务必在前面套一层 Nginx 加 Basic Auth 或放到 VPN / Tailscale 内网,否则你的服务器状态、RSS 订阅源就全裸奔了。Contabo、Virtono 这类机器默认只给公网 IP,安全组记得只放行必要端口。
Glance vs Homer vs Dashy:轻量在哪
很多人第一次搭面板会纠结选哪个,我直接给结论:
- Homer:纯静态书签式起始页,配置最简单,但本质是"链接收纳",几乎不拉实时信息流,想看 RSS 得自己拼。
- Dashy:功能最全的 Vue 面板,widget 库庞大、可主题化,但体积也最大,内存占用明显更高,配置 schema 升级时偶尔会 breaking。
- Glance:Go 单二进制,启动快、内存低、YAML 稳定,天生为"信息聚合流"设计,默认颜值就高。代价是 widget 数量没 Dashy 多、没有自动服务发现。
所以结论很清楚:如果你要的是"一个页面看遍所有信息流",Glance 是最契合的;如果你要的是"服务导航 + 一堆自定义卡片",再去考虑 Dashy。对便宜小机用户来说,Glance 的省资源特性几乎是无脑选。