Tiny Tiny RSS - 专属于你的RSS服务

随着信息爆炸,我们的碎片化时间变得捉襟见肘,式微很久的RSS,凭借其高效管理、获取信息的能力,再次映入了我的眼帘,但市面上目前仍提供服务的RSS服务屈指可数,对于爱折腾的我而言,搭建自己专属的RSS服务或许也是不错的选择。

背景&介绍

继续上面的话题,诚然微博、微信爆炸式的信息流、几乎实时的信息传递,都把有限、定时刷新的RSS完爆,但是RSS在信息越发爆炸的现下,拥有不可取代的优点:

  • 分类信息来源,管理信息来源;
  • 去除冗余信息,专注于文字和图片等;
  • 信息存档,避免信息被淹没;
  • 为你的信息获取增加仪式感(所谓的高逼格;

起先我想要尝试miniflux这款程序,教程:https://www.miaomiaomiao.org/6366.html
但是其实在不久之前,我刚刚在“少数派”上看到了关于Tiny Tiny RSS的教程:https://sspai.com/post/41302
所以有点先入为主的感觉,因此最终还是选择部署Tiny Tiny RSS
“少数派”上的教程是基于Docker的,诚然正如其作者所言:它既具有虚拟机方式安装软件的一些长处,如对安装和卸载对宿主系统影响小、软件之间相对隔离、安全性佳等,又保留了普通方式安装软件的优点,如资源消耗较小、软件间通信较为方便等。
不过我还是打算old school一些,按照官方的文档,用老方法部署一番。
对了,如果你也使用Docker部署,或许这篇教程你也需要一看,作者在转载的同时,也对Docker部署提出了自己的改进:
《Electronic Moon 电子月亮 - 如何搭建属于自己的 RSS 服务,高效精准获取信息》


Tiny Tiny RSS(也可简称TT-RSS)

项目主页: https://tt-rss.org/
优点/特性:

  • 可自定义同步间隔;
  • 订阅源管理便捷、支持导入OPML;
  • 可自定过滤规则;
  • 安装主题/插件非常简单;
  • 有中文版本,可惜不完全;
  • 最重要的:目前仍处于比较活跃的开发中;

开始部署

环境要求

PHP 5.4 或以上;
PostgreSQL(9.1 或以上)或者 MySQL(必须支持InnoDB, TT-RSS不支持MyISAM);
此外,我在实际安装中,遇到了错误提示:

PHP function mime_content_type() is missing, try enabling fileinfo module.

如果你也遇到这一问题,可以参考:《手动为已编译的PHP加入fileinfo扩展模块》

官方部署文档

https://git.tt-rss.org/git/tt-rss/wiki/InstallationNotes


下载程序并开始安装

在想要安装TT-RSS的网站根目录,执行git clone:

git clone https://tt-rss.org/git/tt-rss.git tt-rss

访问TT-RSS安装程序:

http://yoursite/tt-rss/install/

你会看到如下的安装界面:

tt-rss-2.png

填写完成后就会自动生成config.php的代码,你可以选择由安装程序自动生成config.php文件,或者自己复制后手动生成config.php文件。

对于该文件,通常我们不需要进行额外的参数设置,不过如果你需要加入邮件提醒、用户注册等功能,可以参考其中的注释,自己进行参数设置。

至此,TT-RSS其实已经安装完成了!


配置自动更新

官方文档:https://git.tt-rss.org/git/tt-rss/wiki/UpdatingFeeds
在这里,我采用了第二种方法,即crontab的方式。
这里需要注意的是更新脚本文件update.phpupdate_daemon2.php不能由root用户来执行,可以通过apache或者Nginx的运行用户来执行,如apache或者www等。
比如我们为www用户加入crontab

crontab -u www -e

添加如下内容:

*/30 * * * * /usr/local/php/bin/php /data/wwwroot/安装TT-RSS的目录/update.php --feeds --quiet

需要注意的是:

  1. 上方的/usr/local/php/bin/php也可能为/usr/bin/php,具体以你实际为准;
  2. 同时也要注意上文提到的config.php中的路径需与上面统一;
  3. */30 * * * *代表每30分钟执行一次更新,你也可以按自己需求设定其他间隔。

使用&设置

tt-rss-3.png

以上完成后,我们像正常访问网站一样打开TT-RSS,默认账户密码:

username: admin, password: password

首次登录后请及时修改密码。同时建议创建新的使用者账户作为日常使用,与管理员账户隔开。


安装主题

Tiny Tiny RSS安装主题非常简单,只需将CSS文件放入themes目录下,并在后台进行选择即可。
目前看到仿Feedly和仿Google Reader的这两款主题比较受到大家欢迎:

tt-rss-feedly-theme
https://github.com/levito/tt-rss-feedly-theme
clean-greader
https://github.com/naeramarth7/clean-greader

以安装tt-rss-feedly-theme为例,先下载主题:

wget https://github.com/levito/tt-rss-feedly-theme/archive/master.zip

解压缩:

unzip master.zip

复制主题至themes子目录:

cp tt-rss-feedly-theme-master/feedly.css /themes
cp tt-rss-feedly-theme-master/feedly /themes

而后我们至后台启用即可。


拓展

以下拓展的解释来自:http://ju.outofmemory.cn/entry/39790

  • af_unburn:解决feedburner等rss链接跳转;
  • bookmarklets:在设置-信息源生成bookmarklets标签;
  • embed_original:图标插件,点击图标会显示文章原始内容,而不是rss;
  • fever:模拟fever api,在设置-Fver
    Emulation,设置好密码,可以和tt-rss的登录密码不同,然后就能支持fever的客户端比如reeder、Mr. Reader;
  • ff_feedcleaner:feed广告过滤,在设置标签生成FeecCleaner标签,过滤规则要用正则表达式,比较复杂;
  • googlereaderkeys:模拟google reader快捷键,如J、K等;
  • import_export:在设置-信息源,导入导出配置;
  • mail:图标插件,点击通过邮件分享;
  • mark_button:文章右下角能够快速将文章标记为已读未读;
  • mobilize:图标插件,点击显示readability简化的页面;
  • note:图标插件;
  • nsfw:根据标签隐藏文章内容;
  • share:图标插件,点击生成唯一的url方便分享;
  • swap_jk:添加j、k快捷键,类似vim;

配置 RSS 全文输出

以下内容来自:https://sspai.com/post/41302
很多网站之所以不欢迎 RSS,一个主要的原因就是提供 RSS 会分走主站的流量;因此,一些网站即便保留了 RSS 订阅源,也做得十分「不情不愿」,只「抠门」地给出前两三段的内容,要看全文还得跳转到网站才行。这显然会破坏 RSS 的阅读体验。于是,获取全文的功能就显得十分必要了;很多 RSS 服务或客户端也将其作为 Premium 订阅的卖点之一。不过,通过 Tiny Tiny RSS,我们同样可以免费实现这一效果。

事实上,Tiny Tiny RSS 原本已经内置了基于 Readability 的全文输出服务,但可惜这家服务在前段时间已经跑路,关闭了 API 接口,我们只能另请高明。目前,比较好的替代方案是Mercury,这也是 Reeder、Unread 等主流 RSS 阅读器在近期更新中改用的方案。

首先,Mercury 的全文输出服务是免费的,但需要配合 API 密钥使用,这可以在注册后在其网站的 Web Parser 页面看到:
https://mercury.postlight.com/web-parser/

接着,为 Tiny Tiny RSS 安装全文输出插件,其方法与安装主题完全相同,直接复制到plugins子目录即可:

git clone https://github.com/WangQiru/mercury_fulltext.git
cp mercury_fulltext /plugins

安装后,到 Tiny Tiny RSS 的设置页面中启用名为mercury_fulltext的插件。这时,在设置页面的 Feeds 选项卡下,就会多出一个该插件的设置区域。我们将之前获得的 Mercury API 密钥填入文本框中,并点击 Save 保存配置。

tt-rss-4.png

完成上述准备工作后,就可以针对特定的订阅源启用全文输出了。方法是:在订阅源管理中,点击需要获取全文的订阅源,在弹出的 Edit Feed 对话框中,勾选 Plugins 选项卡中的 Get fulltext via Mercury Parser。


至此,Tiny Tiny RSS就已经部署完成并且可以很好地进行使用了,如果你需要使用过滤功能,以及希望添加更多客户端支持,可以继续参考:https://sspai.com/post/41302
本文参考链接:
https://sspai.com/post/41302
http://ju.outofmemory.cn/entry/39790

Last modification:November 15th, 2017 at 10:27 pm
Feel free to contact me or leave a comment

10 comments

  1. kangbo

    有商业的用着感觉比自建的方便多了。

  2. yiyi

    你还,很多网站不支持rss输出怎么办,比如少数派,爱范儿等,有什么好的办法没,在ttrss添加订阅元源的搜索框中直接输入网站url,提示没有订阅源,但是在feedly中可以直接使用url搜索到的

    1. YorkChou
      @yiyi

      少数派和爱范儿的RSS都是在网址后面加/feed
      ttrss确实在这方面还有不足,暂时我只能靠人工补足

  3. wuceyi

    已经确认了,直接执行命令就可以 /usr/bin/php /var/www/html/update.php --feeds --quiet,就是crontab的方式不行,crontab进程也在。我google也有不少这个问题

    1. YorkChou
      @wuceyi

      噗 那要不试试官方提供的其他方法吧

  4. wuceyi

    crontab的方式无法自动更新

    1. Aaron
      @wuceyi

      /30 * /usr/local/php/bin/php (你的PHP路径)/data/wwwroot/安装TT-RSS的目录/(你的tiny tiny rss路径)update.php --feeds

    2. YorkChou
      @wuceyi

      实测可以噢,注意crontab的执行用户,另外后台设置的更新频率也要与之匹配

      1. wuceyi
        @YorkChou

        我用的是非root账户,也改成了我的ttrss的实际路径,后台设置的也是30分钟

        1. YorkChou
          @wuceyi

          再确认一下PHP的路径对不对,我这边这样设置下来完全没问题~

Leave a Comment