FreshRSS on docker with PostgreSQL and newsboat on top

Self hosted RSS aggregator. If you still miss Google Reader here's the antidote.

FreshRSS on docker with PostgreSQL and newsboat on top

Once you have a docker server up and running you get the itch to install and try stuff around. I love RSS feeds for the simplicity and the lack of page bloat and advertisements cluttering my reading view. One of my most favorite applications is newsboat RSS reader that works on the command line where images and JavaScript are banned for life.

The dark theme is just one of many you can choose from

After Google Reader was killed the need for an always-on feed reader led me to newsboat. I still needed to have a way to view feeds with images but simply clicking on links and having my browser open them helped with that.

While looking on dockerhub for anything that could be of interest FreshRSS came up along with some great instructions over on the Black Void Club blog that I followed.

The whole process from start to finish is a little more involved than a simple all in one docker image. You have to start up and initialize a PostgreSQL database first, once that is finished you can carry on with the FreshRSS installation BUT you might also need to set up pgAdmin in order to manage the initialization of Postgres. Keep in mind that pgAdmin needs only the server URL without the HTTPS part on initial db connection.

Setting up the Android sync was also met with some hurdles like having to change the config.php default URL of the site to point to https://freshrss.lan:8443 in order to have HTTPS working. Even then Readrops, the Android reader I chose to use, had issues with authentication, so I figured I could initially test it out over HTTP since this whole setup is internal with the help of a VPN for external access. That worked, I've yet to test out and make the HTTPS connection work. It's a self-signed cert thing I'm sure.

Newsboat also gave me some headache setting up the FreshRSS API URL in order for things to work. What finally worked was to turn to the HTTP port and find a solution for the HTTPS later on. The URL I had to use on newsboat was http://freshrss.lan:8080/api/greader.php. Perhaps I'll set up my firewall to only accept connections from my own IPs just as an extra step. The passwords go in the clear, I know, still it's an RSS reader, on docker, not much in the way of a security threat there.

Second day was not as great as the honeymoon phase of the first day. The feeds stopped syncing sometime in the middle of the night and the process refused to resume. At first, it seemed like a feed not available error that stalled the whole process but after some further digging no solid clue as to why things halted in the after hours was found.

I deleted everything, copied the backed up newsboat config along with the cache, you have to love simple setups, and fired up newsboat as a backup up until I manage to sort FreshRSS out.

Some debug info from the FreshRSS GitHub that helped later on

# See FreshRSS data if you use Docker volume 
docker volume inspect freshrss-data
sudo ls /var/lib/docker/volumes/freshrss-data/_data/
# See Web server logs
docker logs -f freshrss
# Enter inside FreshRSS docker container
docker exec -it freshrss sh
## See FreshRSS root inside the container
ls /var/www/FreshRSS/

I figured that the folks have cleverly put all the configs and keys neatly tucked away in a folder inside the persistent directory on the host appropriately named /config.

I had the suspicion that the YouTube RSS was at fault for the whole sync midnight grind and on my second attempt to make this thing work I pulled them out of the OPML in order to figure out whether on not they were indeed the culprit.

All in all I'm really pleased that I can finally have a self-hosted Google Reader alternative that I don't even have to expose to the internet to work.