RSS (Really Simple Syndication) is a way in which people can subscribe to a feed on a web site. Instead of visiting a web site to see what if any new articles of interest have been published, RSS may be used to detect new articles and possibly alert you when something new is available. An RSS Aggregator is a centralized system that subscribes to multiple RSS feeds and provides one place to view them all. In my case I have multiple news and humor sites to which I subscribe and want to be able to read all the articles from those feeds on multiple devices such as a computer, a phone, and a tablet. The main goals of my RSS Aggregation implementation are:
- No reliance on third-party services and instead host all the necessary capabilities on my home network.
- Ability to centrally control subscriptions from multiple RSS feeds.
- Ability to read and manage the aggregated feeds from multiple devices.
- Have all devices remain synchronized in what feeds are available, what has been read, and any bookmarks or "favorites".
To implement this solution I am using the following technologies:
- unRAID server for hosting the RSS Aggregator in a Docker container
- freshrss as the RSS aggregation server software
- MariaDB as the database supporting freshrss
- FeedMe as a client for reading and managing articles and feeds on Android devices
- NGINX as an SSL (encryption) termination point and proxy to the freshrss service
- Let's Encrypt for certificates used for SSL encryption
The use of unRAID, NGINX, and Let's Encrypt are discussed more in other articles. The reason I am using NGINX as a proxy is that freshrss does not have integrated SSL support. Without SSL your login and password are sent to the server without any protection so anyone listening to the connection, (think about free WiFi offerings at many restaurants, hotels, and businesses), can potentially capture your user name and password. SSL protects against this exposure by encrypting your connection so anyone capturing the data will not be able to read it.
There are a few different options for RSS readers and RSS aggregation servers, some of which I like more than what was ultimately chosen due to features or user experience, but the chosen software was the best for me that met all my goals without any major gaps or usability issues. Since there is a supported Docker container for freshrss in the unRAID Community Applications, installation was straight-forward. While using an external database is optional, I like to use one since it allows me to easily move the freshrss software to a different server and retain all the configurations and settings. For the external database I am using MariaDB in another Docker container running on an unRAID server. Finally, to allow connections from clients to be encrypted, I use NGINX with Let's Encrypt as a reverse proxy in front of the freshrss server.
On the client side I mostly use Android-based tablets and phones for reading. Unfortunately, most if not all the RSS clients I investigated that allowed for centralized control over the feeds and read status were tied to a third-party service. The FeedMe client, however, offers integration with a few different aggregation services including freshrss. The freshrss software also provides a web-based interface that may be accessed using a standard web browser on things like Windows or iOS-based devices.
After using this solution for several months, I have no major complaints or things that I would like to improve upon.