自从 Google Reader 养成 RSS 习惯以来,开始用 Feedly,后来因为有些源更新有问题,就换成了 Inoreader,即使有很多广告我也一直在用,毕竟这种网站确实盈利困难。可现在国内访问 Inoreader 都得翻墙,实在是很麻烦,干脆自己部署吧。

之前也搭过 Tiny Tiny RSS,还写了一篇 用TinyTinyRSS打造自己的Reader。所以我首先就测了 Tiny Tiny RSS,结果不如人意,还不如当年的版本好用。都这么多年了还是 bug 一堆,比如如何显示已读文章和没有未读文章的源设置,根本就是乱七八糟。还有快捷键的翻译,一眼看过去就是错误。自动刷新源的设置虽然简单,但还是要搜索才知道,然而设置里面还有一个没用的更新时间选项。我换了几个推荐主题,结果全部界面变得乱七八糟,懒得去找原因了,删掉。

还有 Miniflux,不过我看了下阅读界面,不是传统的 RSS 阅读界面,所以就没试了。

后来就试了 FreshRSS,感觉不错:
GitHub 项目地址:https://github.com/FreshRSS/FreshRSS

新建站点

FreshRSS 安装要求比较低,一种部署方式是直接上传安装包,一般的虚拟主机或 VPS 都能搭,另一种部署是 Docker,这就要求 VPS 至少 1G 内存,恰好我没有啊。
我的 VPS 安装的宝塔面板,所以首先去域名 DNS 解析一个新网址,然后在宝塔里用该网址新建站点,MySQL 数据库(我只安装了这一个数据库),顺便 SSL 证书也一起申请了。
还有一个问题,PHP 得安装 Fileinfo 扩展,其实这个扩展 Tiny Tiny RSS 也是需要的。宝塔面板安装扩展还是很简单的,提示不足 1G 内存易失败,还好我的没有啊。

部署 FreshRSS

首先到 https://github.com/FreshRSS/FreshRSS 下载安装包。
上传到新建站点下解压缩,在浏览器输入访问网址,和一般的网站搭建一样,一步一步按照要求填写。

问题

1.openlog 报错

1
Warning: openlog() has been disabled for security reasons in /www/wwwroot/rss.mianao.info/lib/lib_rss.php on line 15

/www/server/php/70/etc/php.ini 打开 php.ini 文件到 299 行:

1
disable_functions = passthru,exec,system,chroot,chgrp,chown,shell_exec,popen,proc_open,ini_alter,ini_restore,dl,syslog,openlog,readlink,symlink,popepassthru

删除 openlog, 就好了(有人说 syslog 也删除,但我搭建时没提示这个错误,删了也没关系,这只是禁用功能模块选项,删了等于打开了开关)。
然后重启 PHP(可在宝塔面板重启,也可以用命令)。

2.更新 feed
我采用插件的方式解决更新源文章,下载扩展 Auto Refresh
将解压后的 xExtension-AutoRefresh 文件夹放到 /www/wwwroot/rss.mianao.info/extensions 目录下。
到 FreshRSS 设置-> 扩展启用就好了。
默认是 1 分钟刷新一次,想修改可以到 xExtension-AutoRefresh/static/script.js 打开这个 js 文件,里面是 60000,单位应该是 ms。

更新及手机客户端

手机客户端我用的 FeedME,API 支持 fever 和 greader。TT RSS 要安装 fever 插件才支持,而 FreshRSS 则自带。
FreshRSS 设置->用户账户->API 管理,设置访问密码。
打开链接 https://域名/p/api/ 可以看到两种 API 链接,选择一个填写。

1
2
http://域名/p/api/fever.php
http://域名/p/api/greader.php

用户名是 FreshRSS 的登录名,密码是前面设置的访问密码。