惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Help Net Security
Help Net Security
G
Google Developers Blog
雷峰网
雷峰网
WordPress大学
WordPress大学
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Engineering at Meta
Engineering at Meta
Security Latest
Security Latest
T
Threat Research - Cisco Blogs
AWS News Blog
AWS News Blog
F
Full Disclosure
C
Cybersecurity and Infrastructure Security Agency CISA
T
The Exploit Database - CXSecurity.com
J
Java Code Geeks
U
Unit 42
C
Cyber Attacks, Cyber Crime and Cyber Security
V
V2EX
C
Cisco Blogs
博客园 - 司徒正美
Project Zero
Project Zero
L
LINUX DO - 热门话题
阮一峰的网络日志
阮一峰的网络日志
Blog — PlanetScale
Blog — PlanetScale
Scott Helme
Scott Helme
A
About on SuperTechFans
Hugging Face - Blog
Hugging Face - Blog
S
Securelist
小众软件
小众软件
aimingoo的专栏
aimingoo的专栏
S
Schneier on Security
G
GRAHAM CLULEY
酷 壳 – CoolShell
酷 壳 – CoolShell
Cyberwarzone
Cyberwarzone
MongoDB | Blog
MongoDB | Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 叶小钗
T
Threatpost
Recorded Future
Recorded Future
C
CXSECURITY Database RSS Feed - CXSecurity.com
宝玉的分享
宝玉的分享
N
News and Events Feed by Topic
人人都是产品经理
人人都是产品经理
The Register - Security
The Register - Security
S
Security Archives - TechRepublic
博客园 - Franky
N
News | PayPal Newsroom
Simon Willison's Weblog
Simon Willison's Weblog
S
SegmentFault 最新的问题
W
WeLiveSecurity
A
Arctic Wolf
B
Blog

Razeen`s Blog

Reflections on Management Training: A Technologist's Perspective on the Path to Leadership UPS Multi-Device Protection: Safeguarding Your NAS and Linux Server From Media Center to AI Assistant: My List of 50 Homelab Services Discussing the Reduction of SSL Certificate Validity to 47 Days Deploy Your Own Running Page One Year Review and Cost Analysis of Tesla Model Y Replacing Disqus Comments with Self-hosted Waline Use Prometheus and Grafana to Set Up Your Certificate Monitoring Dashboard Server Migration: Lessons Learned from Swapping Linux Disk Boards Razeen`s Blog App Share | AppCleaner - The Uninstaller for Mac Gallery Goods Apps Links
Improve Information Sources with RSS (RSShub + Reeder 5)
2024-08-15 · via Razeen`s Blog

Recently, while browsing Twitter, I came across multiple experiences shared by DIYgod about his latest project follow. Unfortunately, the project is still in the invitation-only testing phase, so I couldn’t participate. However, DIYgod’s other project RSSHub solved a problem that had been bothering me for a long time.

Until now, my main sources of information were Twitter and public accounts. Although I had also bookmarked some other news sites and personal blogs, I rarely clicked on them to read due to the scattered nature of the information. RSSHub helped me solve this problem. This blog post mainly shares my experience with RSSHub + Reeder 5.

This article is automatically translated by AI. Click here to challenge the original text.

RSS, introduced by Netscape in 1999, originally stood for “Rich Site Summary” and has evolved to version 2.0, also known as “Really Simple Syndication.” It is a format specification for aggregating updates from websites and outputting them in XML format for easy client-side subscription.

I first encountered RSS when setting up my blog, where there was an RSS configuration option. At that time, I simply configured it without realizing its potential for aggregating news. With the rise of self-media and short videos, very few people around me use this method to subscribe to information. However, a few days ago, when I discovered RSSHub, I decided to give it a try, and after two weeks of using it, I found it quite good.

RSSHub is a website that can fetch and convert any content into an RSS feed for subscription.

The project’s slogan is “Everything can be RSS.” It can not only subscribe to various blogs, forums, and new media, but also handle social media platforms like Twitter with ease. It’s very powerful, as detailed in the usage guide.

This project has been continuously developed for 6 years and has undergone a major overhaul this year. I have to admire the dedication of the developers.

alt text

The project supports self-hosting, and I recommend setting up your own instance if you enjoy tinkering. It’s very easy to deploy using docker-compose, and the official documentation provides the necessary configuration file docker-compose.yml.

For external access, it’s best to use Nginx as a reverse proxy and automate certificate management with acme.sh. I have included my configuration at the end of this post.

In addition, the project also provides a Radar feature, which, when combined with a browser extension, allows you to check if the site you are visiting is supported by RSSHub and convert it into a subscription address with just one click. It’s very convenient and even works on mobile devices.

alt text

Of course, if you want to subscribe to GitHub Trending or Twitter timelines, you need to configure the corresponding tokens, as explained in the configuration guide.

Reeder 5

Now that we have the RSS feeds, the next step is to choose a client. I chose Reeder 5, an RSS reader for macOS/iOS/iPadOS. Although it is a paid app, after using it for a few weeks, I find it really good.

Reeder 5 supports various RSS sources, including Feedly, Inoreader, and more. It also allows custom RSS feeds.

Currently, I mainly use it to subscribe to blogs, public accounts, and Twitter. It has a clean layout, good font choices, and supports iCloud sync, which is very convenient.

alt text

In addition, it has a “Read Later” feature that I really like. Sometimes, when I come across an article but don’t have time to read it, I can directly choose “Read Later in Reeder” in my browser and read it later in the app when I have time. It’s very convenient (previously, I used to send articles to myself on WeChat).

alt text

alt text

Conclusion

After using this combination for some time, I find it quite good. I can aggregate the information I want through RSSHub and read it at the right time without worrying about missing out.

However, at the same time, the amount of information has increased, but my capacity to consume it is limited. I need to make choices and only keep what is relevant to me; otherwise, it can lead to information overload.

One more thing, currently there is no good way to crawl articles from WeChat public accounts (although I have seen some paid solutions). Currently, the only way to read articles from WeChat public accounts is through the subscription feature.

Finally, I am looking forward to DIYgod’s follow project and hope to experience it soon.

One more thing

Lastly, I would like to share my configuration for reference.

To access Twitter and GitHub smoothly, it is recommended to deploy the server overseas.

  • docker-compose.yml

Added acme.sh to apply for certificates and Nginx to proxy RSSHub.

version: '3.5'
services:
  acme:
  image: neilpang/acme.sh
  restart: always
  container_name: acme.sh
  command: ["daemon"]
  environment:
    # I use Cloudflare DNS, refer to https://github.com/acmesh-official/acme.sh/wiki/dnsapi for other options
    - CF_Zone_ID=xxxx  
    - CF_Token=xxx
  volumes:
    - ./acme.sh:/acme.sh
    - ./certs:/ssl

  nginx:
  image: nginx
  network_mode: host
  container_name: nginx
  restart: always
  volumes:
    - ./certs:/etc/nginx/ssl
    - ./web-rsshub.conf:/etc/nginx/conf.d/rsshub.conf

  rsshub:
  image: diygod/rsshub
  restart: always
  container_name: rsshub
  ports:
    - '1200:1200'
  environment:
    NODE_ENV: production
    CACHE_TYPE: redis
    REDIS_URL: 'redis://redis:6379/'
    PUPPETEER_WS_ENDPOINT: 'ws://browserless:3000'  # marked
    GITHUB_ACCESS_TOKEN: 'xxxx'
    TWITTER_USERNAME: 'xxx'
    TWITTER_PASSWORD: 'xxx'
    TWITTER_AUTHENTICATION_SECRET: 'xxxx'
  depends_on:
    - redis
    - browserless  # marked
  
  browserless:  # marked
  image: browserless/chrome  # marked
  container_name: rsshub-browserless
  restart: always  # marked
  ulimits:  # marked
    core:  # marked
    hard: 0  # marked
    soft: 0  # marked
  
  redis:
  image: redis:alpine
  container_name: rsshub-redis
  restart: always
  volumes:
    - ./redis-data:/data
  • web-rsshub.conf

Nginx reverse proxy configuration for RSSHub

server {
  listen                       443 ssl;
  server_name                  rsshub.example.com;
  server_tokens                off;
  http2 on;

  ssl_certificate              /etc/nginx/ssl/fullchain.pem;
  ssl_certificate_key          /etc/nginx/ssl/key.pem;

  ssl_prefer_server_ciphers    on;
  ssl_ciphers                  EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;

  ssl_protocols                TLSv1.1 TLSv1.2 TLSv1.3;
  ssl_session_cache            shared:SSL:50m;
  ssl_session_timeout          1d;
  ssl_session_tickets          on;

  ssl_trusted_certificate      /etc/nginx/ssl/ca.pem;
  ssl_stapling                 on;
  ssl_stapling_verify          on;

  access_log  /var/log/nginx/access_rsshub.log  main;
  error_log   /var/log/nginx/error_rsshub.log;

  resolver 8.8.8.8 ipv6=off valid=30s;

  location / {
    proxy_pass http://127.0.0.1:1200;
  }
}
  • apply-cert.sh

Script to apply for certificates and update them

#!/bin/bash

echo "start install cert ..."

docker exec acme.sh --issue \
  -d "example.com" \
  -d "*.example.com" \
  --dns dns_cf \
  --keylength ec-256 \
  --server letsencrypt \
  --dnssleep 300 \
  --force

if [ $? -ne 0 ]; then
  echo "apply cert failed"
  exit 1
fi

docker exec acme.sh --install-cert \
  -d "example.com" \
  -d "example.com" \
  --dns dns_cf \
  --keylength ec-256 \
  --server letsencrypt \
  --key-file       /ssl/key.pem \
  --fullchain-file /ssl/fullchain.pem \
  --ca-file /ssl/ca.pem \
  --reloadcmd  "echo 'done'"

if [ $? -ne 0 ]; then
  echo "install cert failed"
  exit 1
fi

docker restart  nginx

if [ $? -ne 0 ]; then
  echo "reload nginx failed"
  exit 1
fi

echo "update cert success"