Self-hosted alternative to Google Reader: selfoss
No no no! Google has just announced it is shutting down Reader on 1 July 2013.
Personally, I can’t really understand this. It is a good product, with surely plenty of advertising and marketing opportunities. Nevertheless, there’s no point railing against the decision. It was “free”. It was good while it lasted. I shouldn’t complain.
Like many people, this leaves me scrabbling around for an alternative. There are one or two similar web-based services out there, but having been burnt once by the whim of a content publisher, I would rather take my destiny into my own hands going forwards. In short, this means setting up a web-based RSS reader on my own server.
There are a few features I’ve come to regard as indispensable in a news reader:
- Keyboard shortcuts
- Desktop- and mobile-friendly interfaces
- No limits on number of subscriptions
- Responsive (uses Ajax)
It didn’t take too much searching to find a solution that looked ideal: selfoss. The author describes selfoss as:
The new multipurpose rss reader, live stream, mashup, aggregation web application
The features of selfoss that stood out most to me were:
- web based
- open source
- mobile support (Android, iOS, iPad)
- lightweight PHP application
- supports MySQL
There are one or two similar projects out there, but selfoss most closely fits my requirements and seems to be in a good state of development. Interestingly, within 36 hours of Google’s announcement it was retiring Reader, a selfoss user called Michael Moore had written code for selfoss to import OPML files – which is the format we’ll be exporting from Google.
Preparing your web server
If you’ve followed my guide to DIY web hosting, you’ll be able to do what I did:
- Create a new virtual server in Virtualmin (e.g. myfeeds.fredbloggs.com)
- Configure my external DNS host to point to this new website (I host my main domains with GoDaddy and manage this through its DNS control panel)
- Configure my local DNS server similarly (I run an internal DNS server, to avoid the problem of hairpin NAT)
- Set up a dedicated MySQL user for the new database Virtualmin created
Really quite simple:
- Download the latest zip file from GitHub to the root directory of your new virtual web site: eg
wget https://github.com/SSilence/selfoss/archive/master.zip. At the time of writing, version 2.2, which is the version that includes OPML import, is only available on GitHub, not on the main selfoss website.
- Move files into place:
mv selfoss-master/* .; mv selfoss-master/.* .
- Tidy up:
rm -r master.zip selfoss-master
- Set permissions as described on the selfoss website:
chmod a+w data/cache data/favicons data/logs data/thumbnails data/sqlite public/
config.ini. You’ll probably want to change
mysql, and set
db_password. You may also want to set
password. You actually enter a hash of the password here, rather than the password in plain text. To generate this hash, browse to selfoss/password (e.g.
- You’ll most likely update feeds using a cron job. Every 30 minutes is enough for me, so I made an entry in
10,40 * * * * fredbloggs wget -O - -q -t 1 http://myfeeds.fredbloggs.com/update
Migrating from Google Reader
The first step is to export your existing RSS subscriptions from Google Reader. Proceed as follows:
- Log into Google Takeout, Google’s data export service.
- Ensure “Reader” is displayed and click “Create archive”
- Click “Download”
- You should receive a zip file that contains (amongst other things) your RSS subscriptions in an XML file called “subscriptions.xml”. Extract that file.
- In version 2.2, at least, there’s no direct link to selfoss’s new OPML import page, so type /opml in your browser (e.g.
- Upload the subscriptions.xml file
- Click the “Update” link to force selfoss to commence loading your feeds.
- Start whizzing through your RSS feed using the keyboard shortcuts >t< ("throw" - i.e. mark this item as read and open next item) and >r< (reload current view)
Be sure to add my RSS feed to selfoss for more great articles!
selfoss code and logo copyright © Tobias Zeising. All rights acknowledged.