自行搭建Tiny Tiny RSS服务

也许很多90后压根不知道RSS服务是啥,简单来说,你浏览器的收藏夹里面收藏了很多技术站点、个人博客,你平时会一个一个的点开,看看哪位博友更新了博文,但很多站点没有更新,你浪费了时间,而且这种一个一个点开网站的方法感觉很原始。所以有了RSS服务,RSS服务会每天(自己设定时间间隔)去把你收藏夹里面的网站都看一遍,有更新的话,就给你推送到手机或者电脑。

如果你已经有一个正常运行的基于wordpress程序的站点,要再搭建一个RSS服务将非常简单。本文讲解搭建tiny tiny RSS(下文简称TTR)的方法。
我们知道,一个php站点要跑起来,需要各种PHP模块的支撑,现在我们的wordpress站点已经跑起来了,所以我们已经安装的PHP模块如下:

$ wp ext required
+-----------+-----------+
| extension | installed |
+-----------+-----------+
| curl      | 1         |
| date      | 1         |
| dom       | 1         |
| filter    | 1         |
| ftp       | 1         |
| gd        | 1         |
| hash      | 1         |
| iconv     | 1         |
| json      | 1         |
| libxml    | 1         |
| mbstring  | 1         |
| mysqli    | 1         |
| openssl   | 1         |
| pcre      | 1         |
| posix     | 1         |
| SimpleXML | 1         |
| sockets   | 1         |
| SPL       | 1         |
| tokenizer | 1         |
| xml       | 1         |
| xmlreader | 1         |
| zlib      | 1         |
+-----------+-----------+
Success: All required extensions are installed

然后我们去TTR官方查询其所需要的PHP模块,查询地址:https://tt-rss.org/wiki/PhpCompatibilityNotes
把所需要的模块跟上面的wordpress模块对比,发现少了Internationalization(intl)和 fileinfo
接着我们去当初安装php的源码目录里面执行命令:
./configure --help |egrep -i "(intl|fileinfo)"

[root@hqidi.com php-7.2.6]# ./configure --help |egrep -i "(intl|fileinfo)"
  --disable-fileinfo      Disable fileinfo support
  --enable-intl           Enable internationalization support

fileinfo的配置参数是--disable-fileinfo,说明这个参数默认是打开的,你配置的时候加了“--disable-fileinfo”,fileinfo模块才会被关闭,所以这个我们不用管。
intl的配置参数是--enable-intl,说明这个参数默认是关闭的,你配置的时候得特意加上“--enable-intl”,intel模块才会被启用。所以我们的重新配置PHP,在你原来配置参数的最后面加上“--enable-intl”重新配置PHP

./configure --prefix=/usr/local/php --enable-opcache --with-config-file-path=/usr/local/php/etc --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-fpm --enable-static --enable-inline-optimization --enable-sockets --enable-wddx --enable-zip --enable-calendar --enable-bcmath --enable-soap --enable-mbstring --with-zlib --with-iconv --with-gd --with-xmlrpc --enable-mbstring --with-curl --with-freetype-dir --with-mysql-sock=/var/lib/mysql/mysql.sock --with-jpeg-dir --with-png-dir --disable-ipv6 --disable-debug --with-openssl --disable-maintainer-zts --enable-intl

若配置的时候有ICU相关的报错,请执行 yum install libicu-devel -y 后继续配置,配置好后正常进行编译和安装,安装后etc目录里面的配置文件不会被覆盖。
总结来说,在你的wordpress站点正常情况下,你得添加一个intl模块,才能把TTR正常跑起来,接下来开始安装tiny tiny RSS

用nginx为tiny tiny RSS新建一个站点

配置文件如下,没有启用https的自行删除相关配置

upstream php {
        server unix:/usr/local/php/var/run/php-fpm.sock;
       }

server {
        listen       443 ssl http2;
        server_name  feed.141421.net;

        ssl_certificate      feed.141421.net.crt;
        ssl_certificate_key  feed.141421.net.key;

        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;
        root /data/rss;


        location / {
            index  index.php index.htm;
        }
        location ~ \.php$ {
           include fastcgi.conf;
           fastcgi_intercept_errors on;
           fastcgi_pass php;
                                                                        
																	
    }
}

下载tiny tiny RSS 安装文件

wget https://git.tt-rss.org/fox/tt-rss/archive/master.zip
mkdir /data/rss
unzip master.zip
mv tt-rss/* /data/rss/
chown -R www.www /data/rss  #这里的www是你用来跑php进程的用户,在php-fpm.conf里面配置的

为tiny tiny RSS新建一个数据库

登录到MySQL,执行如下命令

#新建一个名为ttrss的库
create database ttrss;
#新建一个名为ttr的,密码为1Jdma!22 的用户,这个等下要用到
grant all on ttrss.* to 'ttr'@'localhost' identified by '1Jdma!22';
#刷新权限使刚刚新建的用户生效
flush privileges;

安装tiny tiny RSS

添加好域名解析后,直接访问https://feed.141421.net 进入网页安装界面

安装tiny tiny RSS

照着刚刚我们在数据库里面新建的用户信息填就行了,若点击“Text configuration”,提示2002错误,就把Host name 的那个框里面改为127.0.0.1,没错的话点击红色的“Initialize database”初始化数据库按钮,然后点击“Save configuration”保存配置,最后点击下图的链接登录

用户名admin 密码password,请马上更改密码。请记得在偏好设置里面勾选上“启用API”允许外部客户端通过 API 来访问该账户,这样手机客户端才能正常连接我们搭建的RSS服务。

使用tiny tiny RSS

RSS更新

就是你派遣你服务器上的PHP程序去你喜欢的各个网站上看有没有更新的文章,有的话就抓下来,推送给你。用crond来实现
执行 crontab -e -u www (这里的www是你用来跑php进程的用户,在php-fpm.conf里面配置的)
然后写入:
7 4 * * * /usr/local/php/bin/php /data/rss/update.php --feeds >>/tmp/rss.txt
意思是每天的凌晨4点过7分让php程序去检查你订阅的站点是否有更新。

快捷订阅插件

看到自己喜欢的网站,靠眼睛去找订阅链接太低效,这里推荐一个chrome插件 RSSHub Radar
插件效果:

Android客户端

Android客户端推荐使用TTRSS Reader,下载地址 https://www.lanzous.com/b0to7va

界面非常直观干净

文章页效果

您的设备不支持Google play服务

在APP内点击“偏好设置”→“SSL设置”,把“使用Providerinstaller服务”后面的勾选取消,这样就不会弹出“您的设备不支持Google play服务”的提示。其他APP遇到此类问题也可以依样解决,把谷歌相关的功能关掉。

iOS客户端

iOS客户端推荐大名鼎鼎的Reeder,售价30元RMB,无内购无订阅。不过我们得在服务端装个插件,Reeder才能正常连接上我们搭建的RSS服务。

yum install git -y
cd /data/rss/plugins.local
git clone https://github.com/DigitalDJ/tinytinyrss-fever-plugin fever

这样插件就装好了,我们登录后台,偏好设置里面启用插件,然后设个密码就行了。

如图,先勾选上fever,然后点击下方的“Fever Emulation”设置一个密码。

手机上打开Reeder后,点击齿轮按钮→ Add Account → Fever
Server栏里面填:https://feed.141421.net/plugins.local/fever/
Email栏里面填: admin (也就是你登录TTRSS使用的账号)
Password里面填:你在上一步设置的密码

Reeder

阅读体验非常舒适,跟Safari的阅读器视图一样,有些小年轻的博客口味独特,博客背景用js搞得花里花俏,一打开他博客人就眼晕,电脑CPU就咆哮,有了这个以后就没上面的问题了。

RSS全文输出

一些网站管理员为了自己站点的PV数据更好看或者其他的原因,在feed中只提供了文章的摘要内容,想要看全文得通过浏览器跳转到网站,非常麻烦。对于这样的RSS源,我们可以安装Mercury插件让Tiny Tiny RSS实现全文输出。

安装Mercury全文输出插件

cd /data/rss/plugins
git clone https://github.com/WangQiru/mercury_fulltext.git

这样,Mercury插件就初步安装好了,此时我们得需要一个Mercury服务端,Mercury服务端搭建非常简单:

yum install docker -y
systemctl start docker
systemctl enable docker

docker run -d --restart=always --name fulltext -p 127.0.0.1:3000:3000 wangqiru/mercury-parser-api

着重解释下最长的那一行命令:
-d 参数会让容器在后台运行。
--restart=always 在这里,这个参数的作用是:当服务器重启后,docker服务启动后,自动运行本容器。
--name 就是给容器起个名字,方便管理
-p 网上的教程都是“-p 3000:3000” 这样的话,容器内的3000端口会映射到本地的所有网卡上面,带来安全隐患的同时也有可能被别人蹭用。所以最好加上“127.0.0.1”

配置Mercury全文输出插件

启用插件
Mercury_fulltext

填写全文输出服务端地址
Mercury_fulltext
这里就是我刚刚说的蹭用问题,如果你启动容器的时候没加上“127.0.0.1”,别人可以填你的外网IP加3000端口,来使用你搭建的Mercury全文输出服务。

针对没有全文输出的信息源配置
Mercury全文输出

附:
当你发现所有的订阅源都消失,此时,别慌,退出重新登录就正常了。

原创文章,转载请注明: 转载自笛声

本文链接地址: 自行搭建Tiny Tiny RSS服务

26 条评论

  • 大致 2019年10月22日 回复

    我用过。觉得其最大的缺点是慢。现在改用单机版的订阅工具了。

    • dige 2019年10月23日 回复 作者

      我用着不慢啊,因为订阅了一些打不开的站点,我的RSS服务器还在海外呢,速度一点都不慢。

      • 大致 2019年10月23日 回复

        我有300多个订阅。不同的分类之间切换的时候极慢。

  • 姜辰 2019年10月22日 回复

    这个。。。。。。我记得我用过一段时间,但是后面还是放弃了。

    好像https的站点无法订阅?还是啥原因来着。

    • dige 2019年10月23日 回复 作者

      https站点可以正常订阅,我订阅了一大堆

  • 灰常记忆 2019年10月22日 回复

    Ttrss以前安装成功过,昨天试了一下fileinfo模块无法开启。也是醉了!

    • dige 2019年10月23日 回复 作者

      你可以试试这个方法:https://yorkchou.com/php-fileinfo.html 按我文中的方法重新编译,很可能会出现内存不足的提示(1G内存情况下)

  • 浮游 2019年10月23日 回复

    不是90后不知道rss,多数90后接触互联网较早的还是知道的,反而现在00后很少知道rss的

  • 执迷不悟 2019年10月23日 回复

    docker才是最舒服的使用方法,当然前提是有一个VPS或者服务器。https://ttrss.henry.wang/zh/#%E9%80%9A%E8%BF%87-docker-compose-%E9%83%A8%E7%BD%B2

    • dige 2019年10月23日 回复 作者

      长期使用感觉还是直接装在服务器上面更好一些,不喜欢隔着一层东西

  • 心灵博客 2019年10月27日 回复

    今年好多装tt的,我也弄了个,跑了几个月,发现文章更新越来越少,断断续续折腾了好久,然后就不用了,再后来发现,其实没问题,是那些博主不怎么更新了。。

    • dige 2019年10月28日 回复 作者

      写博客的人越来越少了。

  • 沈唁志 2019年10月31日 回复

    我mac安装了rss的app,没用过几次。。。卸载了

  • 张波博客 2019年11月6日 回复

    你好,能请问下快速订阅的插件是哪个吗?

    • dige 2019年11月6日 回复 作者

      地址在这里:https://diygod.me/rsshub-radar/

      • 张波博客 2019年11月6日 回复

        感谢感谢,我来折腾折腾看

  • 青山 2019年11月23日 回复

    也许很多90后压根不知道RSS服务是啥
    ——00后的我都知道了

  • 跋涉者 2020年1月8日 回复

    我安装出现No input file specified.的错误,fileinfo等都安装了,郁闷死

  • 跋涉者 2020年1月11日 回复

    最后还是用freshrss了

  • wu先生 2021年9月12日 回复

    我也准备自己搭建一个。现在我一般都是从友情链接摸过去。

  • zhl 2022年5月31日 回复

    Mercury服务端搭建_这一步我没看懂。
    我是很多年前搭建好的tinyrss,由于不懂编程,升级后打都打不开。所以一直就没有动过,生怕再出问题。
    我试着直接安装yum install docker -y这一步,被告知There are no enabled repos.
    想请教您如何继续下去呢?

    • dige 2022年6月1日 回复 作者

      你可以先看看这个链接:https://developer.aliyun.com/mirror/docker-ce?spm=a2c6h.13651102.0.0.1f431b110sruam
      一般来说,你要执行的命令为:
      yum install -y yum-utils device-mapper-persistent-data lvm2
      yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
      sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
      yum makecache fast
      yum -y install docker-ce
      systemctl start docker
      systemctl enable docker
      docker run -d --restart=always --name fulltext -p 127.0.0.1:3000:3000 wangqiru/mercury-parser-api

  • zhl 2022年6月1日 回复

    我的是debian系统。忘了说了……

  • zhl 2022年6月2日 回复

    在我vps上存在tiny tiny rss的情况下,我如果想装一个docker的tiny tiny rss的版本,它们能共存吗?如果不能我就不折腾了

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

Copyright © 2015-2024 笛声博客 All Rights Reserved     浙ICP备15036123号-1