---
date: "2021-07-12T11:00:00Z"
title: "Syncing RSS feeds with FreshRSS"
description: "Using FreshRSS to sync articles between clients on your devices."
tags: [100daystooffload, technology, selfhost]
---

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](https://reeder.app) - 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](https://developer.apple.com/icloud/cloudkit)?). This means that the information is not easy to extract and is potentially subject to lock-in.

Reeder also supports [FreshRSS](https://freshrss.org) 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](https://hub.docker.com/r/freshrss/freshrss). 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](/media/blog/freshrss1.png)

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](/media/blog/freshrss2.png)

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.
