Miniflux - Easy, self-hosted RSS

Since the demise of Google Reader a lot of new tools and sites have tried to take over the mantle as the de-facto RSS reader for the masses. The biggest (to my understanding) is Feedly which used the shutdown to push their product, unfortunately over time the investment in the “free” Feedly seems to have slowly slipped away in favour of their Pro offering, which isn’t surprising for any company wanting to turn a profit. This issue seems to be replicated across all the hosted providers who are trying to make a profit out of a service Google had supplied for free, and old stalwarts like me still struggle with the idea of paying $3-$7 a month for aggregating RSS.

With the aim to take matters into my own hands I decided to hunt around for an open source solution that I could self host, I’m already paying for a dedicated server so why not use that to host it?

Thankfully, it seems that a lot of other people had the same issue and a large list of open source solutions had popped up. The interesting one seems to involve the “Fever” API, which is a simple method of exporting these feed readers out to mobile and desktop readers without any quirky reader dependent applications, my favourite RSS application Reeder supported this API so really helped with the decision of what solution I needed.

Miniflux seems to be the perfect balance between function and simplicity, It can be installed damn near anywhere as it only uses PHP and a few standard modules, in addition it supports importing and exporting OPML files and the Fever API to allow my desktop and mobile client to keep in sync with no extra work.

Installation couldn’t be simpler. Checkout the repo, move to a folder of your choice and throw in a Nginx configuration:

server {
  listen 80;
  server_name rss.domain.com;
  root /home/user/www/rss.domain.com/;
  index index.php;

  index index.php index.html index.htm;

  # the following line is responsible for clean URLs
  try_files $uri $uri/ /index.php?$args;

  # serve static files directly
  location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt)$ {
    access_log        off;
    expires           max;
  }

  location ^~ /data/ {
    deny all;
  }

  location ~ \.php$ {
    # Security: must set cgi.fixpathinfo to 0 in php.ini!
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass 127.0.0.1:8812;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_path_info;
    include /etc/nginx/fastcgi_params;
  }
}

Done. Your Fever API endpoint is available at /fever/ and the username and password can be configured in the UI for the application. Everything is stored in Sqlite so easy to backup and move around.

If you’re looking for something thats simple and works, i’d recommend giving it a try!