Will's avatar

⬅️ See more posts

Syncing RSS feeds with FreshRSS

12 July 2021 (2 minute read)

🔮 This post is also available via Gemini.

100daystooffload technology selfhost

💯 100 Days to Offload

This article is one of a series of posts I have written for the 100 Days to Offload challenge. Disclaimer: The challenge focuses on writing frequency rather than quality, and so posts may not always be fully planned out!

View other posts in this series.

I enjoy reading my RSS feeds across my devices - whether it’s on my phone when out and about, my Mac in between bouts of work, or my iPad when in downtime.

Being able to sync feeds across these devices is important to me, both so I can maintain a single collection of feeds and to ensure that I can keep track of read/unread articles as I switch devices.

There are lots of web-based clients available, but using Reeder - a native app - gives a far nicer reading experience. There are lots of other clients for other types of devices too.

By default, Reeder syncs using iCloud (I guess using CloudKit?). This means that the information is not easy to extract and is potentially subject to lock-in.

Reeder also supports FreshRSS as a backend. FreshRSS is a self-hosted feed aggregator with a web UI. Importantly, the project also includes a Google Reader compatible API, which allows it to act as a backend for Reeder (along with many other compatible clients).

This reduces the lock-in, and there is a clear flow of data and source of truth. A much more open arrangement than syncing via iCloud.

FreshRSS can easily be run using Docker. I recommend setting up a (sub-)domain for it and running it behind a reverse proxy that will handle the TLS side of things.

Once setup, you should be able to navigate to your instance using the domain you chose in order to register a new account. Once logged-in you can begin to subscribe to feeds, import settings, and change some of the administrative options (e.g. to disallow additional registrations).

One setting in particular (under Administration -> Authentication) allows you to enable API access for use by app clients.

The authentication settings in FreshRSS

Once that’s enabled you should be able to configure your client to use your FreshRSS instance as a backend. For example, in Reeder I go to Accounts -> Add Account -> FreshRSS and then enter the server details:

Adding a new FreshRSS server in Reeder

For the Server field, enter your domain plus the /api/greader.php path at the end to allow the client to integrate with the API.

Once done, you can manage your feeds as usual by subscribing and organising into folders from your client. Then, if you login to your FreshRSS instance within clients on your other devices, everything should be kept in-sync.

✉️ You can reply to this post via email.

📲 Subscribe to updates

If you would like to read more posts like this, then you can subscribe via RSS.