Haupz Blog

... still a totally disordered mix

Self-Hosted News Aggregation

2025-01-05 — Michael Haupt

RSS is highly useful to keep track of news sites and blogs. I’ve been using a TinyTinyRSS (tt-rss) instance hosted in my personal web space for many years. When I started using it, tt-rss software supported the Fever API, which my preferred reader (Reeder) connects to. All of tt-rss is written in PHP.

When my web space hoster decided to put the (somewhat oldish) PHP version my tt-rss instance was running on under a paid maintenance plan, it was time to update tt-rss to the latest version. However, the manual installation was no longer supported. Docker was the new preferred way now. Since my hoster package didn’t include Docker support, I decided to move the tt-rss instance to my Oracle Cloud tenancy (the always-free tier is really quite usable), where I wanted to use a Linux VM to run things.

Once I had gotten it all up and running, I discovered that the Fever API support had been discontinued. Also, none of the (many) other APIs that Reeder can connect to were supported by tt-rss. At this point, I have to mention that the tt-rss maintainer doesn’t really care much about users: “we have an API of our own, just use that” is a standard response to questions about this matter. While I have great sympathy for OSS projects (and support some financially), I also have little tolerance for that kind of attitude.

Consequently, another RSS aggregator was needed. The relevant ones are all written in PHP, for some reason, which isn’t really my preferred language, but if it’s tucked away in a neatly packaged Docker configuration, why not give it a try?

I ended up installing FreshRSS, and it is really quite convincing. It imported my feeds right away, happily keeps them updated, and Reeder can connect to it easily. Things are good, and I don’t have to pay my web hoster to keep an old PHP version alive for me.

The setup I chose involves the FreshRSS Docker image, and a PostgreSQL 14 one. That turns out to be a bit of an overkill for the tiny VM I’ve got running in OCI: it only has 1 GB of memory, and the sync with Reeder is a bit on the slow side because of constant swapping. Happily, FreshRSS also comes with an option to run using SQLite, which is as lean-and-mean as it gets. I’ll set up the thing again with that as the database backend.

Tags: hacking, the-nerdy-bit