Miniflux is an open source, simple, minimalist RSS reader released under the AGPL v3 license. Developed with simplicity in mind, no social network support, no fancy features and also fast, simple and efficient.
Features
Miniflux has several main features:
- Responsive design, works with your smartphone, tablet or desktop.
- Send your bookmarks to Pinboard or Instapaper.
- Compatible with the Fever API, read your feeds through existing mobile and desktop clients.
- Use the Bookmarklet to subscribe to a website directly from any browsers.
- Import and export your subscriptions by using the standard format OPML.
- Update your feeds from a background task or from the user interface
- Themes available
- External links are opened inside a new tab with a rel=”noreferrer” attribute to respect your privacy.
- API to interact programatically with your feeds and items.
- Translated into multiple languages
- Support for RTL languages (Right-to-Left)
- No data locking, host anywhere
Objective
In this tutorial we’ll learn how to install and configure MiniFlux on Ubuntu 14.04. We’ll install all MiniFlux prerequisites before installing MiniFlux itself.
Prerequisites
We need to install these applications before we can install MiniFlux.
- Fresh install of Ubuntu Server 14.04. You can use any ubuntu flavors but using ubuntu server will make sure your server have minimalist ubuntu installation so your system will not be loaded by unnecessary softwares.
- Apache 2
- Sqlite
- PHP > 5.3.3. MiniFlux also need
php5-sqlite
and php5-PHP library
Update Base System
Before we install MiniFlux and its prerequisites let’s update the system to the latest update.
$ sudo apt-get update
$ sudo apt-get -y upgrade
Install Apache
Now the base system is ready, let’s install the Apache webserver first
$ sudo apt-get install apache2 apache2-bin apache2-data apache2-mpm-prefork libaio1 libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libdbi-perl libhtml-template-perl libterm-readkey-perl libwrap0 ssl-cert tcpd
...
Need to get 2,258 kB of archives.
After this operation, 7,917 kB of additional disk space will be used.
Do you want to continue? [Y/n] Y
Press Y
when apt ask whether we want to continue the prosess or not.
After installation we can check Apache 2 process using command below
$ sudo service apache2 status
* apache2 is running
The output above shows that apache2
process is running.
We can also check apache process using netstat
to check if it’s already listen on default http port (80).
$ sudo netstat -naptu | grep 80
tcp6 0 0 :::80 :::* LISTEN 6894/apache2
apache2
process already listen on port 80.
Install PHP 5
Our Apache 2 webserver is now ready. Next we install PHP 5 including php5-sqlite
library that is needed by MiniFlux. We can install PHP 5 and all of its components using commmand below.
$ sudo apt-get install libapache2-mod-php5 php5-cli php5-common php5-json php5-readline php5-sqlite
Since no dependency installed, apt will directly install all packages that we provided.
Install SQLite
Now let’s install SQLite. SQLite will be used by MiniFlux to store task data.
$ sudo apt-get install sqlite
Install MiniFlux
We can download Miniflux from Miniflux download page. At the time of this writing the latest version of Miniflux is v1.1.10.
Let’s download the latest stable version of Miniflux using wget
$ cd ~
$ wget -c https://miniflux.net/miniflux-latest.zip
We need unzip
to extract downloaded archive. If you don’t have unzip, you can install unzip
using command below:
$ sudo apt-get install unzip
Now let’s extract downloaded archive with unzip
.
$ unzip miniflux-latest.zip
Move the extracted folder to /var/www
directory.
$ sudo mv miniflux /var/www
Change ownership of the miniflux directory to www-data
user.
$ sudo chown -R www-data:www-data /var/www/miniflux
Configure Apache Virtual Host for HTTP Only
Create a new apache configuration file on /etc/apache2/sites-available/miniflux.conf
with the contents below.
<VirtualHost *:80>
ServerName miniflux.exampleserver.xyz
DocumentRoot /var/www/miniflux
<Directory /var/www/miniflux>
Options -Indexes +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/miniflux.exampleserver.xyz-error.log
CustomLog ${APACHE_LOG_DIR}/miniflux.exampleserver.xyz-access.log combined
</VirtualHost>
Don’t forget to swap the miniflux.exampleserver.xyz
from the example above with the domain name that you use for your Minixflux installation.
Enable the site using a2ensite
command.
$ sudo a2ensite miniflux
Reload the apache2
process so it reads the new virtualhost configuration:
$ sudo service apache2 reload
Minixflux .htaccess
configuration uses mod_rewrite
for its configuration, we need to enable the module first.
$ sudo a2enmod rewrite
Now restart apache2
process so the new module enabled will be used by Apache.
$ sudo service apache2 restart
Using Miniflux
Now miniflux is ready, point our browser to Miniflux address. We will be greeted with login page.
HP_NO_IMG/data/uploads/users/2bf921f9-3b46-43aa-a673-2a9a74a5ce9a/2015460224.png” alt=”” />
Miniflux default username and password is admin.
HP_NO_IMG/data/uploads/users/2bf921f9-3b46-43aa-a673-2a9a74a5ce9a/301484477.png” alt=”” />
Change Default Admin Password
For security reasons, we need to change default admin password. Go to preferences. Input a new password on password and confirmation column. Scroll down to the end of the page and click save
HP_NO_IMG/data/uploads/users/2bf921f9-3b46-43aa-a673-2a9a74a5ce9a/149975916.png” alt=”” />
Add Feeds
To add a feed, go to subscriptions, click add. For example let’s try adding HostPresto! tutorial, the feed address is https://hostpresto.com/community/tutorials/feed/
.
Input feed url and let’s group the feed under Tutorials group.
HP_NO_IMG/data/uploads/users/2bf921f9-3b46-43aa-a673-2a9a74a5ce9a/1197164469.png” alt=”” />
When the subscription added successfully it will show up on main page as undead.
HP_NO_IMG/data/uploads/users/2bf921f9-3b46-43aa-a673-2a9a74a5ce9a/1882850483.png” alt=”” />
Import OPML File
OPML (Outline Processor Markup Language) is an XML format for outlines (often blogrolls). We can import an OPML file to our Miniflux installation. To import OPML file we can go to subscription -> import.
HP_NO_IMG/data/uploads/users/2bf921f9-3b46-43aa-a673-2a9a74a5ce9a/2095891806.png” alt=”” />
Export OPML file
We can also export an OPML file from Miniflux, this can be a method to share our reading list to family, friends or even to the world. We can export our reading list on Miniflux from subscription -> export
Configure miniflux To Use HTTPS only
A secure connection is now a requirement for web applications. The last step that we will do in this tutorial is changing the connection to only use https. We assume that you already have SSL certificate and private key.
Let’s create new apache virtual host configuration on /etc/apache2/sites-available/miniflux-ssl.conf
with contents below. Don’t forget to change:
ServerName
SSLCertificateFile
SSLCertificateChainFile
SSLCertificateKeyFile
<VirtualHost *:80>
ServerName miniflux.exampleserver.xyz
Redirect permanent / https://miniflux.exampleserver.xyz/
</VirtualHost>
<VirtualHost *:443>
ServerName miniflux.exampleserver.xyz
DocumentRoot /var/www/miniflux
<Directory /var/www/miniflux>
Options -Indexes +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/miniflux.exampleserver.xyz-error.log
CustomLog ${APACHE_LOG_DIR}/miniflux.exampleserver.xyz-access.log combined
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/miniflux.exampleserver.xyz.crt
SSLCertificateChainFile /etc/apache2/ssl/miniflux.exampleserver.xyz.crt
SSLCertificateKeyFile /etc/apache2/ssl/miniflux.exampleserver.xyz.key
# Uncomment the following directive when using client certificate authentication
#SSLCACertificateFile /path/to/ca_certs_for_client_authentication
# HSTS (mod_headers is required) (15768000 seconds = 6 months)
Header always set Strict-Transport-Security "max-age=15768000"
</VirtualHost>
# intermediate configuration, tweak to your needs
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS
SSLHonorCipherOrder on
We need to enable two new modules, mod_ssl
and mod_headers
before we can enable new virtual host config that we just created.
$ sudo a2enmod ssl
$ sudo a2enmod headers
We will also disable miniflux
http only virtual host and enable the new virtual config.
$ sudo a2dissite miniflux
$ sudo a2ensite miniflux-ssl
Now, restart Apache 2 service so it will use both modules that we just enable and also new ssl site.
$ sudo service apache2 restart
Summary
In this tutorial we learned how-to create our won RSS reader using Miniflux on Ubuntu 14.04 We installed Miniflux on top of Apache, SQLite and PHP stack.
Hopefully using Miniflux will simplify your content collection from the internet and help you reduce time to visit each of your favorite site since you can go to Miniflux and only go to the sites if you find news or tutorial that interest you. Have fun!