FreshRSS is a free, self hostable, rss aggregator, they actually claim to be the the best one out their but only “in their opinion”, which is a funny statement that I’ve pushed me to try it out!
They got a running demo (demo/demodemo) to let you give a try or directly a quick link to their latest archive to install on your own server.
Written in PHP, FreshRSS is a simple to install yet with great features such as Multiusers, feeds statistics (how many articles per feed, per category, …), with keyboard shortcuts, Multi-languages at the installation, it also includes some social media sharing features (Twitter, Facebook, Google+) or simply by email but also with Shaarli, Wallabag or your own Diaspora pod! Its responsive design will also deliver a good experience for mobile devices!
It can access any HTTP protected (username/password) RSS feed and embed an archiving feature to regularly clean the old articles (3 months per default).
However no need to have necessary short archiving time if you fear about slowness of your instance as FreshRSS handle more than 100k articles without hassle.
So, best out there? Well, FreshRSS is clearly a good piece of work and one of my favourite among the previously reviewed Sismics Reader and Selfoss. The only missing feature for me will be the social network follow up (Twitter and even Youtube), although some 3rd party solutions exist such as RSS-Bridge, having everything included will be best as does Selfoss.
FreshRSS is still actively maintained, so we might have new features coming up this year!
Interested to run your own instance? (You should!) Here is how to:
To install FreshRSS, you will Apache2, PHP5.3.7+, MySQL 5.0.3+. If you don’t have them, please follow my previous tutorial on how to install a LAMP server.
1) Create a dedicated folder to install FreshRSS:
In root (su), type:
2) Download and extract the latest FreshRSS archive
cd /var/www/freshrss wget https://github.com/marienfressinaud/FreshRSS/archive/master.zip unzip master.zip mv FreshRSS-master/* . rm -R FreshRSS-master/ master.zip
3) Change the owner of the folder to ensure apache web user can access
chown -R www-data:www-data /var/www/freshrss
4) Install the needed PHP modules: (cURL, php-mysql,
apt-get install php5-common php5-curl php5-mysql
5) and proceed to the Web UI installer
Just point your web browser to http://IP/freshrss/p
The step 1 will check if there are any requirements not met. If all green, you can proceed to step 2, on the general configurations (How long to keep articles, authentication method, …).
On Step 3, you will need a MySQL database, if you don’t have one ready, I suggest you to use PHPMyAdmin to create one easily.
Then simply follow the rest of the steps.
You should now have a a working FreshRSS service running on your server, so don’t forget to add my feed to keep in touch!
Now you got your RSS reader working and you want to access it from rss.domain.tld or directly from mywebmail.tld, instead of using the IP/freshrss link, you will need to set up a virtualhost. And you could force HTTPS connection.
You will need to:
1) Create a A redirection in your DNS server/registrar
2) Have SSL certificate ready. If not you can read this tutorial.
3) Create your virtualhost as following:
In /etc/apache2/sites-enabled/, create a file called freshrss (In root):
and paste/adapt the following content:
<VirtualHost *:80> ServerAdmin firstname.lastname@example.org ServerName rss.domain.tld Redirect / https://rss.domain.tld </VirtualHost> <IfModule mod_ssl.c> <VirtualHost *:443> SSLEngine on SSLCertificateFile /etc/ssl/certs/myblog.pem SSLCertificateKeyFile /etc/ssl/private/myblog.key ServerAdmin email@example.com ServerName rss.domain.tld DocumentRoot /var/www/freshrss/p <Directory /> Options FollowSymLinks AllowOverride All </Directory> <Directory /var/www/freshrss/p> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> </VirtualHost> </IfModule>
Adapt the content (Servername, webmaster, SSL certificate and directory, …).
When done, save the file (CTRL+X then Yes) and reload apache: (In root)
You should now be all set!