订阅技术博客,本来是为了把主动权拿回来:哪些作者值得读,由自己决定。可订阅多了,侧栏里不断增长的未读数又会变成另一种催促。FreshRSS 是一个可以自己部署的 RSS 聚合阅读器,最近一轮更新里,它既照顾了这种阅读压力,也补上了自托管服务必须正视的安全细节。
9 月 9 日发布的 1.30.0 增加了隐藏未读数量徽标的选项,并支持只刷新当前视图中的订阅。紧接着,北京时间 10 月 6 日凌晨发布的 1.30.1 继续修补安全问题,同时修复订阅抓取中的异常处理。对已经部署的人来说,这是一次具体的维护提醒;对新读者而言,它也提供了一个重新整理信息入口的机会。

RSS 的使用逻辑并不复杂。阅读器从订阅地址抓取更新,把不同网站的内容汇聚到一处,保存阅读状态。FreshRSS 把这件事放在自有服务里完成,再提供网页入口。它适合持续跟踪相对固定的信息源,而不是承诺替读者发现互联网里所有值得看的东西。信息源选得好不好,仍然取决于订阅者自己的判断。
我很喜欢隐藏未读数字这个小改动。数字可以帮助定位积压,也可能把阅读误导成一场清零比赛。关闭徽标之后,文章仍然可以保留未读状态,只是不必每次打开页面都先看到一串“欠账”。对每周才集中阅读一次的人,工具应该允许这种节奏,而不是默认所有内容都必须立即处理。
分类和查询则帮助读者缩小当前关注的范围。工作日只看某一组项目更新,周末再看长文,比所有订阅混在一起更容易保持注意力。1.30.0 对当前视图刷新和筛选的改进,正好沿着这个方向推进。

自托管阅读器还有一个容易被忽略的角色:它是代表用户向外请求内容的服务。所以 1.30.0 默认禁止访问本地网络,是值得关注的行为变化。原来订阅内网服务的人,升级后可能需要为确有需要的目标设置允许范围,而不能把“抓不到”一概当成软件失灵。对普通公网订阅来说,这层限制则是在收紧不必要的访问能力。
1.30.1 继续处理账号禁用后的令牌访问、自更新操作的请求校验等问题,也修复了域级 Retry-After 和已经返回 HTTP 410 的订阅处理。它们不直接改变阅读器的外观,却决定一套长期运行的服务是否能正确对待权限和失败。看到这样的更新,我更愿意把升级当成日常维护,而不是只有新增漂亮功能才去做。
官方 Docker 文档提供了部署和命令行管理方式。对于已经使用默认 Debian 镜像、容器名为 freshrss 的实例,可以用下面这条命令查看用户列表,确认自己正在维护哪个实例:
docker exec --user www-data freshrss cli/list-users.php
这条命令要求容器已经运行;若使用 Alpine 镜像,执行用户应按文档改为 apache。新部署可以从官方说明进入安装流程,个人使用也可以选择内置 SQLite。订阅和阅读记录要长期留下来,就应保存好数据目录,并在升级前做好备份。
FreshRSS 不会绕过网站的付费墙,也不能保证每个网站都提供完整订阅正文。愿意维护一个小服务、希望把长期关注的作者集中起来的人,会更容易感受到它的价值;只想随手刷推荐流的人,未必需要增加这份维护工作。
我希望阅读器留下的是值得再次打开的文章,而不是一张永远还不完的未读账单。项目地址在 GitHub:https://github.com/FreshRSS/FreshRSS
|