Fixing My RSS Reader Problem for the Third Time in a Decade

Fixing My RSS Reader Problem for the Third Time in a Decade

Tutorials docker miniflux productivity rss self-hosting

I've rebuilt my RSS setup so many times over the life of this blog that I could probably write a separate blog just about that. Google Reader dying back in 2013 was the first big kick in the teeth, then I did a stint on Feedly, then The Old Reader, then an app called Reeder that I loved right up until the sync service it depended on got flaky, then I just... stopped. For about two years I got my news from whatever Twitter (X, whatever) and a couple newsletters shoved in front of me, and honestly it made me dumber. I noticed it. I'd read a headline, form an opinion, and never click through.

So over the weekend I fixed it properly, and this time I think it'll actually stick because I own the whole stack now.

What I ended up with: Miniflux, self-hosted, on a $6/month VPS from a small provider (not naming them, doesnt matter, any box with 1GB RAM works fine). Miniflux is refreshingly boring software — its a Go binary, a Postgres database, and a web UI that looks like it was designed in 2009 and never touched since. Thats not a knock. Thats exactly what I want from something that just needs to fetch XML on a schedule and show it to me.

The install took maybe twenty minutes, most of which was me being lazy about setting up DNS. If you want to do this yourself, here's roughly what it looks like with Docker Compose:

services:
  miniflux:
    image: miniflux/miniflux:latest
    ports:
      - "8080:8080"
    environment:
      - DATABASE_URL=postgres://miniflux:secret@db/miniflux?sslmode=disable
      - RUN_MIGRATIONS=1
      - CREATE_ADMIN=1
      - ADMIN_USERNAME=admin
      - ADMIN_PASSWORD=your-password-here
    depends_on:
      - db
  db:
    image: postgres:15
    environment:
      - POSTGRES_USER=miniflux
      - POSTGRES_PASSWORD=secret
      - POSTGRES_DB=miniflux
    volumes:
      - miniflux-db:/var/lib/postgresql/data
volumes:
  miniflux-db:

Slap Caddy or nginx in front of it for the TLS cert (Caddy is genuinely one line of config for this, I dont know why I fought nginx for so many years) and you're basically done. I imported my old OPML file from the Reeder days, which somehow I still had sitting in a Dropbox folder from 2019, and about 60% of the feeds were dead on arrival. Blogs that vanished. Substacks that migrated their RSS URL without a redirect. A few that got acquired and now just redirect to some SEO content farm, which is its own small tragedy.

I ended up with 74 working feeds after the cleanup. Not huge, but its mine, and none of it is an algorithm deciding what I see.

The part nobody tells you about self-hosting RSS: the fetching itself is the fiddly bit, not the software. Some sites rate-limit aggressively if you poll too often — I had one feed (a niche woodworking blog, of all things, I contain multitudes) that started 429-ing me until I dropped its check interval down. Miniflux lets you set per-feed refresh intervals, which I didnt know I needed until I needed it. Also, a genuinely annoying number of "tech news" sites in 2026 ship RSS feeds that only contain a two-sentence teaser with no way to read the rest without clicking through and hitting a paywall or a cookie wall. Fine, whatever, I still prefer that to an algorithm.

One thing I'll admit: I was tempted to just pay for a hosted service again instead of dealing with a VPS, backups, and Docker updates. There are a couple decent ones now that do full-text search and a clean mobile client for around $30-40 a year. If youve got zero interest in touching a terminal, just do that, I'm not going to pretend self-hosting is morally superior for everyone. For me the appeal is specifically that I dont trust a small company not to get acquired and shut down eighteen months from now (see: basically every RSS reader I've used since 2011). A Postgres dump I control doesnt have that problem.

My phone's Miniflux client of choice right now is a free open-source app called Fluent Reader Lite, which syncs against the Miniflux API and is unglamorous but works. Reading queue is back under control, unread count sits around 40-something most mornings instead of the fake-zero of an algorithmic feed, and I've caught myself actually reading full posts again instead of skimming headlines. Small thing. Feels bigger than it should.