惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

B
Blog
The Cloudflare Blog
J
Java Code Geeks
Apple Machine Learning Research
Apple Machine Learning Research
T
Tailwind CSS Blog
L
LangChain Blog
Recent Announcements
Recent Announcements
Hugging Face - Blog
Hugging Face - Blog
Microsoft Security Blog
Microsoft Security Blog
F
Fortinet All Blogs
Microsoft Azure Blog
Microsoft Azure Blog
V
V2EX
I
InfoQ
博客园 - 司徒正美
T
The Blog of Author Tim Ferriss
G
Google Developers Blog
云风的 BLOG
云风的 BLOG
aimingoo的专栏
aimingoo的专栏
小众软件
小众软件
H
Help Net Security
博客园 - 三生石上(FineUI控件)
S
SegmentFault 最新的问题
B
Blog RSS Feed
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派
再次折腾 RSS 之搭建 FreshRSS 服务 - 少数派
2020-12-29 · via 少数派

为什么要自己搭建 RSS 服务

在 2020 年的今天,各种推荐算法和信息流已经很完善了,而选择使用 RSS 这种获取信息的方式,一方面是为了不陷入推荐算法的信息茧房,另一个原因是为了能够无障碍获取到外文信息。

在云服务器价格基本上算是白菜价的今天,拥有一台属于自己的云主机已经非常容易;另外,选择国外大部分云主机,随之附送的是通畅的网络,可以自由的获取信息。

今天我们讨论的就是通过国外云主机,通过搭建 RSS 平台来无障碍获取外文信息。

为什么选择 FreshRSS

因为目前使用的 RSS 阅读器是 Reeder,而 Reeder 支持的自建 RSS 服务只剩下了 FreshRSS 和 Google Reader API 以及 Fever(Reeder 不推荐),综合社区活跃度、第三方 App 支持程度、上手难度以及灵活性,最终选择了 FreshRSS。

安装

我们只是为了方便的获取信息,所以所有步骤都按照最简单的方式来做。

这里选择 Docker 方式来部署 FreshRSS,部署简单,快速可用。

安装前需要准备的环境有:

  • 一个 Linux 主机
  • Docker / Podman
  • 域名
  • FreshRSS

安装 Docker

首先,SSH 登录 Linux 主机,安装 Docker:

$ curl -fsSL https://get.docker.com/ -o get-docker.sh   # 下载安装脚本
$ sh get-docker.sh  # 执行安装脚本,需要 root 权限

安全起见,不建议使用 root 用户运行 Docker,这时就需要把普通用户加入到 Docker 用户组,然后通过普通用户运行(如果一直使用 root 用户的话可略过这一步):

$ usermod -aG docker your-username  # 需要 root 用户权限

然后退出重新登录,这时普通用户就可以执行 Docker 命令了。

验证 Docker 是否成功安装,输入 docker run helloworld

$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
0e03bdcc26d7: Pull complete
Digest: sha256:1a523af650137b8accdaed439c17d684df61ee4d74feac151b5b337bd29e7eec
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

这时 Docker 便安装成功并可以使用了。

安装及运行 FreshRSS

首先创建虚拟网络:

$ docker network create freshrss-network

建议:使用 Traefik 反向代理平台,可以自动申请 Let'sEncrypt 的 SSL 证书,增加网络安全性。

搭建 traefik 以及 Let's Encrypt:

  • 在 DNS 服务商提前将(子)域名配置到主机所在 IP

首先创建准备环境

$ docker volume create traefik-letsencrypt
$ docker volume create traefik-tmp

然后运行 Traefik、Let'sEncrypt:

$ docker run -d --restart unless-stopped --log-opt max-size=10m \
  -v traefik-letsencrypt:/etc/traefik/acme \
  -v traefik-tmp:/tmp \
  -v /var/run/docker.sock:/var/run/docker.sock:ro \
  --net freshrss-network \
  -p 80:80 \
  -p 443:443 \
  --name traefik traefik:1.7 --docker \
  --loglevel=info \
  --entryPoints='Name:http Address::80 Compress:true Redirect.EntryPoint:https' \
  --entryPoints='Name:https Address::443 Compress:true TLS TLS.MinVersion:VersionTLS12 TLS.SniStrict:true TLS.CipherSuites:TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA' \
  --defaultentrypoints=http,https --keeptrailingslash=true \
  --acme=true --acme.entrypoint=https --acme.onhostrule=true --acme.tlsChallenge \
  --acme.storage=/etc/traefik/acme/acme.json --acme.email=your-email@example.net
# 最后的 your-email@example.net 需要修改为自己的 email 地址

运行 FreshRSS

首先为 FreshRSS 创建数据保存位置:

$ docker volume create freshrss-data
$ docker volume create freshrss-extensions

接着运行 FreshRSS:

$ docker run -d --restart unless-stopped --log-opt max-size=10m \
  -v freshrss-data:/var/www/FreshRSS/data \
  -v freshrss-extensions:/var/www/FreshRSS/extensions \
  -e 'CRON_MIN=4,34' \
  -e TZ=Asia/Shanghai \
  --net freshrss-network \
  --label traefik.port=80 \
  --label traefik.frontend.rule='Host:freshrss.example.net' \
  --label traefik.frontend.headers.forceSTSHeader=true \
  --label traefik.frontend.headers.STSSeconds=31536000 \
  --name freshrss freshrss/freshrss

其中:

-e 'CRON_MIN=4,34'  设置定时刷新
-e TZ=Europe/Paris  设置时区
--net freshrss-network  设置 FreshRSS 使用的网络为之前创建的 freshrss-network
--name freshrss freshrss/freshrss   Docker 容器命名
--label*    配置和 traefik 相关的参数,如果不需要 traefik 可以删除,并且替换为如下参数:
-p 8080:80 \    表示 FreshRSS 将运行在 Docker 容器内的 80 端口,以及映射到外部的 8080 端口

基本使用

配置

FreshRSS 安装完成即可使用。通过浏览器访问 https://ip(没有配置 SSL 打开 http://ip:8080/),如图:
 


语言选择中文,点击提交并进入下一步,选择默认参数即可。在常规配置处创建第一个用户(默认也是管理员用户),认证方式保持默认,方便在 Reeder 中使用:
 


一切安装完成,就可以进入下面的界面:
 


点击右上角的齿轮图表进入管理-系统设置,可以进行更详细的配置:

  • 管理-系统配置-实例名称:自定义该系统的名称
  • 管理-用户管理:管理用户,包括创建、删除、修改密码等
  • 管理-认证:配置认证方式。打开允许 API 访问 (用于手机应用)以便在 Reeder 等第三方阅读器中使用
  • 配置-用户账户:可修改当前用户密码,以及*API 管理(在 Reeder 中登录时使用的口令)

其他配置按照个人需要修改,如主题等。修改完成点击底部提交按钮生效。

导入及管理

如果之前使用的是类似 Feedly 的平台,可以通过导出 opml 格式的订阅源信息,将自己的订阅源导出,再导入 FreshRSS 中。

在首页的订阅管理处,点击导入/导出
 


选择需要导入的订阅源文件,点击导入,等待片刻,原本的订阅源便导入了 FreshRSS 中。

单独添加订阅源也很方便,点击Add a feed or category,在Add a feed处添加订阅源即可:
 

上方的Add a category用于添加分类。

添加后会跳转到订阅源的详细信息,其中包括基本设置、信息过滤及归档设置、信息展示设置等:
 

此时重新回到首页可以看到订阅信息已经刷新出来:
 

第三方客户端支持

Reeder 中可以直接添加 FreshRSS 的订阅源,添加完成后使用体验和 Feedly 是一样的。

点击添加账户,滑到最下方,找到 FreshRSS,点击进入添加界面:
 

输入服务器地址(域名或者IP)、用户名及密码(密码为之前用户设置中的 API 密码):
 

设置完成就可以看到订阅信息已经同步过来了:
 

现在我们已经搭建好了一个 RSS 平台(更像是 RSS 中转站),只要我们的云主机还能访问,我们就能够方便的通过 FreshRSS 获取互联网信息。