Installing Wallabag on Fedora 31

November 19, 2019 ยท 4 minute read

Posted in: wallabag fedora kobo reading

After I decided to give KOReader another try, I knew that I needed some way of getting news articles onto my Kobo. The methods that KOReader supports are RSS feeds, Send2Ebook, and Wallabag. I investigated each of these methods at least briefly.

I ruled out Send2Ebook because it involves the client app sending your documents to an FTP server, and I’m not willing to run an FTP server in the year 2019 CE.

The path of least resistance for me would have been to use RSS feeds. I have a couple of ways I can get things I want to read later into an RSS feed. I get a lot of my articles to read via tt-rss, and it would not be a big change to my workflow to use “publish to tt-rss” from the mobile app or a bookmarklet to save my read-later articles. Unfortunately, for whatever reason, the KOReader RSS downloader plugin does not like the rss feeds produced by TT-RSS.

The other place I could get my read-later articles into an RSS feed was on Pinboard, a subscription based service. I had already been using this for my read-later articles, and it is possible to get an RSS feed for a given tag, or, in this case, unread articles with a given tag. I never got around to seeing if this feed worked with KOReader, because I decided to give Wallabag another try.

Now, I have tried installing Wallabag before, and have not met with much success. I won’t go too much into the failures, except to say that the install script does not seem to be well tested with PostgreSQL, and trying to get it to work with it, my preferred database, was beyond my abilities. The docker images seem like they would make installation a simple one-command process, but in fact, on Fedora, SELinux controls on the persistent volumes look like a hard problem to solve. Once I gave up and installed it locally with MariaDB (the community fork of MySQL), everything actually went very smoothly.

The Wallabag plugin in KOReader is actually very good. It’s a little bit of work to set up the long credential strings, but the app interface tells you where to find the config file they go in when you have your reader plugged into your computer, so that made copying them not too hard. Other than that, everything is pretty smooth. The plugin can automatically download unread articles, possibly only those with a particular tag, and can automatically delete (archive, on the server side) ones that you’ve marked as read. It is almost as smooth as the Pocket integration in Nickel (the stock firmware), except the epub generation is not quite as smooth, and there’s no choice to sync automatically on a schedule. The Firefox extension is extremely good; better than the Pinboard extension, almost as good as the built-in Pocket support.

Quick setup guide for Fedora 31

This is just a quick guide that purports to tell you how installing Wallabag on Fedora 31 differs from the stock install-from-source instructions. These instructions use MariaDB and Apache HTTPD.

Install MariaDB-server with the default settings, start it, and enable it.

Download the Wallabag current archive, and unpack it to /var/www/wallabag. Change the ownership of that folder to apache.apache, and label it for SELinux as read-write web content:

sudo chown -R apache.apache /var/www/wallabag
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/wallabag(/.*)?'

Run the install script as the apache user, not as yourself, and not as root.

sudo -u apache make install

Accept the defaults from the script except for obvious things like your hostname. Put wallabag on a subdomain of your domain (wallabag.mydomain.org), so you don’t have to worry about rewrite rules and such. Add that subdomain to your LetsEncrypt certificate.

Follow the instructions for editing your httpd.conf. In my case, I had to add the virtual host to /etc/httpd/conf.d/ssl.conf instead, as I have an https-only Apache install (nothing on port 80 except redirect rules to port 443). Also, I think you have to add the lines specifying your cert to every VirtualHost block, in order to make sure they’re all the same and SNI works correctly.

If you want imports from Pinboard and Pocket to work, you need to install redis, start it, and enable it. You don’t need to configure it if it’s on the same host as your webserver. Log into your wallabag server and see that it works. Then go into its settings and enable redis for asynchronous imports. Then follow the instructions on setting up a cron job to run redis imports.

That’s kind of a lot, but that should basically be it. After getting everything set up, I’m quite happy with my Wallabag install and how it’s working with KOReader.