Gitea, TinyTinyRSS, and FreshRSS

/media/images/freshrss2.png

While pushing code to my git server yesterday I realized I wasn't running the latest version and I decided to update.

I was a little nervous about breaking things, but I use a sqlite backing store so I don't have to worry about schema migrations, I can just back up the directory. The upgrade went fine. Apparently the program checks and migrates the schema automatically on boot so I didn't even have to worry about that going wrong. Gitea is pleasant. It's a single binary, comes already cross-compiled for my arm64 sbc, and to setup a reverse proxy you just send it through:

location /git/ {
    proxy_pass http://localhost:3940/;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
}

I wish all my network apps were as easy.

After the upgrade I started thinking about my feedreader server. My hosted tiny tiny rss feed reader isn't public and hasn't been updated in a while. As a hosted feed reader, ttrss is sufficient. It seems to handle my giant list of feeds without a problem, but it has some irritating rough edges.

The last time I installed it from scratch I discovered they'd deprecated the extension that allowed me to hit a button to advance to the next feed. TTRSS has its own built in shortcuts, but they conflict with my tridactyl settings, and you can't change them. I could use the arrow keys to advance to the next article in the list, but this was super irritating. Stepping through the list with the arrow keys would open each article, but it would continue to show the closed entries in the list above. Eventually the top of the opened article in the list would be a few steps above the bottom of the view and I would have to either refresh the feed (with the mouse), or I would have to use the page down key. As I read a feed, the articles would gradually open lower and lower in the window. Because of the gradual way it degraded I often didn't notice I was missing the bottom of images or the end of paragraphs until I ran into something I really wanted to see, and then I would have to interrupt my train of thought to fix the article position in the window. It made just using the software annoying like having a low grade headache.

It's possible this functionality has been fixed in the latest version of tiny tiny rss, but I don't know because the developer is an asshole. Rather than offering official releases he advises people to just use master HEAD. He tells you you're stupid if you try to run it in anything other than a docker container (which won't run on my arm64 sbc not to mention play nice with all my other nginx reverse proxy settings). Also he requires postgresql as a back end because he considers sqlite a toy database.

Tiny Tiny RSS was my only option when google shut down google reader, but I'm sick of its ethos, so I initiated yet another search of self-hosted feed readers. Unfortunately there arent many options. There is a go-powered hosted RSS reader called yarr but it seems too simplistic for my needs. FreshRSS was another promising option, but it uses a strange reverse proxy layout where you put some of the application in /usr/share, mark it as web readable, and then symlink a subdirectory in this filetree into your hosted directory. The reverse proxy settings also make the assumption you're not acting as a reverse proxy for anything else, and I couldn't get it running the last three times I tried it.

Energized by the asshole energy emanating from the ttrss guys I tackled FreshRSS again and finally got the service running through my reverse proxy only to discover it only gave me the choice of postgresql as a backing store (the docs say sqlite3 is the built-in default). This led to hours of trying to understand how php works. Apparently you can have the php sqlite3 module installed but not enabled. I eventually discovered that my package manager provided the sqlite module for php8.2 but not for 8.1 or 7.4. I don't know why it thinks I need three versions of php installed on my system when two of them are crippled, but the distribution is based on ubuntu, so maybe they just want to charge me for the missing debian packages.

I set it up last night and in the morning when I saw it had pulled down 6600 articles I killed the ttrss updater and replaced the ttrss tab that had been open for more than a decade with freshrss. I'm subscribed to ~300 feeds and I get 500-700 new articles every night. The sqlite database file is 45MB. There is no way in hell this needs postgresql.

/media/images/freshrss_shortcuts.png /media/images/freshrss_sticky_articles.png

FreshRSS encourages you to use sqlite. FreshRSS gives you an option to make your opened articles stick to the top of the window. FreshRSS lets you set different shortcuts. FreshRSS will let you automatically advance to the next unread feed when you exhaust the current one. FreshRSS doesn't tell you you're stupid for trying to install outside of docker. FreshRSS has actual releases and a changelog you can read on it's github page.. These things are a low bar to hit for a hosted service but rss readers never really recovered after google stabbed us in the back to promote its social network. I honestly can't recall the name of that social network now. It was killed a few years later like most google services.

I'm happy with FreshRSS, but I'm still on the market for a hosted feed reader written in go or rust, or anything really, as long as it will run on various architectures, consists of a single binary, and supports a range of databases.