搭建一套属于自己的RSS信息聚合系统

概要

大概就是自己为了逃脱算法推荐和打破信息茧房,正好最近买了阿里云的应用服务器,所以想搭建一套信息聚合系统,来避免浪费时间,将自己的注意力放在具有正面意义的内容上。
搭建一套属于自己的RSS信息聚合系统

需求

  1. 一台云服务器,或者能够进行内网穿透的 NAS,甚至是电脑也行
  2. 轻度 linux 操作经验
  3. 开放端口:1200; 4000; 8080; 7890; 7891; 4000

依赖

  1. docker-compose
  2. Rsshub
  3. WeweRss
  4. FreshRSS
  5. Clash
  6. RSSpush

Docker-compose

花了一点时间来摸索这东西,发现能够把容器统一配置在一个 compose 文件里面,就立刻改用了这种方式,把所有的容器转移到一个 compose 文件里面,具体实现如下:

services:
  rsshub:
    image: diygod/rsshub
    restart: always
    ports:
      - "1200:1200"
    environment:
      NODE_ENV: production
      CACHE_TYPE: redis
      REDIS_URL: "redis://redis:6379/"
      PUPPETEER_WS_ENDPOINT: "ws://browserless:3000"
      ACCESS_KEY: pwd #改成自己的
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:1200/healthz?key=${ACCESS_KEY}"]](<test: ["CMD-SHELL", "curl -f http://localhost:1200/healthz?key=$$ACCESS_KEY"
      interval: 30s
      timeout: 10s
      retries: 3
    depends_on:
      - redis
      - browserless

  browserless:
    image: browserless/chrome
    restart: always
    ulimits:
      core:
        hard: 0
        soft: 0
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:3000/pressure"]
      interval: 30s
      timeout: 10s
      retries: 3

  redis:
    image: redis:alpine
    restart: always
    volumes:
      - redis-data:/data
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 30s
      timeout: 10s
      retries: 5
      start_period: 5s

  freshrss:
    image: lscr.io/linuxserver/freshrss:latest
    container_name: freshrss
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Shanghai
    volumes:
      - ~/appdata/freshrss:/config
    ports:
      - 8080:80
    restart: unless-stopped

  wewerss:
    image: cooderl/wewe-rss-sqlite:latest
    ports:
      - 4000:4000
    environment:
      - DATABASE_TYPE=sqlite
      - AUTH_CODE=1234567
      - CRON_EXPRESSION=35 7,12,17,22 * * *
      - PUID=1000
      - PGID=1000
      - UMASK=022
      - FEED_MODE=fulltext
	  - PLATFORM_URL=https://weread.965111.xyz
    volumes:
      - ~/appdata/wewerss:/app/data
    restart: unless-stopped

  rsspush:
    image: easychen/rsspush
    volumes:
      - "./data:/rsspush/api/data"
    environment:
      - ADMIN_KEY=PWD
      - RSS_BASE=http://外网IP:1200/
      - TZ=Asia/Chongqing
    ports:
      - 8000:8000

volumes:
  redis-data:

把上面的代码复制到~/docker-compose.yml 文件里面,然后执行

sudo docker-compose up -d

安装完成后,所有的应用就装好了。
Pasted image 20250212221544.png

Rsshub

核心组建,用来把网站上的内容转换成 RSS 的 feed 文件,需要开通1200端口。

把上面的ACCESS_KEYPWD改成自己的密码,就可以在浏览器的 Rsshub Radar 里面设置成自己的服务器了。
Pasted image 20250212221630.png
这样就完成了探测 RSS Feed 的基本工作。

WeweRss

这个东西就是利用微信读书来获取微信公众号的 RSS 从而订阅,端口是4000,设置好以后进去先要连接自己的微信扫码,然后就可以添加公众号了。
Pasted image 20250212221740.png

FreshRSS

RSS 阅读的统一管理服务,可以在多个平台之间同步已度状态、收藏等多种数据,基本各系统主流的 RSS 阅读器都支持。需要开放端口8080

设置

关键设置有两个:
7. 需要在系统的设置里面开启 API 功能。
8. 需要给自己的账号生成 API 连接密码。
Pasted image 20250212221924.png
Pasted image 20250212221956.png
设置好以后就可以用 API 登录阅读器了。

客户端选择

MacOS/iOS/iPad

推荐 NetNewsWire,完全免费。
Pasted image 20250212222153.png

Android

推荐 AgrReader,不过是收费的,其他还有类似 Read you 这种免费的,自行尝试。
Screenshot_20250212_222236.jpg

WIN

推荐 Fluent Reader,完全免费,好看。我目前没有 WIN 就用 MAC 的截图替代了。
Pasted image 20250212222535.png

Clash

这个东西是为了应付一些 你懂的导致无法连接的情况,需要开放端口78907891
clash 的订阅需要自行准备

设置

这个东西本身并不需要设置什么,只是在订阅某些RSS遇到某些你懂的导致无法连接的情况时,在 FreshRSS 里面手工设置代理项从而进行订阅。输入clash命令可以查看个个命令的用法。

代理端口:socks5
代理 IP 地址:服务器的内网IP:7891
Pasted image 20250212222632.png

RSSpush

这是为了推送某些特定重要的的 RSS feed 的应用,可以通过 Server酱申请的 API Key 来监控部分重要的 RSS,在更新时可以收到微信通知。需要开放端口8000
*Server酱付费服务*
Pasted image 20250212222806.png

结尾

总共花了一天半的时间从 0 开始尝试直到把所有系统搭建完成,也学到了很多技术方面东西,但更重要的是,利用这套系统,学会让自己不受推荐算法的制约,不再受到 APP 厂家的算法捆绑,享受更多属于自己的时间。


更新

2025-02-13

网页抓取

可以利用 politepol 对不支持 RSSHub 的网页进行 xpath元素抓取,把网页贴到网址跟着操作选定标题、描述、日期等等元素就行了。
Pasted image 20250213231825.png

Twitter (X)抓取

大概分为如下步骤:

  1. 重新注册一个小号
  2. 用 Aegis Authenticator 开启 Twitter 的两步验证
  3. 在Aegis Authenticator 查看并记录下密钥。
  4. 现在得到了用户名、密码、两步验证密钥三样东西
  5. 还有之前设置过的 Clash
  6. 设置到 docker-compose 里面的 Rsshub 的 environment 下面加入如下代码,代码如下:
TWITTER_USERNAME: 小号的用户名
TWITTER_PASSWORD: 小号的密码
TWITTER_AUTHENTICATION_SECRET: Aegis Authenticator得到的密钥
PROXY_URI: 'http://服务器的内网IP地址:7890'

成功后就可以正常的使用 Twitter 抓取成 RSS 了,以后再遇到一些你懂的本来不能访问的地址也不需要再单独在 FreshRSS 里面设置 Socks 5 代理了。
Pasted image 20250214092030.png
用到的 APP:
Pasted image 20250213232107.png

8 Comments

  1. 令人惊叹的 旅游网站, 不要停下 方向正确。致敬! [url=https://iqvel.com/zh-Hans/a/%E4%BF%84%E7%BD%97%E6%96%AF/%E5%8D%A1%E7%9A%AE%E6%B1%A0%E5%A1%98]園林景觀[/url] 我热爱这样的想法, 参观你们描述的目的地。很开心。

  2. 色彩丰富的 内容! 已经规划路线。 [url=https://iqvel.com/zh-Hans/a/%E9%98%BF%E6%A0%B9%E5%BB%B7/%E7%B4%8D%E9%9F%8B%E7%88%BE%E7%93%A6%E7%9A%AE%E5%9C%8B%E5%AE%B6%E5%85%AC%E5%9C%92]安第斯景致[/url] 我珍视, 这里有真诚的评论。你的博客 就是 关于这些的。加油。

  3. 有趣的 旅游资源, 坚持下去 保持这种风格。十分感谢. [url=https://iqvel.com/zh-Hans/a/%E6%8D%B7%E5%85%8B%E8%AF%AD/%E8%80%81%E5%9F%8E%E5%B9%BF%E5%9C%BA]市政廳塔[/url] 所有文章都令人印象深刻。由衷感谢 感受。

  4. 我尊重这样的项目, 真实的旅行者分享建议。你的内容 就是 属于这里的。加油。 [url=https://iqvel.com/zh-Hans/a/%E8%B6%8A%E5%8D%97/%E6%96%B9%E5%B0%BC%E4%BA%9A]地下河[/url] 写得非常生动。由衷感谢 温暖。

发表回复

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