My (slightly unethical) RSS setup

I love RSS. I used it way before Fediverse even existed. I mention Fediverse because a lot of people call them out on trying to reinvent the wheel in this sense. Following an independent website is nothing new. Of course, like everyone, I try to make RSS even better and more comfortable to use and the core of my aproach is sending full articles to e-mail

I know about the existence of self-hosted RSS readers like FreshRSS. I used Feedly and Google Reader in the past as well as random (usually FOSS) apps on my phone. But I always wanted to simplify my “feed”. I don’t really read social networks other than having a look at Twitter every now and then. So I was looking for a way to get all this into the same “stream” or “feed” of posts.

rss2email to the rescue

Having RSS feeds in your inbox is quite simple with rss2email. You just configure it and add the feeds with simple commands as needed. It preserves the date and time of the post in e-mail headers and therefore your timeline is chronological even if you send them once every hour or some malfunction happens like a site is down and rss2email is unable to fetch new articles. This is also fine in the sense that you only get a summary of the article, or whatever the author of the site is comfortable with providing for free without seeing ads. I still have to go to the site and see their ads to see the full article. I have ad-blocking disabled on the sites I commonly visit, so it’s all good.

(Shamelessly) sending full articles to e-mail

I wanted the ability to just use my e-mail client for reading stuff. It may sound a bit dumb but it’s very comfy. Currently that client would be Gmail on my Android phone and Outlook on Windows Phone and Mail app on iPhone in the past. All of them are very simple and good-looking apps. And I can’t avoid using them, so I may as well use them to the maximum. This is where another part of my setup comes: rss-bridge.

I only started using rss-bridge sometime in 2022 when I discovered it by accident when looking for better ways to dockerize everything in my setup. At the end of the article I will post my docker-compose which anyone can use to recreate this setup. It does exactly what I wanted long ago - it sends the full articles to my inbox. First, I go to rss-bridge homepage, a public one exists: RSS-Bridge - go check it out. There I try to find a bridges for my favorite website, for example one for Phoronix exists. If that doesn’t work, the next thing to try is usually the Wordpress connector (works for Ars Technica) and then XPATH if nothing better exists. Other extremely useful bridges are for Twitter and Youtube. When I have the given bridge set up how I want, I generate and copy the Atom feed link and add that to my rss2email. That’s all there is to it.

Here is how the e-mails look, bridges are: phoronix, reddit, twitter, youtube:

a

b

c

d

Y_es, my Gmail app is black,_ it’s thanks to a hack,
what can I do, I love OLED black

Of course, it is better to run your own rss-bridge for privacy and not to use somebody else’s public services if you don’t have to. And if you decide to use this, and have money to spare, it would be ethical to buy a subscription at those websites and they usually in turn provide a richer RSS feed so such bridge might not be needed. But this is a good workaround if you can’t afford paying subs right now or if you prefer to just pay only every now and then due to your financial possibilities and want to keep access. I can say for myself that I paid a monthly sub at least once to every site that I read regularly.

The promised docker-compose.yaml:

version: '3'
services:
  rss-bridge:
    image: rssbridge/rss-bridge:latest
    volumes:
      - ./rss-bridge:/config
    ports:
      - 8080:80
    restart: unless-stopped

  rss2email:
    image: ghcr.io/plantroon/rss2email:master
    volumes:
      - ./rss2email:/config
      - ./rss2email-data:/data
    entrypoint: "/venv/bin/python3 -c 'import threading; threading.Event().wait()'"
    labels:
      chadburn.enabled: "true"
      chadburn.job-exec.rss2email.no-overlap: "true"
      chadburn.job-exec.rss2email.schedule: "@every 5m"
      chadburn.job-exec.rss2email.command: "r2e run"