开篇

RSS: 一种好用的信息聚合技术。

本次折腾目的:

  • 想要做一个不需要科学上网就能直接在全平台获取rss的服务

平台应用:

  • PC: rss追踪
  • Android: feedme
  • Ios: reeder5

分析:

  • 排除掉Inoreader、NewsBlur、feedbin、feedly等之后,就剩下onedriver和fever两种服务了
  • 在使用onedriver过程中总会发生一些数据错乱的情况,所以打算尝试一下fever
  • fever需要自己搭建,在这里记录一下折腾的全过程,主要是利用ttrss和fever插件来实现这个功能。
  • rsshub是用来制作rss的。
[如果能够 科学上网 不愿意折腾,建议使用Inoreader服务]

RSSHub:万物皆可 RSS

介绍

RSSHub 是一个开源、简单易用、易于扩展的 RSS 生成器,可以给任何奇奇怪怪的内容生成 RSS 订阅源。RSSHub 借助于开源社区的力量快速发展中,目前已适配数百家网站的上千项内容

搭建

首先,我们创建一个新的网站,不需要创建新的数据库,PHP 设置为纯静态:

新建网站

接着,在宝塔面板中安装Docker 管理器

接着,打开 Docker 管理器,在「镜像管理」中获取官方库镜像 diygod/rsshub。

获取镜像

然后,在「容器列表」创建新的 Docker 容器:

创建 RSSHub 容器

最后,设置反向代理,以便我们可以通过域名来访问该服务:

反向代理

这样,我们的 RSSHub 就完成了搭建,具体的配置和路由可以参见RSSHub 文档

原文链接:https://blog.dlzhang.com/posts/49/

TTRSS

介绍

Tiny Tiny RSS Tiny Tiny RSS 是一个免费和开源的基于 Web 的新闻提要 (RSS/Atom) 阅读器和聚合器

ttrss

搭建

这里有两种方案、推荐第一种,简单方便效果好。

方案一:docker-compose(新方案)

准备工作 → 安装docker-compose → 检测docker-compose

  1. pip install docker-compose
  2. docker -v
  3. docker-compose -v

开始安装

  1. 下载 docker-compose.yml 至任意目录。
  2. 更改 docker-compose.yml 中的设置。
  3. 通过终端在同目录下运行 docker-compose up -d 后等待部署完成。

    如果部署失败执行此命令:docker-compose down

    编辑 docker-compose.yml 后再次部署

  4. 配置ssl
  5. 默认账户:admin 密码:password

示例docker-compose(务必要改的地方有三处:两处一致的密码、一处域名)

version: "3"
services:
  service.rss:
    image: wangqiru/ttrss:latest
    container_name: ttrss
    ports:
      - 181:80
    environment:
      - SELF_URL_PATH=https://your.domain.com/ # please change to your own domain
      - DB_PASS=*********** # use the same password defined in `database.postgres`
      - PUID=1000
      - PGID=1000
    volumes:
      - feed-icons:/var/www/feed-icons/
    networks:
      - public_access
      - service_only
      - database_only
    stdin_open: true
    tty: true
    restart: always

  service.mercury: # set Mercury Parser API endpoint to `service.mercury:3000` on TTRSS plugin setting page
    image: wangqiru/mercury-parser-api:latest
    container_name: mercury
    networks:
      - public_access
      - service_only
    restart: always

  service.opencc: # set OpenCC API endpoint to `service.opencc:3000` on TTRSS plugin setting page
    image: wangqiru/opencc-api-server:latest
    container_name: opencc
    environment:
      - NODE_ENV=production
    networks:
      - service_only
    restart: always

  database.postgres:
    image: postgres:13-alpine
    container_name: postgres
    environment:
      - POSTGRES_PASSWORD=*********** # feel free to change the password
    volumes:
      - ~/postgres/data/:/var/lib/postgresql/data # persist postgres data to ~/postgres/data/ on the host
    networks:
      - database_only
    restart: always

  # utility.watchtower:
  #   container_name: watchtower
  #   image: containrrr/watchtower:latest
  #   volumes:
  #     - /var/run/docker.sock:/var/run/docker.sock
  #   environment:
  #     - WATCHTOWER_CLEANUP=true
  #     - WATCHTOWER_POLL_INTERVAL=86400
  #   restart: always

volumes:
  feed-icons:

networks:
  public_access: # Provide the access for ttrss UI
  service_only: # Provide the communication network between services only
    internal: true
  database_only: # Provide the communication between ttrss and database only
    internal: true

ssl配置:找到宝塔面板中网站设置中的配置文件里的这一段

server
{
    listen 80;
    listen 443 ssl http2;
    server_name read.cry33.com;
    index index.php index.html index.htm default.php default.htm default.html;
    root /www/wwwroot/tinyrss;
  
    #SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则

 复制这一段区域的内容,为了隐私,我将配置代码删除了。

    #SSL-END
  
    #ERROR-PAGE-START  错误页配置,可以注释、删除或修改
    #error_page 404 /404.html;
    #error_page 502 /502.html;
    #ERROR-PAGE-END

ssl配置示例

upstream ttrssdev {
    server 127.0.0.1:181;
}

server {
    listen 80;
    server_name  read.cry33.com;
    return 301 https://your.domain.com$request_uri;
}

server {
    listen 443 ssl;
    gzip on;
    server_name  read.cry33.com;

    #SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则

     将上面复制的内容粘贴到这里

    #SSL-END

    # access_log /var/log/nginx/ttrssdev_access.log combined;
    # error_log  /var/log/nginx/ttrssdev_error.log;

    location / {
        proxy_redirect off;
        proxy_pass http://ttrssdev;

        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;
    }
}

方案二:docker(老方案)

首先,利用宝塔新建一个站点:xxx.xxx.xxx,然后配置PHP为7.4(只要大于5.5就行,7.x性能更好)

建站

然后,安装PHP的fileinfo扩展

安装fileinfo

然后,下载源码,放到xxx.xxx.xxx的目录下,注意把之前的里面的文件删掉。

TTRSS源代码点此处下载

打开xxx.xxx.xxx/install,开始安装:

ttrss安装

测试配置之后,初始化数据库,然后保存配置文件,再次打开xxx.xxx.xxx,会发现出现了登陆窗口,账号:admin,密码:password 安装完成!

细节调整:

  • 修改时区

修改时区

  • 更新:自动更新比较简单,打开根目录的config.php,然后搜索SIMPLE_UPDATE_MODE,将其设为true即可。

TTRSS-RSSHUB主题

  • 将 CSS 文件下载到themes.localtt-rss 根目录下
  • 点击此处下载
  • 进入您的 tt-rss 首选项并选择rsshub.css主题

github项目

fever插件

下载插件

Fever插件源代码点此处下载

将其移至plugins文件夹中解压,文件名改成fever

文件修改

然后打开偏好设置--用户插件--fever,打开,然后刷新,会看到下面有一行Fever Emulation选项,注意下面的红框部分:

插件安装

到此我们完成了fever的布置

原文链接

在RSS追踪-设置-RSS服务设置-fever中输入链接-用户名-密码 即可完成配置

ttrss自动更新

使用 crontab 开启后台自动更新模式

打开 config.php 配置文件,将 PHP_EXECUTABLE 的 PHP 路径设置好:

# /usr/bin/php 为我的系统的 php 路径,仅供参考
define('PHP_EXECUTABLE', '/usr/bin/php');

如果找不到 PHP 路径的话,可以通过在站点目录下创建 <?phpecho phpinfo();.php 文件后打开浏览器访问查看。

改好 config.php 文件后,需要创建一个 Linux 普通用户,之所以要另外创建一个用户,是因为更新脚本文件 update.phpupdate_daemon2.php 不能由 root 用户来执行,但是可以通过 apache 或者 Nginx 的运行用户来执行脚本计划(这里拿创建一个名叫 ttrss 的用户举例):

# 创建新用户
adduser ttrss
# 给新用户初始化密码
passwd ttrss

给相关目录设置 777 的权限:

chmod -R 777 feed-icons
chmod -R 777 lock
chmod -R 777 cache/export
chmod -R 777 cache/images
chmod -R 777 cache/upload

用 crontab 添加一个定时运行计划:

crontab 命令被用来提交和管理用户需要周期性执行的任务,与 windows 下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动 crond 进程,crond 进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。

先看下 crontab 定时计划的规则示例:

# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
 *  *  *  *  * user-name  command to be executed

由于 Tiny Tiny RSS 的更新脚本不能用 root 执行,所以需要用到上文创建的用户来执行计划:

# 编辑 cron 文件,写入 ttrss 用户,允许 ttrss 用户使用 crontab 命令
sudo vi /etc/cron.allow
# 以 ttrss 用户身份执行 crontab 计划
crontab -u ttrss -e
# 在打开的计划编辑页面输入指令,每45分钟执行一次计划
*/45 * * * * /usr/bin/php /你的tinyrss站点目录/update.php --feeds --quiet

注意:

定时时间可以自行修改
为了保证 crontab 正常运行,一定先在 cron.allow 中写入执行用户
/usr/bin/php 为我的系统的 php 路径,仅供参考

检查定时计划的配置是否成功:

方法一

# 在 root 身份下,查看 ttrss 用户的计划内容
cat /var/spool/cron/ttrss
# 查看 crontab 的 log 文件是否包含 ttrss 用户的计划内容
cat /var/log/cron

如图:

方法一

方法二

# 切换到 ttrss 用户身份下
su ttrss
crontab -l
# 同样可以看到该用户的计划内容

如图:

方法二

进一步确保 crontab 命令是否正常运行,在 ttrss 用户身份下执行:

/usr/bin/php /你的tinyrss站点目录/update.php --feeds

当终端开始运行计划,并显示信息源的更新时间,则说明定时任务配置成功,如图:

成功

以上配置都完成后,Tiny Tiny RSS 就可以每45分钟在后台自动更新信息源了。

原文链接

跨域服务

1、下载源文件上传到你的服务器任意目录并解压

点击此处下载

2、PM2管理器 添加项目、并添加启动文件为server.js

添加项目

3.点击映射然后配置跨域服务域名

添加启动文件

4.跨域服务搭建完成

原文链接

Last modification:August 15, 2023
如果觉得我的文章对你有用,请随意赞赏