FreshRSS is a free of charge, self RSS that is hostable agregator fast, responsive and we can install on our own server.

You can learn more about FreshRSS by visiting FreshRSS website.


In this tutorial we’ll learn how to install FreshRSS on Ubuntu 14.04. We shall additionally install and configure its prerequisites


We will install FreshRSS in fresh installing Ubuntu Server 14.04. We likewise require these applications to run FreshRSS:

  • Apache 2
  • MySQL >= 5.0.3
  • PHP >= 5.3.7

Update Base System

Before we install FreshRSS, let us upgrade the device towards the latest enhance.

$ Sudo apt-get update $ sudo apt-get -y upgrade 

Install Apache 2

After applying the update that is latest to our base system, let’s start installing Apache 2 and required libraries.

$ sudo apt-get -y install apache2 apache2-bin apache2-data apache2-mpm-prefork libaio1 libapache2-mod-php5 libapr1 libaprutil1 libdbd-mysql-perl libdbi-perl libhtml-template-perl libmysqlclient18 libterm-readkey-perl libwrap0 ssl-cert tcpd 

We can check the Apache 2 service status using command below:

sudo service apache2 status  * apache2 is running 

We can also check which port Apache 2 is listening on using the command below.

 sudo netstat  apache tcp6       0      0 :::80                   :::*                    LISTEN      14873/apache2 

Install MySQL 5.6

We will install and make use of MySQL 5.6 as database for FreshRSS.

We use MySQL Server 5.6 since MySQL 5.6 is considered the most updated form of MySQL shipped with Ubuntu 14.04 Trusty Tahr.

$ sudo apt-get install that is-y 

We need to setup MySQL root password. Please input password for MySQL root user.

Verify root password.

Securing MySQL Installation

We will secure MySQL installation by running mysql_secure_installation.

Enter the root password that we set on installation.


In order to log into MySQL to secure it, we'll need the password that is current the basis individual. If you have simply set up MySQL, along withn't set the basis password yet, the password would be blank, so that you should simply press enter right here.

Enter present password for root (enter for none): okay, effectively utilized password, shifting...

Since we curently have root password set, solution this spend n.

Setting the basis password helps to ensure that no body can log in to the MySQL root individual without authorisation that is proper

You already have a root password set, so you can safely answer 'n'.

Change the root password? [Y/n] n ... skipping.

Remove the user that is anonymous enhance protection. This can make people that are sure application have correct username and password to login to MySQL. Answer with Y.

By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without having to have a user account created for them.  This is intended only for testing, and to make the installation go a bit smoother.  They should be removed by you before stepping into a production environment.

Remove anonymous users? [Y/n] Y ... Success!

We would also like eliminate root login from remote device. Solution with Y.

Normally, root should simply be permitted to link from 'localhost'.  This helps to ensure that somebody cannot imagine within root password from system.

Disallow root login from another location? [Y/n] Y ... Success!

Previously the test database is made immediately by MySQL installation, but MySQL 5.6 cannot produce test database. We could nevertheless select Y, it’ll toss mistake but that is fine.

By standard, MySQL includes a database called 'test' that everyone can access.  This will be additionally meant limited to assessment, and really should be eliminated before stepping into a production environment.

Remove Test access and database to it? [Y/n] Y - Dropping test database... ERROR 1008 (HY000) at line 1: Can't drop database 'test'; database doesn't exist ... Failed! Not critical, keep moving... - Removing privileges on test database... ... Success!

The last step is to reload the MySQL privilege table.

Reloading the privilege tables will ensure that all changes made so far will take effect immediately.

Reload privilege tables now? [Y/n] Y ... Success!

All done! If you've completed all of the above steps, your installation that is mySQL should be safe.

Thanks for making use of MySQL!

Cleaning up...

Create Database for freshrss

Now we now have a MySQL that is secure installation time to create database and user for freshrss itself.

Login to MySQL using root credential.

$ Mysql root that is-u Enter password:  Welcome towards the MySQL monitor.  Commands end with ; or g. Your MySQL connection id is 58 Server variation: 5.6.30-0ubuntu0.14.04.1 (Ubuntu)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All liberties reserved.

Oracle is a trademark that is registered of Corporation and/or its affiliates. Other names may be trademarks of their respective owners.

Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.


Create new database named freshrss using command below:

mysql> CREATE DATABASE freshrss; Query OK, 1 row affected (0.00 sec) 

Create a User for FreshRSS

The database for freshrss is ready, let’s create username and password and grant privileges to freshrss database.

Don’t forget to change the password freshrss123secret below with better password.

mysql> GRANT ALL PRIVILEGES ON `freshrss`.* TO 'freshrss'@'localhost' IDENTIFIED BY 'freshrss123secret'; Query OK, 0 rows affected (0.00 sec) 

We need to run FLUSH PRIVILEGES command so that the privileges table will be reloaded by MySQL and we can use new credential.

mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec) 

Exit from MySQL console by typing q

mysql> q 

Install PHP 5

The last component before we can install freshrss is PHP 5. We will install PHP 5 and several common PHP libraries.

$ that we have to install sudo apt-get install that is-y php5-common php5-json php5-mysql php5-readline 

Install additional php libraries:

$ sudo apt-get -y install php5-curl 

Restart the Apache 2 process so the changes will be applied

$ sudo service apache2 restart 

Install freshrss

All prerequisites is already installed. We’re ready to install freshrss. The latest stable version of freshrss is available FreshRSS release page on GitHub.

At the time of this writing, the latest version that is stable version 1.6.3, let us down load freshrss compressed file utilizing wget.

$ wget -c https://github.com/FreshRSS/FreshRSS/archive/1.6.3.tar.gz -O FreshRSS-1.6.3.tar.gz 

Extract freshrss archive:

$ tar xzf FreshRSS-1.6.3.tar.gz 

Move FreshRSS-1.6.3 directory to Apache directory.

$ sudo mv/var/www/freshrss that is freshRSS-1.6.3*****************)

Change ownership of freshrss directory to www-data user and group.

$ sudo chown -R www-data:www-data /var/www/freshrss 

The freshrss files is ready, now let's create Apache Virtual Host configuration to serve freshrss.

Configure Apache Virtual Host for http Only

Create new apache configuration file on /etc/apache2/sites-available/freshrss.conf with contents below.

<VirtualHost *:80>     ServerName freshrss.exampleserver.xyz

DocumentRoot /var/www/freshrss

<Directory /var/www/freshrss> Options -Indexes +FollowSymLinks +MultiViews AllowOverride All Require all granted </Directory>

ErrorLog ${APACHE_LOG_DIR}/freshrss.exampleserver.xyz-error.log CustomLog ${APACHE_LOG_DIR}/freshrss.exampleserver.xyz-access.log combined


Don't forget to change freshrss.exampleserver.xyz above with the domain name that you use for your freshrss installation.

Enable the site using a2ensite command.

$ sudo a2ensite freshrss 

Reload apache2 process that we want to use, we will use English in this tutorial so it read the new virtualhost configuration:

$ sudo service apache2 reload 

FreshRSS Installation Wizard

Open our FreshRSS URL, We will be redirected to FreshRSS installation wizard.

In the first page we can choose language. Simply click Go towards the step( that is next.

Step 1 will be requirements check, we should already pass all requirements by now. Click Go to the step( that is next.

Step 2 is basic setup of FreshRSS.

In this task we are able to configure just how long we should keep articles on FreshRSS, establishing standard individual credential and verification technique.

For verification technique we are going to select internet kind.

Step 3 is database setup. Enter database title and qualifications that people currently created on past action. Simply click Submit.

The installation is complete, simply click Complete installation.

We can login to FreshRSS utilizing standard credential we created on setup wizard.

After effectively login we are able to see and handle our feed registration.

Configure https just place for freshrss

Secure connection happens to be a requirement for internet application. Final action that people shall do in this tutorial is changing the connection to only use https. We assume that you already have SSL certificate and key that is private

Let's generate brand new apache digital host setup on /etc/apache2/sites-available/freshrss-ssl.conf with articles below. Do not forget to change***********) that are:


  • SSLCertificateFile
  • SSLCertificateChainFile
  • SSLCertificateKeyFile
  • <VirtualHost *:80>    ServerName freshrss.exampleserver.xyz    Redirect permanent / https://freshrss.exampleserver.xyz/ </VirtualHost>

    <VirtualHost *:443>

    ServerName freshrss.exampleserver.xyz

    DocumentRoot /var/www/freshrss

    <Directory /var/www/freshrss> Options -Indexes +FollowSymLinks +MultiViews AllowOverride All Require all granted </Directory>

    ErrorLog ${APACHE_LOG_DIR}/freshrss.exampleserver.xyz-error.log CustomLog ${APACHE_LOG_DIR}/freshrss.exampleserver.xyz-access.log combined

    SSLEngine on SSLCertificateFile /etc/apache2/ssl/freshrss.exampleserver.xyz.crt SSLCertificateChainFile exampleserver.xyz.crt that is/etc/apache2/ssl/freshrss SSLCertificateKeyFile ampleserver that is/etc/apache2/ssl/freshrss

    # Uncomment the following directive when client that is using verification #SSLCACertificateFile /path/to/ca_certs_for_client_authentication

    # HSTS (mod_headers is necessary) (15768000 moments = six months) Header constantly set Strict-Transport-Security "max-age=15768000"



    We also disable freshrss http just digital host and allow the latest digital host config.

    $ sudo a2dissite freshrss $ sudo a2ensite freshrss-ssl 

    The brand new host that is virtual need Apache mod_ssl and mod_headers modules. We need to enable those modules.

    $ sudo a2enmod ssl $ headers that are sudo a2enmod*****************)

    Now, restart Apache 2 solution therefore it will reload its setup. We have to restart in the place of reload since we make it possible for brand new module.

    $ sudo solution apache2 restart 


    In this guide we discovered how-to install freshrss on Ubuntu 14.04.

    We set up all of the prerequisites, create individual and database on MySQL for FreshRSS and configure Apache 2 digital hosts to provide freshrss.

    We additionally configure https settings for freshrss so we operate FreshRSS firmly.

    Gathering Metrics from your own Infrastructure and Applications

    Previous article

    Configuring IPv6 on Ubuntu and CentOS KVM / Cloud Server

    Next article

    You may also like


    Leave a reply

    Your email address will not be published. Required fields are marked *

    More in Apache