The shutdown of Pocket (that I didn't hadn't used in a long while) got me into self-hosting my RSS Reader and my Read-It Later systems. When I bought my Synology NAS a few years ago, I unknowingly bought a model that has an ARM processor, which does not support Docker. But thanks to SynoCommunity packages, I can install things that do work for my system – they just don't run in a container.
I chose Selfoss as the RSS reader. It has a great mobile site and only uses a sqlite database by default. The username/password is set in a config file which is kinda weird but it makes is less database-intensive and makes it easy for you to change.
For read-it-later, it was an easier decision – I chose Wallybag, which is in very active development and has a well-documented API and mobile site. I find that it's very slow to add items sometimes but overall the formatting is very good (except for Six at 6, which I should report).
Both apps work really well on desktop and mobile, without separate apps and they both have good and documented APIs. I should state that Wallbag has good apps on iOS and Android but they are totally not necessary.
Part of my problem in setting these up is that SynoCommunity doesn't provide a lot documentation on how these packages are setup and you really need to do some configuration on your own to get them working. Here are some of my notes:
Selfoss
The installation folder is in /volume1/web_packages/selfoss and is only readable root. The URL is https://<ip or host>/selfoss/
The installation documentation is here: https://selfoss.aditu.de/docs/administration/installation/basic/
But the only thing you really need to look at is the configuration options: https://selfoss.aditu.de/docs/administration/options/
- Copy config-example.ini to config.ini
- Need to set the username/password in
config.ini
I don't use the MariaDB database option but just use the SQLite database for simplicity – it's just me using this.
One thing you need to do it to have a scheduled job to update the feeds. You can do this manually in Selfoss by hitting a button but why do that? I simply wrote this shell script then scheduled that hourly in Task Scheduler. You don't want to put it in cron (though that is installed) because it will disappear when you reboot.
Wallabag
I found Wallabag to be the most frustrating of the two because the package sets some defaults that aren't necessarily documented as well as knowing a few more things about your Synology system.
The install folder is /volume1/web_packages/wallabag and the URL is https://<ip or name>/wallabag/web/. You will need the root password of the MariaDB for the package to install. You will also have to set a database password for the wallabag user – the install script will create that user and a wallabag database.
The default Wallabag admin name is wallabag and that is the password as well – it should make you change them as you log in.
Wallabag was quite slow to load when I first installed it on my Synology but after I did the latest package update to Wallabag, it's quite a bit faster.
Merging the Two
A nice thing about self-hosting is that you can merge the apps together in different sort of ways and not have to worry about what happens in the connections. Both Wallabag and Selfoss have APIs both documented in Swagger docs: Wallabag, Selfoss. Authenicating to the APIs are very different tho: in Wallabag you use their OAuth API, so you have to make Client IDs and Client Secrets for your user within Wallabag. Selfoss seems more mysterious but actually is very simple, especially when using Python:
# use a session, not the raw request object
session = requests.Session()
response = session.post(f"{SELFOSS_HOST}/login", data={"username": SELFOSS_USERNAME, "password": SELFOSS_PASSWORD })
# then reuse the session object and you are auth'ed
response = session.get(f"{SELFOSS_HOST}/items?type=starred")
I posted my scripts on GitLab, in case anyone finds them useful or simply wants some inspiration. I have a few more notes in the readme there.
This system has served me well for months so I hope these notes are useful for others.