Image of the glider from the Game of Life by John Conway
Skip to content

Tiny Tiny RSS - The Google Reader Replacement

With all the weeping, wailing and gnashing of teeth about Google killing Reader, I figured I'd blog something productive. Rather than piss and moan, here is a valid solution you can build for at most two bucks, using entirely Free Software, running on your own server, under your control. The solution is to install Tiny Tiny RSS on your own server, and if you have an Android smartphone, the official Tiny Tiny RSS app ($2 for the unlock key (support the developer- this stuff rocks)). Here are the step-by-step installation directions that should get you an up-and-running Reader replacement in less than 30 minutes.

First, create a directory on your webserver where you will install Tiny Tiny RSS. You will need Apache, lighttpd, Cherokee, or some other web server, PHP with the necessary modules as well as the PHP CLI interpreter, and either MySQL or PostgreSQL as prerequisites.:

# mkdir /var/www/rss
# wget
# tar -xf 1.7.4.tar.gz -C /var/www/rss/
# chown -R root.www-data /var/www/rss/
# chmod -R g+w,o+ /var/www/rss/

Pull up the web interface by navigating to (replace "" with your domain name). The default login credentials are "admin" and "password". Make sure to change the default password. Also, Tiny Tiny RSS uses a multiuser setup by default. You can add additional users, including one for yourself that isn't "admin", or you can change it to single user mode in the preferences.

After the setup is the way you want it, you'll want to get your Google Reader feeds into Tiny Tiny RSS. Navigate to Reader, and export your data. This will take you to Google Takeout, and you'll download a massive ZIP archive, that contains an OPML file, as well as a ton of other data. Grab your "subscriptions.xml" from that ZIP file, and import them into your Tiny Tiny RSS installation.

One awesome benefit of Tiny Tiny RSS, is that it has a built-in mobile version, if browsing the install from a mobile browser. It looks good too.

The only thing left to do, is navigate to the preferences, and enable the external API. There are additional 3rd party desktop-based readers that have Tiny Tiny RSS support, such as Liferea and Newsbeuter. Even the official Android app will need the option enabled. This will give you full synchronization between the web interface, your Android app, and your desktop RSS reader.

Unfortunately, Tiny Tiny RSS doesn't update the feeds by default. You need to setup a script that manages this for you. The best solution is to write a proper init script that starts and stops the updating daemon. I didn't do this. Instead, I did the next best thing. I put the following into my /etc/rc.local configuration file:

#!/bin/sh -e
# rc.local
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
# In order to enable or disable this script just change the execution
# bits.
# By default this script does nothing.

sudo -u www-data php /var/www/rss/update_daemon2.php > /dev/null&
exit 0

A couple of things to notice here. First, the redirection to /dev/null. Whichever terminal you execute that script from, it will send a ton of data to STDOUT. Also, if it doesn't succeed, the redirection to /dev/null may not display some error output. So, only after you are sure that everything is setup correctly, should you be redirecting the output. Second, is the fact that we are running the script as the "www-data" user (the default user for Apache on Debian/Ubuntu). The script should not run as root.

Now, execute the following, and you should be good to go:

# /etc/init.d/rc.local start

You now have a web-based RSS reader licensed under the GPL running under your domain that you control. If you have an Android smartphone, then install the official Tiny Tiny RSS app, along with it's unlock key, and put in your username, password, and URL to the installation. The Android app is also GPL licensed. Make sure you purchase the unlock key, or your app will only be good for 7 days (it's trialware).

Lastly, both Liferea and Newsbeuter support Tiny Tiny RSS. However, make sure you get the latest upstream versions from both, as Tiny Tiny RSS changed their API recently. For Newsbeuter, this means version 2.6 or later (I actually haven't tested Liferea). I'll show how to get Newsbeuter working with Tiny Tiny RSS. All you need to do, is edit your ~/.config/newsbeuter/config file with the following contents:

auto-reload "yes"
reload-time 360
text-width 80
ttrss-flag-star "s"
ttrss-flag-publish "p"
ttrss-login "admin"
ttrss-mode "multi"
ttrss-password "password"
ttrss-url ""
urls-source "ttrss"

Restart Newsbeuter, and you should be good to go.

You now have a full Google Reader replacement, with entirely Free Software. Synchronization between the web, your phone, and your desktop, including a mobile version of the page for mobile devices. And it only cost you two bux.

{ 12 } Comments

  1. Evgeni | March 17, 2013 at 11:33 pm | Permalink

    You don't even need to spend $2 as the Android app is FOSS and available for free at F-Droid 😉

  2. Tomáš | March 18, 2013 at 2:11 am | Permalink

    How much hardware power tiny tiny rss needs? I tried to search for an openwrt based solution but did not find any.

  3. Petre | March 18, 2013 at 5:20 am | Permalink

    Any known trick to get the posts themselves from Google? I find myself constantly searching through reader for posts i've read months or years ago (which are no longer in the current feed and possibly not on the publisher's site anymore).

    As far as I can tell, the only way of getting them out is screen-scraping Reader itself. Getting them into TT-RSS's database should be easier. Has anyone done something like this yet?

  4. Adam Ziaja | March 18, 2013 at 9:11 am | Permalink

    RSSOwl is also good.

  5. Aaron Toponce | March 18, 2013 at 12:59 pm | Permalink

    @Evgeni Yes, it's Free Software, but it's still trialware. It will only bee good for 7 days, then you will need the key for continued functionality. Feel free to disassemble and reverse engineer it, so you don't need the key, but with software this good, I have problems with supporting the developer, and $2 certainly isn't going to break the bank.

    @Tomáš I'm not sure, actually. I have it running a fairly beefy server, but I'm guessing anything pretty light would work. All you need is a web server and a db server. So, whatever hardware will support that.

    @Petre You must use Google Takeout, as mentioned in the post. Get the ZIP file, extract out the settings.xml file, and import it into Tiny Tiny RSS.

    @Adam Siaja Does RSSOwl support Tiny Tiny RSS?

  6. josh panter | March 18, 2013 at 8:14 pm | Permalink

    So, I've used ttrss on and off for a few years. I really like this app. But I always end up getting rid of it for wreeking havok on mysql. It just eats and eats... anybody use this with postgresql?

  7. josh panter | March 18, 2013 at 11:51 pm | Permalink

    seems to be performing better with postgresql. much faster load times, much less hang, if any.

  8. Aaron Toponce | March 19, 2013 at 10:19 am | Permalink

    I personally haven't noticed any issues with MySQL on the backend. Everything seems snappy fast here, and the load on the SQL server is minimal.

  9. llwynrt | March 19, 2013 at 6:02 pm | Permalink

    "Lastly, both Liferea and Newsbeuter support Tiny Tiny RSS. However, make sure you get the latest upstream versions from both, as Tiny Tiny RSS changed their API recently. For Newsbeuter, this means version 2.6 or later (I actually haven’t tested Liferea)"

    tested with last version of liferea (stable and unstable) and it doesn't work 🙁

  10. Mark Preston | June 24, 2013 at 6:27 pm | Permalink

    My terminal is asking me which db I want: mysql or pgsql. And pgsql is highlighted. So I'm going to select that as I can't keep the computer on until I get an answer to this question? Which one should I have used? This is a stock Ubuntu 12.04 LTS (actually a fresh install). If things "blow up" I'm gonna un-install and try the mysql, but somebody somewhere, should write a beginner's How-To. Thank you for your time.

  11. Mark Preston | June 24, 2013 at 6:32 pm | Permalink

    Ah, no, the terminal said the postgre db was not configured and did I know whether it was configured and abort, ignore or some others, and I had to abort.


  12. Sven | August 22, 2013 at 11:50 pm | Permalink

    Good read. I use ttrss for a long time. But I didn't know about Liferea and Newsbeuter supporting Tiny Tiny RSS. I'll give that a try. Thanks for you post!

Post a Comment

Your email is never published nor shared.