美文网首页
自己搭建ttrss

自己搭建ttrss

作者: 苏三州 | 来源:发表于2019-12-07 17:31 被阅读0次

    发现自己已经好长时间没事就喜欢刷知乎,或者刷豆瓣,而推荐给我的又都是什么结婚后是什么感受,离婚后是什么感受,处对象是什么感受。

    这些东西,偶尔看看,能让自己在实际生活中注意,从而避免踩坑,维护家庭和谐当然是有好处的,但是天天看,最重要的作用大概就是杀时间了。

    但生命转眼已经快过半,还是得把时间用在更有意义的地方才行。正好最近发现好些写博客的,觉得看了很有收获,那以后就看博客好了,最好是把所有信息都收集起来放在一个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.参考网站

    相关文章

      网友评论

          本文标题:自己搭建ttrss

          本文链接:https://www.haomeiwen.com/subject/tjzjgctx.html