Tiny Tiny RSS mit nginx und MySQL

Man betrachte folgendes Problem:

Ihr wollt die RSS Feeds eurer Lieblingsblogs mittels eines RSS Readers lesen.

Das ist ja noch kein großer Akt. Reader installieren, Feed abonnieren, fertig.

Problematisch wird die Sache, wenn mehrere Geräte genutzt werden sollen. Der Lesefortschritt soll doch bitte über sämtliche Geräte hinweg synchronisiert werden. Man möchte sich ja schließlich nicht während der Vorlesung/Arbeit(spausen) mit seinem Handy durch die ganzen Einträge wühlen, die man schon zu Hause während des Frühstücks gelesen hat. Da würde man ja vielzuviel Zeit verschwenden, die man sonst anderweitig hätte "nutzen" können.

Zum Glück für den Arbeitgeber gibt es auch für dieses Problem eine Lösung.

Man könnte natürlich eine plattformübergreifende Readersoftware nutzen und sich mit den eingebauten Synchronisationsfunktionen rumärgern bzw die Feedliste+Chronik über Dienste wie Dropbox hin- und herschieben, aber das kann ja jeder. Die gewünschte globale Verfügbarkeit lässt sich mit dieser Methode auch nicht erreichen, da man schlecht auf fremden Geräten irgendeine Readersoftware installieren kann/darf. Die zuständigen Admins/Besitzer haben bestimmt eine Riesenfreude daran hinter irgendwelchen Nutzern herzuputzen.

Alternativ könnte man sich auch via SSH auf einen Rechner einwählen auf dem Newsbeuter oder ein anderer konsolebasierter Reader läuft. Aber auch hier stellt sich wieder die Frage der Verfügbarkeit. Während auf vielen Linuxsystemen ein SSH-Client zur Grundausstattung gehört, sucht man auf Windowsrechnern oft vergeblich danach. Außerdem ist diese Lösung auf Dauer selbst für mich zu umständlich, da man bei einigen Feeds zwischen Konsole und Browser hin-und herwechseln muss, will man einen Artikel komplett lesen.

Und hier kommt Tiny Tiny RSS ins Spiel.

TT-RSS ist ein auf PHP und Ajax basierender RSS-Reader, der via Browser genutzt werden kann, d.h. man kann von jedem Gerät, welches über einen Browser und eine Verbindung zum Internet verfügt, darauf zugreifen und da sowohl die Feedliste als auch die Chronik serverseitig gespeichert wird, braucht man sich um die Synchronisation auch keine Sorgen zu machen.

Kommen wir nun zum spaßigen Teil.

Voraussetzungen:

TT-RSS unterstützt unglücklicherweise nur MySQL und PostgreSQL, somit fällt die simple Lösung via SQLite leider aus.

Glücklicherweise ist MySQL auch fix aufgesetzt.

# apt-get install mysql-server mysql-client php5-mysql

Während der Installation wird auch gleich verlangt, ein Passwort für den Datenbankbenutzer 'root' anzulegen.

Sollte dies bei euch nicht der Fall sein, solltet ihr dies mit

# mysqladmin -u root -h localhost password 'PASSWORT'

nachholen.

Der MySQL-Daemon sollte nach der Installation automatisch gestartet werden.

Als nächstes sollte man eine neue Datenbank und einen dazugehörigen Nutzer für TT-RSS erstellen. Dazu loggt man sich mit folgendem Befehl auf dem MySQL-Server ein.

# mysql -u root -p

Mit folgenden SQL-Befehlen erstellt man nun eine neue Datenbank, einen neuen Nutzer und verpasst ebendiesem alle nötigen Rechte für die neu erstellte Datenbank.

mysql> CREATE DATABASE dbname;

mysql> CREATE USER username@localhost IDENTIFIED BY 'passwort';

mysql> GRANT ALL ON dbname.* TO username@localhost;

dbname, username und passwort sollten natürlich entsprechend geändert werden.

Nun muss noch TT-RSS installiert werden.

# wget https://github.com/gothfox/Tiny-Tiny-RSS/archive/1.8.tar.gz

# tar -xvzf 1.8.tar.gz

# mv Tiny-Tiny-RSS-1.8 /var/www/rss

# chown -R www-data:www-data /var/www/rss

Der einfachste Teil der gesammten Installation.

Man lädt sich den aktuellen Tarball von der Website herunter, entpackt diesen, verschiebt den entpackten Ordner an die gewünschte Stelle in der nginx-Ordnerhierarchie und übereignet sie dem Nutzer (und der Gruppe) mit dessen Rechten nginx läuft. Anschließend öffnet man im Browser seiner Wahl die entsprechende URL unter der TT-RSS zu erreichen ist (in diesem Beispiel http://meinedomain.tld/rss/), gibt die Zugangsdaten der vorhin erstellten Datenbank ein und schließt die Installation ab.

Um TT-RSS dazu zu bringen, eure Feeds regelmäßig zu aktualisieren gibt es mehrere Möglichkeiten. Der "recommended way" ist laut deren Website der Update Daemon, daher will ich diesen Weg hier kurz beschreiben.

Mit

# touch /var/log/tt-rss.log /var/log/tt-rss.err

# chown www-data:www-data /var/log/tt-rss.log /var/log/tt-rss.err

werden erstmal zwei Logfiles erstellt, in die wir später die Ausgabe umleiten.

Danach wechselt man mit

# su www-data

$bash

zum Nutzer 'www-data' und startet erstmal eine Shell.

Aus dieser heraus starten wir dann den Update-Daemon.

php ./update.php --daemon > /var/log/tt-rss.log 2> /var/log/tt-rss.err &

Jetzt ist Tiny Tiny RSS installiert und sobald man das Adminpasswort geändert und einen normalen Nutzer angelegt hat, könnte man die Software nutzen.

Allerdings habe zumindest ich keine große Lust darauf, dass jeder dahergelaufene Typ Zugriff auf meine TT-RSS Installation hat. Mit folgendem Eintrag in die nginx-Konfiguration

location /rss {

auth_basic "Restricted";

auth_basic_user_file ./auth-rss;

}

und einer der hier beschriebenen Möglichkeiten kann man noch eine zusätzliche Zugriffskontrolle vor die eigentliche Loginseite schalten.

Quellen:

http://ariejan.net/2007/12/12/how-to-install-mysql-on-ubuntudebian/

http://blogs.interdose.com/dominik/2008/02/27/mysql-unter-linux-einrichten-wie-fange-ich-an/

http://tt-rss.org/redmine/projects/tt-rss/wiki/InstallationNotes

http://tt-rss.org/redmine/projects/tt-rss/wiki/UpdatingFeeds

http://wiki.nginx.org/Faq#How_do_I_generate_an_.htpasswd_file_without_having_Apache_tools_installed.3F


2013-07-12 19:12 debian linux mysql nginx php rss tiny tiny rss