OpenSource RSS Reader – Selfoss

Selfoss web based RSS reader logo

Selfoss is an open source multipurpose web based rss reader, live stream, mashup, aggregation web application written in PHP under GPLv3 licence.

Android and iOS are supported and a restful json api is provided for accessing or changing all selfoss data.The installation is relatively simple and the requirements are quite standards: – Apache Webserver (ngnix and lighttpd also possible)- MySQL, PostgreSQL or Sqlite- And PHP 5.3 or higher.So let’s see how to install Selfoss on your LAMP server. If you don’t have Apache, MySQL and PHP installed already, I suggest you to read this tutorial on how to install a LAMP server.



1) Create a dedicated folder in your /var/www such as

sudo mkdir /var/www/selfoss

2) Download and unzip the latest version (The 2.10 at this day)

cd /var/www/selfoss

You should have all the files from the archive to /var/www/selfoss now (Including the .htaccess)

3) Change the owner of the folder by apache web user:

sudo chown -R www-data:www-data /var/www/selfoss

4) Optional – Create a MySQL database (or install and use sqlite directly to avoid having to configure a database)

If you want to use MySQL instead of the default Sqlite, I can create a dedicated user/database (with PHPMyAdmin for example) and configure the default.ini file to link Selfoss with your database.

In my case, I just want to use SQLite as I will not run a lot of feeds hence SQLite should be good enough.

Don’t forget to install it with:

sudo apt-get install php5-sqlite

5) Add username/password to connect to your Selfoss instance

If you want to username/password protect Selfoss, you can modify the default.ini file and modify the 2 lines:


For the password, you will need to use the Hash generator located at http://YOURIP/selfoss/password

Selfoss - Hash Generator

6) Enable mod_rewrite and mod_headers if not done yet

sudo a2enmod rewrite
sudo a2enmod headers

7) Restart Apache

sudo /etc/init.d/apache2 restart

and you should now have access to http://YourIP/selfoss/

Selfoss - Login

If you don’t see any images, and all is blank with a simple format, you need to add

AllowOverride All

to your virtualhost (see next step) or in /etc/apache2/conf.d/selfoss.conf with:

AllowOverride All

for example.

8) Set up Cron task for regular feeds update

If you want to have a refresh of your feeds every 15mn, you can use the following way:

udo crontab -e

and add

*/15 * * * * wget -q http://localhost/selfoss/Update --output-document=- >/dev/null 2>&1

It should all be good now and don’t forget to add this blog in your RSS feeds:

Selfoss - Add Freedif RSS


Virtualhost configuration

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/selfosss 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 selfoss (In root):

nano /etc/apache2/sites-enabled/selfoss

and paste the following content:

<VirtualHost *:80>
        ServerAdmin webmaster@domain.tld
        ServerName rss.domain.tld
        Redirect / https://rss.domain.tld


<IfModule mod_ssl.c>
<VirtualHost *:443>
        SSLEngine on
        SSLCertificateFile /etc/ssl/certs/myblog.pem
        SSLCertificateKeyFile /etc/ssl/private/myblog.key

        ServerAdmin webmaster@domain.tld
        ServerName rss.domain.tld

        DocumentRoot /var/www/selfoss
        <Directory />
                Options FollowSymLinks
                AllowOverride All
        <Directory /var/www/selfoss>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all

Adapt the content (Servername, webmaster, SSL certificate and directory, …).

When done, save the file (CTRL+X then Yes) and reload apache: (In root)

/etc/init.d/apache2 reload

I Know You're Listening


Loves to discover web-based apps to install on his own server@home and write articles about it


Add a comment