OpenSource RSS Reader – Tiny Tiny RSS

tiny tiny rss (TTRSS) logoFollowing my previous articles on finding a good RSS Reader to manage all my favourite feeds (Like Google Reader, Flipboard, Newsstand, Feedly,….) but directly from my own server (Self-hosted server), it’s time to test and write a small article on Tiny Tiny RSS.

Tiny Tiny RSS is probably the most popular RSS Reader. It’s an open source web-based news feed (RSS/Atom) reader under GPLv3.

It also includes keyboard shortcuts, multi-users, OPML import/export, multi-languages, filters, podcasts, ….

On of its strength is the various list of plugins and themes available, on top of an official Android app.And here is how to install it on Debian/Ubuntu server. I assume you have a working LAMP server or similar. (They recommend having PHP 5.3 and PostgreSQL or MySQL (Although PostgreSQL should be faster than MySQL, I’ll use MySQL in this tutorial as it is more common)

TTRSS Screenshot


1) In your /var/www, download the latest archive

cd /var/www
wget -o

2) Extract the archive and rename it to have a nice folders organization

tar -xzf archive.tar.gz\?ref=master
mv tt-rss.git/ ttrss

3) Change folder owner to apache web user

chown -R www-data:www-data /var/www/ttrss

4) Go to http://yourIP/ttrss/install/ to run the web based installationYou will need to create a dedicated database/user. To do so, I suggest you to use PHPMyAdmin, which will ease the process.On the installer, select your Database type (MySQL) and enter the username/password and dedicated database name. If installed on localhost, you will not need to set any Host name and port. Here is my configuration’s example.TTRSS - InstallIf the configuration works (“test configuration”), you can initialize the database.It will generate a configuration file that you can actually either copy/paste manually or simply save it through the web installer (That’s where it’s good to have proper permission on ttrss folder)When done, you’re good to go to your Tiny Tiny RSS instance!
TTRSS - Log in

The default admin username/password combo is simply admin/password.You will be able to manage the entire list of feeds, add users, filters, labels, etc…so don’t forget to add feeds!5) Set up a cron task to update regularly your feeds.You will need to create a cron job to update your feeds regularly. If you want for example to update your feeds every 30m, you can edit your crontab

crontab -e

and add the following line at the end:

*/30 * * * * /usr/bin/php /var/www/ttrss/update.php --feeds --quiet


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

nano /etc/apache2/sites-enabled/ttrss

and paste/adapt 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/ttrss
        <Directory />
                Options FollowSymLinks
                AllowOverride All
        <Directory /var/www/ttrss>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all

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

The first part will redirect all the connection from port 80 (HTTP) to port HTTPS (port 443) to force secure connection. If so, please configure your SSL certificate.

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

/etc/init.d/apache2 reload

You should now be all set!


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


Add a comment