介绍和准备

RSS的英文全称是RDF Site Summary或Really Simple Syndication,简单来说它是对网站内容的简易信息聚合,它已经是20多年前的产物了。在算法推荐流行的现在,使用RSS的群体很小,但是它能帮你更好的打破信息茧房,推荐你去尝试一下。在这里不多做关于RSS的介绍,有兴趣的可以点这里形象的了解一下RSS。

SGReader

在这篇教程里我们会先后安装Docker,RSSHub,宝塔面板,FreshRSS, 最后会设置在Reeder App上使用我们搭建的RSS。安装过程实现于2022年2月。

安装之前,需要准备一个Linux主机,在这里我用的是阿里云的云服务器,配置是2vCPU和2GB内存,系统是Ubuntu 20.04,推荐你使用至少2G内存的主机,1GB的也可以,只是会麻烦些多出一些设置。当然你也可以使用你自己的电脑或者家用主机,树莓派也是一个不错的选择。如果你想有更好的使用体验,最好也购买或者准备一个域名。如果你的云服务器内存不足2GB,那么推荐你使用Debian系统,这样系统占用内存会少一些,后面的命令和操作同样适用于Debian。

提示:根据我2023年最新的尝试,我认为1Panel面板比宝塔面板优秀流畅透明的多,推荐使用开源的1Panel面板。如果你恰好有自己的VPS,那么可以尝试使用1Panel面板来搭建FreshRSS服务(步骤与宝塔面板都是类似的)。如果你想白嫖和便捷,使用Fly.io来部署是当前更推荐的选择。

提示:我更新了一篇的新的博客,介绍了如何使用Fly.io免费部署FreshRSS Docker服务,点击这里查看。该部署方法十分快捷简单,推荐查看一下。当然,下面的部署方法也依然是可行的。你可以根据自己的情况以及需求选择哪种部署方式。

安装和设置过程

Docker

ssh远程登录云服务器,更新以及安装Docker:

# 更新
$ sudo apt update && sudo apt upgrade 

# 安装Docker
$ curl -sSL https://get.docker.com | sh

# 添加用户到Docker Group
$ sudo usermod -aG docker ${USER}

# 检查用户组
$ groups ${USER}

# 允许Docker服务容器开机启动
$ sudo systemctl enable docker

# 运行Hello World示例容器检查是否安装成功
$ docker run hello-world

RSSHub(可选)

RSSHub是一个开源的RSS生成器,你可以用来生成维护你自己的RSS订阅源。如果你只订阅第三方的RSS源,那么你可以不安装RSSHub。网上可以找到不少免费优质的第三方订阅源,可以满足我们大部分的需求,我会附在教程最后。如果你想生成你自己的订阅源,比如你想及时的食用某个人的微博,哔哩哔哩的某个番剧,Youtube频道的更新,telegram群组的消息等,那么安装RSSHub将是一个很好的选择,因为追踪这些的很多第三方渠道会经常被毙掉,这时候自己的RSS源就很可靠了。

RSSHub的部署很简单,我们依然是在Docker上进行安装。还是进入我们的云服务器:

# 下载 RSSHub 镜像
$ docker pull diygod/rsshub

# 在端口1200 运行 RSSHub,你也可以定义其他端口。容器服务会开机自动启动
$ docker run -d --restart=always --name rsshub -p 1200:1200 diygod/rsshub

# 检查正在运行的容器
$ docker ps

容器启动之后,在浏览器种打开 http://云服务器的IP:1200/ ,(记得在云服务器安全组设置允许端口1200),你会看到Welcome to RSSHub的界面,具体使用可以看RSSHub的指南。

宝塔面板

不同于传统命令行,宝塔面板可以让我们通过交互界面来完成的服务器的运维工作,比如更新系统,搭建添加备份网站,修改设置,方便很多。

宝塔面板

我们依然是在Docker中安装宝塔面板,注意中文的宝塔面板在使用时需要用中国手机号码注册。宝塔面板有对应的英文版本aaPanel, 具体安装使用几乎一样。如果你使用的是树莓派做服务器,那么宝塔面板有对应的ARM64的Docker版本,前提是你的树莓派需要安装64位的系统。制作这个教程时,我安装的宝塔面板版本是7.7.0

进入我们的云服务器:

# 拉取btpanel的lnmp镜像
$ docker pull btpanel/baota:lnmp

# 启动运行容器。并设置此容器服务开机自动启动
$ docker run -d --restart unless-stopped --name baota --net=host -v ~/website_data:/www/wwwroot -v ~/mysql_data:/www/server/data -v /vhost:/www/server/panel/vhost btpanel/baota:lnmp

# 检查正在运行的容器
$ docker ps

宝塔面板的默认端口是8888,在浏览器中打开 http://云服务器的IP:8888/btpanel,(记得在云服务器安全组设置允许端口8888和后面要更改的默认端口),默认用户名和密码是btpanel和btpaneldocker。进入宝塔面板界面后,首先进入面板设置,修改默认端口和默认用户名密码。其他设置可以参考这里

接下来,为了通过Docker宝塔面板部署FreshRSS,我们需要修改一些宝塔面板的默认软件版本。

添加虚拟内存(可选)

如果你的云服务器内存是1GB,那么你需要添加swap虚拟内存,(因为后面安装的php fileinfo组件有内存要求)。在宝塔面板界面,点击软件商店,搜索并安装“Linux工具箱”,安装好后,点击Linux工具箱右侧的设置,选择Swap/虚拟内存,添加Swap 1500~2000 MB。为了有更多的空闲内存,前面也推荐小内存的云服务器使用Debian系统。如果你的云服务器内存大于等于2GB,那么不需要添加虚拟内存,忽略上述操作。

更换PHP版本

在宝塔面板界面,点击软件商店,搜索已安装的php,我们首先卸载默认安装的php版本,然后再软件商店里再次安装php,选择版本7.1(因为兼容性,所以选择了这个版本),安装好后点击php右侧的设置,选择安装扩展,找到fileinfo(FreshRSS的要求)选择安装,你会看到这里描述需要内存大于1G(我们前面设置虚拟内存的原因),如果安装fileinfo不成功,那么就多试几次。

fileinfo

在php的管理设置界面,点击配置文件(php.ini),搜索openlog,在disabled_functions中删除openlog然后保存,重启php服务。这是为了避免后面安装FreshRSS的一个小bug。

openlog

在宝塔面板界面,点击文件,选择根目录,双击进入其中的“bt.sh”文件,修改php-fpm-xx为php-fpm-71,然后在面板首页选择重启面板。

更换MySQL版本

在宝塔面板界面,点击软件商店,搜索已安装的MySQL,版本如果是5.7以下,那么我们先要卸载MySQL,然后在软件商店里再次安装MySQL,选择版本5.7。其实目前5.6版本的也是可以的,但5.7及以上可以提供更好的表现和兼容性。如果你想使用不在这个服务器上的远程数据库,那么这一步可以跳过,甚至可以卸载宝塔默认安装的MySQL。

添加FreshRSS

添加设置站点

在宝塔面板界面,点击网站,选择添加站点-创建站点,域名处填写 云服务器IP:80,(如果你打算使用域名,那么填写http://你购买的域名;如果也用了https/ssl,那么填写https://你购买的域名);数据库选择MySQL,填写并记住你想要的数据库账号和密码;php版本选择7.1,然后点击提交创建。如果你想使用https,宝塔面板-网站界面,可以让你方便的添加ssl证书。

添加站点

这时候你在浏览器中打开你前面填写的域名,你应该可以看到默认的网站界面(记得在云服务器安全组设置允许端口80和443),那么说明网站已经初步建立成功。当然如果你前面填写的是你购买的域名,那么你还需要在你的域名提供商网站进行DNS设置,把你的云服务器IP添加到域名的A记录。

下载上传FreshRSS

FreshRSS是一个开源的RSS内容聚合订阅器,功能类似于多年前已经退役的Google Reader,功能丰富,使用方便。你可以点击这里先试用体会一下FreshRSS。

FreshRSS logo

首先去Github下载FreshRSS的最新稳定版本。在宝塔面板界面,点击网站,再点击网站根目录,删除所有默认的文件,然后把下载好的FreshRSS源文件上传到此根目录。

网站目录

初始化设置网站

在浏览器中打开 http://云服务器IP:80http://云服务器IPhttp://你的域名https://你的域名 (取决于你设置),这时候应该可以看到FreshRSS的初始化安装界面。

第一步是语言选择,选择你想用的语言即可,之后也可以随时更改。

第一步

第二步你可以看到FreshRSS要求的组件全部显示ok,如果你前面的设置没问题的话。

第三步设置数据库,数据库选择MySQL, Host填写127.0.0.1,Database username/password 和 Database按照前面添加站点时候的设置填写,如果忘了可以去 宝塔面板-数据库 那边查看, Table prefix可以不填写。如果你使用远程数据库,那么就填写远程数据库的host/用户名/密码/仓库名。

第三步

第四步添加你想设置的管理员用户密码,授权方式选择Web Form即可。点击提交,即可看到安装成功的提示。

添加定时更新任务

现在我们需要为FreshRSS设置自动刷新拉取订阅,要不然我们每次都要麻烦地手动刷新。

在宝塔面板界面,点击计划任务,添加计划任务,任务类型是"shell脚本",输入任务名称,执行周期可选择"N分钟"“30分钟”(意味着每三十分钟刷新一次,你也可以定义你想要的频率),脚本内容是:

$ php /www/wwwroot/你的FreshRSS源文件夹目录/app/actualize_script.php > /tmp/FreshRSS.log 2>&1
计划任务

然后保存编辑,这样你的FreshRSS就会每半个小时自动刷新订阅。

登录你的FreshRSS

现在在浏览器中打开 http://云服务器IP:80http://云服务器IPhttp://你的域名https://你的域名 (取决于你设置),你应该可以看到你的FreshRSS的登录界面了,输入你设置的管理员用户和密码进行登录。

设置和使用FreshRSS

登录进入FreshRSS主界面后,右上角有个齿轮,点击它进行相关的设置,你可以自己探索一下。挑几个重要的说一下,在配置-显示里设置显示语言和更改主题。在管理-用户管理这里添加新用户(只有管理员账户可以执行该操作),你可以为你的朋友和家人设置普通用户,让他们也可以有一个独立账户使用RSS。

允许API访问

管理-认证这里,选择“允许API访问(用于手机应用)”,然后点击提交。提交完之后,点击用户账户,你会看到下方有一个API管理,输入你想设置的API密码,你会看到下方有一个api的网址提示,比如 http://你的云服务器IP/p/api/ 或者 https://你的域名/api/ , 有了这个API网址和密码,你就可以在其他RSS阅读器(比如Reeder app)上登录你的账户进行阅读。

api

在Reeder上使用FreshRSS服务

除了在浏览器上使用FreshRSS,我们也可以在移动端使用RSS阅读器。其中Reeder是我用过的最满意的一款RSS阅读工具app(下载需要几块钱的收费),但是它只在苹果设备上提供,安卓上也有类似的app,我们这里以Reeder来举例。

Reeder

下载好Reeder之后,打开Reeder,点击右上角的+号,进入添加账户界面,拖到最下面有一个FreshRSS选项,选择之后进入服务器设置界面。Server处填写 http://你的云服务器IP/p/api/greader.php 或者 https://你的域名/p/api/greader.php (你可以在网页版FreshRSS-设置-用户管理-API管理处查看对应的API网址,也支持api/fever.php);User处填写你的用户名;Password处填写你设置的API密码。最后点击Sign in,之后会跳出来一个设置界面,建议勾选Mark as Read on Scroll。然后你就可以愉快的进行使用Reeder了。

Reeder login

一些推荐的订阅源(附录)

在FreshRSS的网页界面,点击左上的订阅管理进行添加删除导入导出订阅。除了可以添加在自己搭建的RSSHub上的源,还有很多优质的第三方订阅源供我们选择,另外在RSSHub的官网也有大量的订阅源可以选择。在这里我附上一些我常用的第三方订阅源网站:

  1. FeedX, 优秀。
  2. plink anyfeeder, 优秀。
  3. RSS Source, 提供一些优质小众的订阅源。
  4. WhereMyLife
  5. 中文独立博客列表
  6. kindle4rss

上面的源选择数量其实已经很大了,应该可以满足我们大部分的需要。除了在初次使用的时候我们要进行订阅管理,以后不定期的最好也去添加一些新的源,删除一些失效的源以及自己不想看的源,这样来慢慢迭代,丰富/简化我们的信息源。

祝您食用愉快~