Syndicated content is one of the most important achievements of Web 2.0. Many news sites and blogs make their news available on a home page as well as through special newsfeed formats like RSS or Atom. These formats not only contain the news itself but also use XML tags to supply certain data about the news, such as title, author, and language of the text. This tagging makes the automated processing of news much easier – but, you do need a feed reader. With this type of program, you can subscribe to feeds from your favorite news sites, and the software will download the latest articles at regular intervals. You can then mark, sort, archive, and even delete these feeds as desired.
When you install only a local version of the feed reader software on the desktop, you run into a problem once multiple devices are used. At that point, it becomes necessary to synchronize diverse data constantly among the devices, particularly the feed subscriptions. Starting in 2005, Google offered its own reader as a terrific alternative. It ran inside a browser window, making it possible to access various feeds and their accompanying preference settings from any device. Additionally, the barriers to adoption were low; a Google account was sufficient to get started. However, in 2013, the search engine giant withdrew Google Reader as part of streamlining its product portfolio.
Alternatives
Of course, now several alternative readers offer similar functionality. One example is the web service Feedly (Figure 1), but, here again you run the same risk as with Google Reader: The provider [1] might terminate its service.
Figure 1: Feedly.com offers less safety than Tiny Tiny RSS on your Pi.
Therefore, the safest alternative appears to be hosting this type of web service yourself. Thanks to Tiny Tiny RSS [2], you can do so without much effort. In theory, you could even store the software scripts on the web space of a hosting provider of your choice; however, this solution would be anything but optimal. Aside from making you dependent on the availability of the selected web host, exactly as you would be on a web service, this approach would theoretically allow employees of the web host to access your data and learn which news sources you especially prefer.
Thus, hosting Tiny Tiny RSS yourself on your Rasp Pi promises not only the highest possible continuity but also the best data security. In your household, it then becomes child's play to read the bundled news feeds of the Pi server – even via several client devices – whenever you want.
Basic Configuration
For the following example, I assume you use Raspbian or a distribution similarly based on Debian on your Pi. To begin, install the required packages that will allow your mini-computer to serve dynamic web pages via the following console command:
$ sudo apt-get install apache2 mysql-server mysql-client php5 php5-mysql php5-curl
After a while, a configuration dialog will ask you to create a MySQL password, which you should by all means record. In case a LAMP environment is already running on the Raspberry Pi, you should also check to see whether Curl support for PHP (package php5-curl) was installed, because Tiny Tiny RSS requires it.
Next, display the website for Tiny Tiny RSS in a web browser and scroll down to the Download section. Save the offered tarball to your Rasp Pi. In your console, change to the directory in which you stored the archive and enter the sequence of commands from Listing 1. It is necessary to adapt the name of the download archives appropriately, because it contains the actual version number. The developer is to be commended for publishing updates very frequently and at short intervals.
$ sudo mv Tiny-Tiny-RSS-<versionnumber>.tar.gz /var/www/
$ cd /var/www
$ sudo tar xvfz Tiny-Tiny-RSS-<versionnumber>.tar.gz
$ sudo rm Tiny-Tiny-RSS-<versionnumber>.tar.gz
$ sudo mv Tiny-Tiny-RSS-<versionnumber> tt-rss
$ sudo chmod ugoa+rw tt-rss
You still need to make a request to create a new database on the freshly installed MySQL environment. This step can be quite easily accomplished with the help of the shell client for MySQL, which was installed during the first step (Listing 2).
$ mysql --user=root --password=<MySQL-password>
mysql> CREATE DATABASE ttrss;
mysql> QUIT