# Fusion - 开源、轻量、自建友好的 RSS 聚合阅读器

**URL:** <https://meta.appinn.net/t/topic/59698>\
**Category:** 发现频道\
**Tags:** appinned\
**Created:** [2024 年8 月 8 日 08:09 UTC](https://meta.appinn.net/t/topic/59698 "2024-08-08T08:09:01Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

作者： ![yuan\_dev](https://meta-edge.appinn.com/letter_avatar_proxy/v4/letter/y/8baadc/32.png) [@yuan\_dev](https://meta.appinn.net/u/yuan_dev)\
发布日期： [2024 年8 月 8 日 08:09 UTC](https://meta.appinn.net/t/topic/59698/1 "2024-08-08T08:09:01Z")

</div>

[![](https://h1.appinn.net/file/9a9cb77eb38f53eb32a44.png) ](https://h1.appinn.net/file/9a9cb77eb38f53eb32a44.png)

地址：[GitHub - 0x2E/fusion: A lightweight, self-hosted friendly RSS reader](https://github.com/0x2E/fusion) 。

## 为什么又一个 RSS 阅读器

RSS 是我每日信息输入的主要方式。过去很长一段时间，我喜欢在家中的 Homelab 部署本地服务代替云服务，比如用 miniflux 代替 Feedly、Inoreader。

但是跨城市搬家导致 Homelab 长时间吃灰，这让我意识到需要将一些服务部署到 VPS/PssS 来确保可用性。VPS 的内存可谓寸土寸金，而 miniflux 需要额外运行 PostgreSQL 数据库服务。为了尽可能节省资源，我决定用 Go + SQLite 写一个轻量级 RSS 聚合器+阅读器（SQLite 是一个嵌入式数据库，不需要运行额外的服务）。

## 功能和特点

- 分组、书签、搜索、自动嗅探、导入导出 OPML
- 支持 RSS、Atom、JSON 格式的订阅源
- UI 移动端友好，亮/暗模式，支持 PWA
- 轻量且易部署，非常适合小 VPS
  - 使用 Go + SQLite 构建，一个二进制文件就能运行
  - 提供编译好的 Docker 镜像
  - 内存用量约 80MB（见下图）

[![](https://h1.appinn.net/file/a1a4ffbe5f0fcf073ecce.png) ](https://h1.appinn.net/file/a1a4ffbe5f0fcf073ecce.png)

---

<div class="post-metadata">

作者： ![llll](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/llll/32/57811_2.png) [@llll](https://meta.appinn.net/u/llll)\
发布日期： [2024 年8 月 8 日 08:24 UTC](https://meta.appinn.net/t/topic/59698/2 "2024-08-08T08:24:23Z")

</div>

让俺来试试看

---

<div class="post-metadata">

作者： ![llll](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/llll/32/57811_2.png) [@llll](https://meta.appinn.net/u/llll)\
发布日期： [2024 年8 月 8 日 08:42 UTC](https://meta.appinn.net/t/topic/59698/3 "2024-08-08T08:42:03Z")

</div>

跑起来了

[![](https://h1.appinn.net/file/e1bce635f00dc1308d2ce.png) ](https://h1.appinn.net/file/e1bce635f00dc1308d2ce.png)

另外有两个问题，一是不能自己阅读全文，得跳转原地址  
二是是否可以设置代理

---

<div class="post-metadata">

作者： ![llll](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/llll/32/57811_2.png) [@llll](https://meta.appinn.net/u/llll)\
发布日期： [2024 年8 月 8 日 08:43 UTC](https://meta.appinn.net/t/topic/59698/4 "2024-08-08T08:43:10Z")

</div>

还有一个就是是否考虑汉化 :smiling_face_with_tear:

---

<div class="post-metadata">

作者： ![yuan\_dev](https://meta-edge.appinn.com/letter_avatar_proxy/v4/letter/y/8baadc/32.png) [@yuan\_dev](https://meta.appinn.net/u/yuan_dev)\
发布日期： [2024 年8 月 8 日 08:58 UTC](https://meta.appinn.net/t/topic/59698/5 "2024-08-08T08:58:56Z")

</div>

1. 目前只使用 RSS 中给的内容。“抓取全文”未来可能会做 （[Issues · 0x2E/fusion · GitHub](https://github.com/0x2E/fusion/issues/6%EF%BC%89)
2. 代理在每个订阅源的设置中的 Proxy 字段

---

<div class="post-metadata">

作者： ![yuan\_dev](https://meta-edge.appinn.com/letter_avatar_proxy/v4/letter/y/8baadc/32.png) [@yuan\_dev](https://meta.appinn.net/u/yuan_dev)\
发布日期： [2024 年8 月 8 日 09:04 UTC](https://meta.appinn.net/t/topic/59698/6 "2024-08-08T09:04:26Z")

</div>

UI 里的文字不多，也都是常见单词，所以就没考虑 i18n。

已经加进需求中了（第 10 个 issue，这里发不出来链接）。

---

<div class="post-metadata">

作者： ![llll](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/llll/32/57811_2.png) [@llll](https://meta.appinn.net/u/llll)\
发布日期： [2024 年8 月 8 日 09:17 UTC](https://meta.appinn.net/t/topic/59698/7 "2024-08-08T09:17:07Z")

</div>

好嘞

---

<div class="post-metadata">

作者： ![Qingwa](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/qingwa/32/58632_2.png) [@Qingwa](https://meta.appinn.net/u/Qingwa)\
发布日期： [2024 年8 月 16 日 14:16 UTC](https://meta.appinn.net/t/topic/59698/8 "2024-08-16T14:16:58Z")

</div>

现在是根据 feed 来排序？

能不能混起来，根据时间来排序？

---

<div class="post-metadata">

作者： ![yuan\_dev](https://meta-edge.appinn.com/letter_avatar_proxy/v4/letter/y/8baadc/32.png) [@yuan\_dev](https://meta.appinn.net/u/yuan_dev)\
发布日期： [2024 年8 月 16 日 14:29 UTC](https://meta.appinn.net/t/topic/59698/9 "2024-08-16T14:29:35Z")

</div>

现在是根据时间排序的呀

---

<div class="post-metadata">

作者： ![Qingwa](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/qingwa/32/58632_2.png) [@Qingwa](https://meta.appinn.net/u/Qingwa)\
发布日期： [2024 年8 月 16 日 14:31 UTC](https://meta.appinn.net/t/topic/59698/10 "2024-08-16T14:31:17Z")

</div>

我添加了三个 feed，结果是一个一个单独排序的

[![](https://h1.appinn.net/file/8b83c3281e00310ae1b79.jpg) ](https://h1.appinn.net/file/8b83c3281e00310ae1b79.jpg)

---

<div class="post-metadata">

作者： ![Qingwa](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/qingwa/32/58632_2.png) [@Qingwa](https://meta.appinn.net/u/Qingwa)\
发布日期： [2024 年8 月 16 日 14:45 UTC](https://meta.appinn.net/t/topic/59698/11 "2024-08-16T14:45:31Z")

</div>

另外求个传统快捷键，之后就…比较完美了。

---

<div class="post-metadata">

作者： ![yuan\_dev](https://meta-edge.appinn.com/letter_avatar_proxy/v4/letter/y/8baadc/32.png) [@yuan\_dev](https://meta.appinn.net/u/yuan_dev)\
发布日期： [2024 年8 月 16 日 15:02 UTC](https://meta.appinn.net/t/topic/59698/12 "2024-08-16T15:02:59Z")

</div>

感谢反馈。

目前的排序逻辑是先根据获取数据的时间，再根据文章发布时间（RSS 中的 pubDate）。初衷是让新 feed 的文章，即使是旧文章，也能排在 unread 中靠前位置。这样比较符合直觉。

可以想象一下这种反直觉的情况：

1. 此时 unread 堆积了一些 feed 近期发布的文章；
2. 用户添加一个新 feed，其中包含一些 n 年前的旧文章；
3. 添加成功，去 unread 看看；
4. 奇怪，为什么 unread 中没有新 feed 的文章（其实是旧文章根据 pubDate 被排序到了 unread 的末尾页）。

我再想下这部分可以怎么做得更好。欢迎提出建议。

---

<div class="post-metadata">

作者： ![yuan\_dev](https://meta-edge.appinn.com/letter_avatar_proxy/v4/letter/y/8baadc/32.png) [@yuan\_dev](https://meta.appinn.net/u/yuan_dev)\
发布日期： [2024 年8 月 16 日 15:04 UTC](https://meta.appinn.net/t/topic/59698/13 "2024-08-16T15:04:11Z")

</div>

传统快捷键是指哪些呢，“ctrl/cmd + k” 触发“搜索”这种吗？

---

<div class="post-metadata">

作者： ![Qingwa](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/qingwa/32/58632_2.png) [@Qingwa](https://meta.appinn.net/u/Qingwa)\
发布日期： [2024 年8 月 16 日 15:04 UTC](https://meta.appinn.net/t/topic/59698/14 "2024-08-16T15:04:39Z")

</div>

我觉得就是 Google Reader 快捷键 :joy:

---

<div class="post-metadata">

作者： ![yuan\_dev](https://meta-edge.appinn.com/letter_avatar_proxy/v4/letter/y/8baadc/32.png) [@yuan\_dev](https://meta.appinn.net/u/yuan_dev)\
发布日期： [2024 年8 月 16 日 15:09 UTC](https://meta.appinn.net/t/topic/59698/15 "2024-08-16T15:09:52Z")

</div>

感谢建议，已记录到 [feat: shortcuts · Issue #11 · 0x2E/fusion · GitHub](https://github.com/0x2E/fusion/issues/11)

---

<div class="post-metadata">

作者： ![Qingwa](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/qingwa/32/58632_2.png) [@Qingwa](https://meta.appinn.net/u/Qingwa)\
发布日期： [2024 年8 月 16 日 15:10 UTC](https://meta.appinn.net/t/topic/59698/16 "2024-08-16T15:10:22Z")

</div>

呃不是发不出，是被认定了 spam…

现在应该好了。

---

<div class="post-metadata">

作者： ![yanbodestroyer](https://meta-edge.appinn.com/letter_avatar_proxy/v4/letter/y/65b543/32.png) [@yanbodestroyer](https://meta.appinn.net/u/yanbodestroyer)\
发布日期： [2024 年8 月 17 日 04:13 UTC](https://meta.appinn.net/t/topic/59698/17 "2024-08-17T04:13:46Z")

</div>

可否添加fever或者Google reader的api，这样就可以在reeder上阅读了

---

<div class="post-metadata">

作者： ![yuan\_dev](https://meta-edge.appinn.com/letter_avatar_proxy/v4/letter/y/8baadc/32.png) [@yuan\_dev](https://meta.appinn.net/u/yuan_dev)\
发布日期： [2024 年8 月 17 日 05:11 UTC](https://meta.appinn.net/t/topic/59698/19 "2024-08-17T05:11:20Z")

</div>

目前其实也可以作为 reader 用的。试试 PWA 模式：

1. 用 Chromium 家族的浏览器（比如 Chrome、Edge、Brave）打开网站；
2. 安装到本机
  - 移动端浏览器的三个点 → 添加到主屏幕；
  - 桌面端浏览器地址栏右侧应该也会有个图标提示安装到本地；

3. 之后的使用体验就跟 App 类似了。

至于联动其他 reader 服务，目前还没有开发计划。之后有时间我再看看 miniflux 集成了哪些。

---

<div class="post-metadata">

作者： ![yuan\_dev](https://meta-edge.appinn.com/letter_avatar_proxy/v4/letter/y/8baadc/32.png) [@yuan\_dev](https://meta.appinn.net/u/yuan_dev)\
发布日期： [2024 年8 月 17 日 06:12 UTC](https://meta.appinn.net/t/topic/59698/20 "2024-08-17T06:12:47Z")

</div>

感谢建议。

1. 过度工程化。这段写了挺多又删掉了。层主可以跟其他软件工程师、 RSS 用户或 HomeLab 玩家讨论一下你的想法；
2. 目前可以针对每个 feed 设置代理；
3. “过早优化是万恶之源”。数据库性能完全不是问题，即使是 SQLite 加一个不好用的 ORM;
4. 前几个月简单 launch 过一次，也上过 HN 的首页，我个人比较满足了。UI 众口难调，“精装型”的 Feedly 和 “毛坯型”的 Miniflux 我都用过一年以上，这两个完全不同的风格都没有影响效率和阅读体验。Fusion 我也尽可能地保持简洁直观，并且从前两者中吸取好的部分，比如 Feedly 的抽屉和浮动操作键、Miniflux 的极简列表和布局。但迫于个人设计能力欠缺，部分页面交互，比如 feed 管理页面，确实还有很大优化空间，正在尝试重构。

---

<div class="post-metadata">

作者： ![yhlfh](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/yhlfh/32/57882_2.png) [@yhlfh](https://meta.appinn.net/u/yhlfh)\
发布日期： [2024 年8 月 17 日 23:02 UTC](https://meta.appinn.net/t/topic/59698/21 "2024-08-17T23:02:20Z")

</div>

N年miniflux用户来说下。我是从miniflux 1版用上来的，到现在还在用着1的最后一个版本。那个只要php sqlite，任何虚拟主机都能跑。去年我用的主机商跑路了，就移到了nas上，到现在还没有动力去升级2.0版。

[下一页](https://meta.appinn.net/t/topic/59698.md?page=2)
