发现自己已经好长时间没事就喜欢刷知乎,或者刷豆瓣,而推荐给我的又都是什么结婚后是什么感受,离婚后是什么感受,处对象是什么感受。
这些东西,偶尔看看,能让自己在实际生活中注意,从而避免踩坑,维护家庭和谐当然是有好处的,但是天天看,最重要的作用大概就是杀时间了。
但生命转眼已经快过半,还是得把时间用在更有意义的地方才行。正好最近发现好些写博客的,觉得看了很有收获,那以后就看博客好了,最好是把所有信息都收集起来放在一个app里面看。一搜索,才发现这东西老早就有了,叫RSS,曾经google支持得很好,结果几年前直接把这个给关掉了。现在要用,最好就是自己搭建RSS服务器,找了半天,发现tt-rss应该普遍反映不错,不过官方文档写得实在儿戏,于是网上有了一堆乱七八糟的博客教怎么搭建tt-rss的。不过每个人安装tt-rss的时间不同,遇到的问题不同,总结的结论也不同,所以就有了这篇造轮子的文章。
这个安装大概分为服务器上的安装与安卓端安装,其中服务器端包括安装tt-rss,以及tt-rss的mercury_fulltext插件、fever插件,还有配合mercury_fulltext插件工作的mercury-parser-api,安卓端就比较简单了,只是找了好久也没找到中意的app,最后只能将就用了。
1.安装tt-rss
由于自己的服务器上搭建有博客系统,域名也只有1个,所以网上流传的docker安装方式不太喜欢,按我的理解,如果用docker在我的服务器上安装,大概得用不同的端口,这个让我很是不喜欢,于是就自己折腾怎么在nginx下面加一个location来解决,结果活活折腾了我两晚,要不是在外面出差,估计都不可能有两晚时间给我折腾。
好了,言归正传,还是说怎么安装折腾的吧。
1.1 服务器基本情况
ubuntu 18.04
nginx
typecho blog 系统,采用的nginx+php+sqlite
1.2 在服务器上安装php
此处的php指的是typecho 不需要而ttrss需要的各种模块,不过不管了,照着tt-rss的PhpCompatibilityNotes来安装就好。有一点小改动,我把其中的版本号去掉了,不然ubuntu18.04安装不过去。
sudo apt install php-cli php-curl php-mbstring php-json php-intl php-gd php-pgsql php-xml php-opcache
1.3 设置php
安装好之后发现是php7.2版本,然后还要稍微设置一下。
sudo vim /etc/php/7.2/fpm/php.ini
然后找到php.ini中的opcache部分,更改为下面这样就行
[opcache]
; Determines if Zend OPCache is enabled
opcache.enable=1
; Determines if Zend OPCache is enabled for the CLI version of PHP
opcache.enable_cli=0
1.4安装postgresql
sudo apt-get install postgresql
然后更改ubuntu系统中postgres用户的密码,更改postgresql数据库中管理员postgres的密码,然后在postgresql数据库中新建一个role,这个role的名字最好和运行php、nginx的ubuntu系统中的用户名相同(如果不同会有什么问题不太清楚,会不会有问题也不太清楚),然后把这个role的密码也修改了,然后用这个role创建一个数据库。具体流程命令如下。
- 更改ubuntu系统中postgres用户的密码
sudo passwd postgres
[sudo] password for ubuntu:
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
- 更改postgresql数据库中管理员postgres的密码
sudo su postgres -c psql
postgres=# \password postgres
Enter new password:
Enter it again:
上面的postgres=#是输入命令的提示符。
- 在postgresql数据库中新建一个role,此处role叫ttrss
postgres=# CREATE ROLE "ttrss" WITH CREATEDB LOGIN;
CREATE ROLE
然后是更改ttrss的密码,与前面一样。
- 用ttrss这个role创建一个数据库ttrss
我的搞法是这样的,先在ubuntu系统中创建一个ttrss用户,然后用这个用户登录到ubuntu,然后在命令行输入
createdb ttrss
1.5 配置nginx
我的nginx配置文件为/etc/nginx/sites-available/default,我的default文件如下。
## for ttrss
server {
listen 127.0.0.1:181;
root /var/ttrss;
index index.html index.htm index.php;
location ~ .*\.php(\/.*)*$ {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
if (!-f $document_root$fastcgi_script_name) {
return 404;
}
fastcgi_pass unix:/run/php/php7.2-fpm.sock;
fastcgi_index index.php;
include fastcgi.conf;
include fastcgi_params;
}
}
# Default server configuration
#
server {
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
root /var/typecho;
index index.html index.htm index.php;
server_name sanzhou.live;
ssl on;
ssl_certificate /etc/private/ttrss.crt;
ssl_certificate_key /etc/private/ttrss.key;
ssl_prefer_server_ciphers on;
ssl_dhparam /etc/certs/dhparam.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ".........";
keepalive_timeout 70;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
location / {
try_files $uri $uri/ =404;
}
#for ttrss
location ^~/ttrss/ {
proxy_pass http://127.0.0.1:181;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Ssl on;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Frame-Options SAMEORIGIN;
client_max_body_size 100m;
client_body_buffer_size 128k;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
#for typecho blog php
location ~ .*\.php(\/.*)*$ {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
if (!-f $document_root$fastcgi_script_name) {
return 404;
}
fastcgi_pass unix:/run/php/php7.2-fpm.sock;
fastcgi_index index.php;
include fastcgi.conf;
include fastcgi_params;
}
}
要注意3点,一是配置里面很多是我自己服务器对应的东西,需要对应修改,第二是里面的各个location顺序不能乱,第三个是"location ^~/ttrss/"中的^~这两个符号不能省略,这个和nginx中loation的执行顺序关系很大。后面两个注意点就是让我自己熬2个通宵的原因。
1.6 初始化ttrss
访问https://sanzhou.live/ttrss,第一次访问会直接到ttrss的安装界面,根据提示输入postgresql的用户名、密码,创建的数据库等,然后点初始化就可以了。
完了就可以登录了,访问https://sanzhou.live/ttrss,用户名输入admin,密码输入password,进去之后建议先修改密码。
到这一步基本就算完成了ttrss的安装过程,剩下的就是自己遇到有意思的rss往里面放就行了,也可以直接导入opml文件。
1.7 让ttrss自动隔1小时抓取一次rss内容
sudo crontab -u ttrss -e
#插入以下字符,路径按照你的实际路径修改,作用是每小时刷新一次RSS。
* */1 * * * php /home/wwwroot/ttrss.tstrs.me/update.php --feeds > /dev/null
sudo service cron restart
2.安装ttrss的插件
2.1 安装mercury-parser-api
按我的理解,这是一个可以将任何网上文章结构化抓取下来的一个网络服务,本来想直接在ubuntu下安装,发现各种错误,毫无头绪,后来就直接安装了docker,再用docker来安装运行这个网络服务了,整个命令如下:
sudo apt-get install docker docker-compose
sudo docker run -p 3000:3000 -d --restart=always wangqiru/mercury-parser-api
安装完成后,通过curl 139.162.77.179:3000命令能返回下面一行,就算成功了,其中ip地址是我杜撰的自己服务器的IP地址。
{"message":"Welcome to 🚀mercury-parser-api API! Endpoint: /parser"}
测试了下,这个docker 运行3000端口似乎只有本机能访问,应该还是比较安全的。
2.2 安装mercury_fulltext插件
之所以要装这个插件,是我订阅的rss中,有个大侠的rss只有前面一段短文,不给全篇文章,安装这个之后就可以自动把全篇文章给弄到rss上来了。
安装也简单,直接cd进入ttrss文件夹的plugins,然后输入这个命令
cd /var/ttrss/ttrss/plugins
git clone https://github.com/HenryQW/mercury_fulltext
完成了之后从浏览器登入https://sanzhou.live/ttrss,然后启用mercury_fulltext这个插件,完了在feeds的mercury_fulltext填上139.162.77.179:3000,然后对需要使用该插件的rss源右键进入编辑,然后插件选择使用mercury_fulltext就可以了。
2.2 安装fever插件
这个插件据说是为了在多个rss reader终端上能同步处理rss内容,意思就是在安卓看了某篇rss文章后,我再到windows下看的时候,这篇文章已经自动标记为已读。
这个也简单,按如下命令设置即可
cd /var/ttrss/ttrss/plugins.local
git clone https://github.com/DigitalDJ/tinytinyrss-fever-plugin
然后用浏览器登入https://sanzhou.live/ttrss,然后启用fever插件,具体启用、配置密码等过程见这里。
然后从客户端登录fever的时候,记得登录的地址是https://sanzhou.live/ttrss/plugins.local/fever
3.安装客户端
3.1 ubuntu客户端
本来想安装安卓和ubuntu两种客户端,然后发现ubuntu下没找到支持fever的客户端,只找到了支持ttrss的客户端,叫liferea,安装也简单。
sudo apt-get install liferea
由于不支持fever,我也就没用。
3.2安卓客户端
安卓支持ttrss的客户端有好几款,试了feedme,还有Readably,最后柑橘还是ttrss自家出品的安卓客户端比较好使,直接在apkpure下载的。
但有个提醒说是trial mode,7 days left,估计是试用期仅7天?7天之后呢,不知道了,先用着吧。
不过如果是用这个客户端,其实倒不用安装fever插件了,它自己能跟服务器同步。
4.参考网站
-
3.https://sleele.com/2019/06/16/tiny-tiny-rss-%E9%83%A8%E7%BD%B2%E6%B5%81%E7%A8%8B/
-
4.https://libertyleadingnetwork.blogspot.com/2019/03/dockertiny-rssmercurymercury-parser.html
-
5.题外话
觉得这个ttrss挺好,想着给捐赠十块八块的,结果点进去发现只能通过paypal来捐赠,或者通过信用卡或者银行卡,想想还是算了,要是有微信或者支付宝捐赠渠道倒是可以考虑考虑。
6.更新
2019.12.11日更新
由于有的博客都没有rss,有的rss又只有摘要,干脆一发狠,直接上了huginn,然后取消了full text插件。
折腾huginn实在是费劲,不过总算折腾好了,大概记录遇到的几个问题。 -
huginn必须要作为server运行,不能放到某个location下面,没办法,只好用了一个新的server,用了一个新的端口。
-
huginn设置好web agent后点击run总是不能运行,一直显示的no working,后来google了半天,原来要用sudo bundle exec foreman start。如果用sudo bundle exec rake production:export启动了之后还要用sudo bundle exec rake production:stop停止,再用前面的foreman来启动。
-
huginn设置好web agent后点击run出现Broken pipe @ io_write 这种错误,没找到原因,后来通过更改.env文件,把postgres的pool数量改为了30,然后用sudo service postgresql restart 把postgresql服务重启,用sudo bundle exec rake production:export更新设置,用sudo bundle exec rake production:stop停止服务,再用sudo bundle exec foreman start启动,就好了。
2019.12.26日更新
huginn的jobs总是显示红色not working,自己用python自己diy了一个烧制rss源的,现在已经改用自己diy的这个rss-from-web了。
我在阿里云上用docker部署的huginn,遇到了broken pipe的问题,请问也可以通过您说的更改.env文件的方式来改吗?不知道.env文件放到哪里了。。
太长时间没用huginn了,都搞忘位置了,不过你可以在三个地方找一找,1./etc,2.你的用户名登录时的home目录,3.安装huginn的目录
解决了老哥,需要重新登陆终端,docker关闭再开启higinn容器,再登陆huginn,运行才能正常。我看也有其他人也遇到了这个问题,他是在腾讯云上挂的huginn,关闭终端或者长时间连接自动关闭后,也会出现broken pipe的问题,也是关闭容器再重启变好的。
嗯,没有broken pipe,那解决rss还有什么问题呢?我印象中huginn解决rss也是用的xpath吧?你用python或js用的不是xpath吗?
我当时解决了,过几天又broken pipe,不知道你还遇到这个问题没有?
特意用了两三周再来回复。目前还木有再出现过broken pipe的问题,有时会有"working 是no的状态",这种可能是有一段时间没有信息更新了,它就判断这个不能用了?等到有信息更新了它就好了。。一般等一两天它自己就好了能接着用了。。
不过我现在也感觉huginn对于制作rss来说有点局限性,我现在在学习使用python或者js在阿里云上制作rss
解决了就好!
不好意思 网卡了 发了三遍 不知道怎么删除重复的评论。。
我在阿里云上用docker部署的huginn,遇到了broken pipe的问题,请问也可以通过您说的更改.env文件的方式来改吗?不知道.env文件放到哪里了。。
我在阿里云上用docker部署的huginn,遇到了broken pipe的问题,请问也可以通过您说的更改.env文件的方式来改吗?不知道.env文件放到哪里了。。
请问Huginn的Broken Pipe问题怎么解决的呀我找了好多资料一直没找到解决方案快疯了:(
哎,总觉得huginn各种bug,换方案吧
谢谢,已推荐到我的频道。
评论有邮件通知了,重新回复下,谢谢推荐哈。
另外,重新弄了个fanyihui.net,算类rss网站,不知道能不能推荐下呢?谢谢哈
哈哈,谢谢推荐
Ubuntu可以试试FeedReader
哎,不早说啊