FreshRSS Deployment and Making an RSS Feed

5 June 2023


In my exploration of the independent web, I started to form the opinion that an RSS feed is incredibly valuable for personal websites. One reason today's standard social media like Facebook works is because it's one website (or app) that users go to for seeing everything by their friends. People can make a handful of aggregators work, but everyone has their limit. RSS helps solve this problem for personal websites while maintaining their independence.

With this, I decided to make 2 changes: get an RSS reader set up so I can more easily keep up-to-date with sites, and create an RSS feed for my own site so others can do the same


----------------
FreshRSS
----------------

FreshRSS is overkill for a simple RSS reader, but I like the idea of self-hosting my stuff. There are some servers running FreshRSS that will let you make an account for free, and their integrated pretty well into micro-server providers like PikaPods. There are readers that don't require an account, but synchronizing read/unread updates and feeds pretty much requires a reader with account functionality.

Their GitHub has all the instructions needed to deploy FreshRSS to your own Linux server. I downloaded the latest release as a .tar.gz and extracted it. I placed it in /usr/share for easy access, but not so easy I delete it accidentally later. One mistake I made was with folder permissions. nginx uses the "www-data" user, so we need to give ownership of the entire FreshRSS folder and everything in it to www-data. We also need to make "FreshRSS-1.x.x/data" writable for the www-data user. Lastly, I made a symlink pointing to the ./p folder from the nginx server root. This lets me navigate to something like https://akbatten.com/rss-feed and it will pull up the web interface for FreshRSS even though it's not actually in the server root.

Before running the setup, I created a new MySQL database and user. I already had MySQL and phpmyadmin setup from the comment system, so I just created a new empty database and user through that. With the MySQL information written down, I navigated to the webpage and went through the initial setup. There isn't much to say here, it just worked smoothly. Props to the FreshRSS team for making such an easy installation process.


----------------
RSS Feed
----------------

I found several tools that create an RSS feed from your website/blog, however these didn't seem to have the level of control I wanted, or required the website to be in a certain format. I wasn't going to re-structure my whole website just for the RSS feed. That leaves manually writing the XML file.

Assuming I've deployed it correctly, my RSS feed should be viewable and relatively human-readable. I'll cover a few things of note:

RSS feed actually come in different flavors that have different tags. I went with the rss format as it seemed simple.

The pubDate field must follow that format. The time cannot be omitted, months cannot be spelled out, etc.

The <![CDATA[]]> in the description is was lets you use HTML tags like <p> or <img>

This validator from W3 gives detailed debugging feedback for writing your own RSS file.




----------------
Comments
----------------