Raspberry Pi: Tiny Tiny RSS Reader installieren

08 Jan
8. Januar 2014

RSS Feedreader werden auch in Zeiten von Facebook, Twitter und Google+ immer noch gerne benutzt. Nach dem Ende von Google Reader etablierte sich Feedly als das Mittel der Wahl am Markt. Jedoch macht man sich von solchen Anbietern abhängig, da deren Server ausfallen können (wie es bei Feedly schon öfter der Fall war) oder sich die Konditionen der Anbieter ändern können. Ein beliebter selbst gehosteter Feedreader ist Tiny Tiny RSS. Diese PHP Applikation lässt sich auch auf dem Raspberry Pi betreiben, womit man sie direkt zuhause betreiben kann. Ein weiteres Merkmal, neben dem relativ aufgeräumten Design, ist die Tatsache, dass es sowohl für Android als auch iOS Geräte, den Bewertungen zu urteilen, gute Apps gibt. Wie man Tiny Tiny RSS auf dem Raspberry Pi installiert, erkläre ich im Folgenden.

Voraussetzung: Raspbian oder vergleichbare Distribution installiert

Step 1

Zunächst müssen wir einen Webserver installieren. Da nginx performanter als Apache2 ist und die Ressourcen des Raspberry Pis nicht die Größten sind, installieren wir nginx mit php5-fpm. Wie dies geht, erklärte ich bereits in dem Artikel Webserver Nginx installieren.

Step 2

Nun müssen wir noch MySQL als Datenbankserver und das PHP Modul php5-curl installieren. Dies können wir bequem über den Paketmanager APT erledigen. Während der Installation müssen wir ein Passwort für den Root-Benutzer in dem MySQL-Server angeben. Dieses sollte möglichst stark sein.

sudo apt-get install mysql-server mysql-client php5-mysql php5-curl git

Step 3

Wir sollten MySQL nun noch von Test-Datenbanken und anonymen Benutzern befreien, damit mehr Sicherheit gewährleistet wird. Hierzu führen wir folgendes Kommando aus. Dabei geben wir zunächst das gerade definierte Passwort ein, geben an, das Passwort nicht ändern zu wollen, den anonymen Benutzer zu löschen, den Remote Login für den Root-Benutzer zu deaktivieren, die Testdatenbank zu löschen und privilege tables zu neuzuladen.

sudo mysql_secure_installation

Step 4

Nun müssen wir einen Benutzer und eine Datenbank in MySQL für Tiny Tiny RSS anlegen. Dazu müssen wir folgende Kommandos (du siehst im Folgenden die Ausgabe im Terminal) ausführen. In Zeile 8 muss PWD durch ein möglichst starkes Passwort für den Tiny Tiny RSS MySQL Benutzer ersetzt werden.

Step 5

Jetzt sind wir soweit, dass wir Tiny Tiny RSS herunterladen können. Dieses speichern wir in das Webroot-Verzeichnis von nginx, wo wir es entpacken und den Ordner in tt-rss umbenennen. Zum Zeitpunkt, als dieses Tutorial entstand, war die Version 1.11 aktuell. Das Projekt hat mittlerweile ein rolling Release, weshalb wir den Quellcode vom Git Repository des Projects holen.

cd /usr/share/nginx/www
git clone https://tt-rss.org/gitlab/fox/tt-rss.git
sudo chown -R www-data:www-data tt-rss/

Step 6

Hat alles geklappt, so können wir die Installation von Tiny Tiny RSS nun im Browser unter http://IP/tt-rss/install/ (IP durch IP-Adresse oder DynDNS des Raspberry Pis ersetzen; wenn eine DynDNS Domain eingesetzt wird, unbedingt über diese aufrufen) aufrufen.

Dort angekommen wählen wir MySQL in dem Feld Database type, geben als Username und Database name den Namen ttrss an und geben das in Step 4 gewählte Passwort in das Feld Password ein. Bei Port geben wir 3306 an. Das Feld Host name können wir leer lassen. Anschließend klicken wir auf Test configuration.

Haben wir die Daten richtig eingegeben, so erhalten wir die Ausgabe Database test succeeded und können anschließend auf Initialize database klicken. Daraufhin sollte ein fettes Generated configuration file erscheinen mit einer Textbox darunter. Den darinstehenden Text (Inhalt der Konfigurationsdatei) kopieren wir und fügen ihn in die config.php Datei ein. In dem Editor nano kann man einfach mittels STRG + V einfügen und speichern kann man über STRG + X, Y und Enter.

sudo nano /usr/share/nginx/www/tt-rss/config.php

Step 7

Wir müssen jetzt noch ein paar Rechte von den Ordnern im Tiny Tiny RSS Verzeichnis so abändern, dass sie beschreibbar sind.

cd /usr/share/nginx/www/tt-rss
sudo chmod -R 777 cache/images
sudo chmod -R 777 cache/upload
sudo chmod -R 777 cache/export
sudo chmod -R 777 cache/js
sudo chmod -R 777 feed-icons
sudo chmod -R 777 lock

Step 8

Nun ist es an der Zeit den Daemon, der die eingetragenen RSS Feeds auf neue Artikel überprüft, zu starten. Dies können wir mit folgendem Kommando bewerkstelligen.

sudo -u www-data /usr/bin/php /usr/share/nginx/www/tt-rss/update.php --feeds --daemon > /dev/null &

Step 9

Damit der Daemon beim Booten des Raspberry Pis immer automatisch startet, legen wir das soeben Ausgeführte noch in den Autostart. Dazu müssen wir folgende Zeile am Ende der Datei /etc/rc.local vor exit 0 in eine neue Zeile kopieren.

sudo nano /etc/rc.local

Step 10

Zuletzt können wir nun über http://IP/tt-rss/ (IP durch IP-Adresse oder DynDNS Domain des Raspberry Pis ersetzen) Tiny Tiny RSS aufrufen und uns mit dem Benutzer admin und dem Passwort password anmelden. Die Zugangsdaten können wir nun über Aktionen (oben rechts) > Einstellungen > Benutzer ändern.

Fertig installiert! Dein Tiny Tiny RSS Feedreader ist nun einsatzbereit. Und nicht vergessen auch den Feed meines Blogs einzutragen 😉

Zugriff außerhalb des eigenen Netzwerks
Portfreigabe im Router

Soll der soeben installierte Dienst auch außerhalb des eigenen Netzwerkes verfügbar sein, so müssen folgende Ports im Router freigegeben werden. Wie man freigibt, beschrieb ich in dem Artikel Portforwarding bei Fritz!Box und Speedport.

80
Dir hat der Artikel gefallen?
Teile ihn mit deinen Freunden!
34 Antworten
  1. Bert says:

    Vielen Dank, die Anleitung ist superhilfreich!

    Antworten
  2. ChrisHC says:

    Hallo Jan!

    Es fehlt ein wesentlicher Teil in deinem Tutorial:

    Der Eintrag des TT-RSS Scrapers in crontab.

    So wie du es beschrieben hast holt TT-RSS die neusten Feeds nur ab wenn man auf TT-RSS zugreift, was nicht funktioniert wenn man mal ein paar Tage TT-RSS nicht nutzt, dann kann es sein das manche Meldungen in manchen Feeds schon wieder raus gefallen sind.
    In der TT-RSS Dokumentation wird ausdrücklich darauf hingewiesen das diese Methode unvorteilhaft ist.
    Wäre vorteilhaft wenn du das noch hinzufügen könntest.

    Grüße,

    Chris

    Antworten
  3. Pete says:

    Hatte Tiny Tiny RSS auch mal ausprobiert, war aber irgendwie nicht so ganz zufrieden damit. Dieser Feed Reader ist ne nette Alternative zu Tiny Tiny RSS: https://github.com/Cacodaimon/CacoCloud

    Antworten
    • Jan Karres says:

      Das Projekt hat jedoch noch keine Releases und kein Build System, weshalb ich davon ausgehen muss, dass die Software noch nicht als stabil zu betrachten ist.

      Antworten
  4. Andrzej says:

    Seit ca. 2 Monaten nutze ich selbst Tiny Tiny RSS auf dem RPi .. das war sogar mein Hauptgrund, warum ich mir diesen „Supercomputer“ /wie es meine Tochter einmal genannt hat/ zugelegt habe.
    Allerdings ich muss fragen, warum man sich für MySQL und nicht für PostgreSQL entschieden hat. PostgreSQL wird aus performance Gründen nämlich als bevorzugter „database backend“ empfohlen …

    Antworten
    • Jan Karres says:

      Ich denke so stark sollte der Unterschied nicht zu spüren – außer die Instanz wird von vielen Leuten zur selben Zeit genutzt 😉 Beide Datenbankserver haben Vor- und Nachteile. Ich habe mich in diesem Fall, aus Gewohnheit, für MySQL entschieden.

      Antworten
      • Andrzej says:

        Hmmm … da ich beide Datenbanksysteme vorher gar nicht kannte, war ich nicht „vorbelastet“ und folgte in diesen Punkt die TTRSS Wiki.
        Obwohl, wenn man so guckt, MySQL wäre für meine andere, später enstandene, kleinere Projekte (WordPress, MediaWiki) der besserer Wahl gewesen 🙂

        Aus reinen ungesunden Neugier habe noch eine Frage: wie hoch „klettert“ der CPU Load beim Feedsaktualisierung in deinem System?
        Ich habe 3 aktive Benutzer, die zusammen ca. 250 Feeds beobachten … „mein“ CPU Load geht dann für ein paar Minuten auf 2,5 bis 3,5 hoch, in „normalen“ Betrieb liegt es aber völlig unbedenklich deutlich unter 1.

        Antworten
        • Jan Karres says:

          Wenn man mit anderen PHP Apps noch etwas rumspielt ist MySQL auf jeden Fall die sinnvoller Wahl, da mehr Apps dieses unterstützen als PostgreSQL.

          Bzgl. Load: Ich habe es nur mal getestet und kann dir keine Vergleichswerte liefern, jedoch klingen die Daten, die du gepostet hast, für mich relativ normal, da der Raspberry Pi ja nicht der Leistungsstärkste ist 😉

          Antworten
  5. Klaus says:

    Hallo Jan,

    obwohl ich ein absoluter Raspberry Pi- und Linuxanfänger bin, hat die Installation Dank Deiner Anleitung wunderbar funktioniert.

    Vielen Dank dafür.

    Ich habe allerdings noch eine Frage:

    Kann ich, zusätzlich zu der Tiny Tiny RSS-Installation, auch noch Seafile auf dem Raspberry Pi installieren oder ist das nicht empfehlenswert?

    Gruß

    Klaus

    Antworten
    • Jan Karres says:

      Geht, aber ist von der Performance her meiner Erfahrung nach äußerst knapp.

      Antworten
      • Klaus says:

        Hallo Jan,
        vielen Dank für Deine Einschätzung. Dann werde ich mir einen zweiten Pi kaufen.

        Zur TTRSS-Installation habe ich noch zwei Fragen:
        1. Wo und wie stelle ich den Update-Intervall ein, z. B. alle 15 Minuten aktualisieren?
        2. Gibt es eine Log-Datei, wo ich sehen kann, ob die Aktualisierungen ohne Fehler durchlaufen?

        Ich habe schon im Netz recherchiert, aber zu beiden Fragen keine Antwort gefunden.

        Wäre schön, wenn Du mir noch einmal helfen könntest.
        Vielen Dank.

        Gruß
        Klaus

        Antworten
        • Jan Karres says:

          Zu 1: Beim Daemon weiß ich ehrlich gesagt nicht ganz genau wie dieser funktioniert. Aber jedoch denke nicht mit klassischen fixen Intervallen.
          Zu 2: In Step 8 könntest du „/dev/null“ durch „/var/log/ttrss.log“ ersetzen. Dann findest du unter /var/log/ttrss.log die Logfiles.

          Antworten
      • kobbi says:

        Versuche gerade TTRSS auf meinem Seafile Server (https) zu installieren – stecke aber bei Punkt 6 fest, bei der Installation.
        Bekomme die Meldung:
        403 Forbidden
        nginx/1.2.1

        Vermutlich muß ich eine 2. nginx-Instanz für TTRSS erstellen. Wie mach ich das?
        Was muß man noch alles beachten?

        Antworten
  6. senftimes says:

    Danke für diese tolle Anleitung. Als Debian Anfänger ist das eine große Hilfe. Ist es richtig, dass das Starten des Daemons (Step 8) eine Meldung dieser Art ausspuckt: [1] 2088 ??

    Antworten
  7. Moritz says:

    Ich finde die Anleitung super jedoch hänge ich bei der Installation von tt-rss im Browser fest, da ich einfach nicht auf die Site komme.
    Auf 10.0.0.6 (was die Ip meines Pi’s ist) kann ich problemlos zugreifen und bekomme die nginx Standartmeldung: „Welcome to nginx!“. Aber wenn ich ein paar Ebenen tiefer gehen will (10.0.0.6/tt-rss/install/) kommt das die Website nicht vorfügbar ist.
    Hast du eine Lösung dafür?
    Ich nutze übrigens die Version 1.13 von tt-rss

    Antworten
  8. JBL says:

    Ich habe dasselbe Problem wie Moritz:
    Bei Aufruf nur mit der IP meldet sich nginx, URL mit Zusatz „/tt-rss/install/“ meldet Website nicht verfügbar, Ordnerberechtigungen aus Step 7 habe ich gesetzt, obwohl die Konfiguration per Browser ja schon in Step 6 durchgeführt wird.
    Hast du einen Tipp?

    Antworten
  9. marcel says:

    Hallo Jan,

    ich habe die Schritte befolgt und kann mich nun nicht einloggen. Gebe ich im Login-Fenster den User ‚admin‘ und mein gewähltes Passwort aus Schritt 4 ein, bekomme ich ‚Benutzername oder Passwort falsch‘. Ich habe zusätzlich einen Seafile- und Baikal-Server am Laufen (auch nach deiner Anleitung). Kann das damit zusammenhängen? Woran kann das liegen?

    Übrigens: Vielen Dank für deine Tutorials!

    Gruß,
    Marcel

    Antworten
    • marcel says:

      bekomme auch eine Warnung in Schritt 8:

      > sudo -u www-data /usr/bin/php /usr/share/nginx/www/tt-rss/update.php –feeds –daemon > /dev/null &

      PHP Warning: PHP Startup: Unable to load dynamic library ‚/usr/lib/php5/20100525+lfs/sqlite.so‘ – /usr/lib/php5/20100525+lfs/sqlite.so: cannot open shared object file: No such file or directory in Unknown on line 0

      Und zusätzlich nach dem Login folgende Fehlermeldung:

      curl: option –feeds: is unknown

      kann mir jemand helfen?

      Antworten
      • Jan Karres says:

        Klingt mir so als sei SQLite von den anderen Anwendungen zerschossen. Versuch das doch noch einmal drüber zu installieren:

        sudo apt-get install php5-sqlite

        Antworten
  10. marcel says:

    bringt leider auch nichts. Habe bis jetzt auch noch nicht herausgefunden, woran das liegen kann. Gibt es evtl. Logfile wo man nachschauen könnte?

    Antworten
  11. Sophia says:

    Hallo,
    ich hänge bei Schritt 5 und 6. (Ein bisschen veraltet ist die Anleitung ja schon, einige Links sind nicht mehr aktuell.)
    Ich komme zwar bei Schritt 6 mit meiner dyndns auf die install-Seite, aber wenn ich auf „Test Configuration“ klicke, kommt eine Fehlermeldung:

    Dann gibt’s leider auch kein config file für mich.

    Leider finde ich keine FAQ für tiny tiny rss und kann auch die Antwort nicht durch eine Internetsuche heraus bekommen. Hast du vielleicht eine Idee? Danke.

    Antworten
  12. Johannes says:

    Vielen Dank für das Tutorial! Ließ sich ohne Probleme einrichten. Allerdings mußte das Root-Verzeichnis noch angepaßt werden. Bei /etc/nginx/sites-available/default steht bei root /var/www/ drin. Das muß geändert werden zu /usr/share/nginx/html/. Denn Nginx wird mit dem Verzeichnis html ausgeliefert, nicht mit www. Kann man ja nach Gusto ändern. Und nicht vergessen: nginx braucht dann einen restart. Sonst kommt da wieder 404.

    Antworten

Trackbacks & Pingbacks

  1. […] oder an der Konfiguration kommt eine entsprechende Meldung im Webfrontend. Quelle: Unter anderem Jan Karres und […]

Antworten

Kommentar verfassen

JanKarres.de © 2007-2018