Tiny Tiny RSS auf dem Raspberry Pi installieren | Feedly Alternative zum selber hosten

  • Installation von TinyTiny RSS auf einem RaspberryPi




    Installations-Voraussetzungen:


    • Ein lauffähiger Webserver; zahlreiche Anleitungen finden sich hier im Forum und in diversen Blogs (Zum Beispiel für Apache2, nginx, lighthttpd)
    • php muss installiert sein (Anleitungen dafür finden sich auch hier im Forum)
    • git zur Installation und Update der Software
    • Neben php benötigt ihr entweder eine Instanz von mySQL oder PostgreSQL (Empfolen)
    • Darüber hinaus ist es ratsam, wenn ihr euren Pi mindestens auf 800mhz übertaktet um eine ansprechende Performance zu erzielen. Auf Pis einer neueren Generation sollte die Performance kein Problem mehr darstellen, sofern die Anzahl eurer Abos halbwegs überschaubar bleibt




    Die unter Installations-Voraussetzungen aufgeführten Dinge setze ich voraus. Auf diese Punkte werde ich in diesem Tutorial nicht mehr näher eingehen, da deren Installation hinreichend dokumentiert ist.


    Es ist möglich, dass einige Distributionen Binärpakete von ttrss bereit stellen, diese Pakete sind allerdings in den meisten Fällen sehr veraltet, Ich rate also dazu die hier beschriebenen Installationsmethode zu verwenden


    TinyTiny RSS setzt auf ein Rolling-Release Modell; d.h. die Instalation erfolgt immer duch Klonen des entsprechenden Git-Repos. Es werden keine Point-Releases ausgegeben.


    Installation von TTRSS:


    • als Erstes begeben wir uns in der Verzeichnis in dem sich unsere für den Webserver relevanten Dateien befinden. In der Regel ist das /var/www



      Code
      cd /var/www


    • wenn wir uns im Verzeichnis befinden machen wir uns an den eigentlichen Download von TTRSS



      Code
      git clone https://tt-rss.org/git/tt-rss.git tt-rss



    • wenn der Download und das Erstellen eines Verzeichnis erfolgreich war, können wir uns darum kümmern eine mySQL bzw. Postgresql Datenbank anzulegen. Dies kann über die Konsole alternativ aber auch via. phpmyadmin bzw. pgAdmin erledigt werden. Da mir phpmyadmin schon jeher irgendwie unsicher erscheint erledige ich diese Aufgabe im Terminal.



      Bitte beachtet, dass laut Entwickler der Software mit Postgresql wesentlich besere Performance-Ergebnisse erreicht werden können.


      Für Postgresql:

      Code
      sudo -u postgres createuser -P www-data
      sudo -u postgres createdb -O www-data ttrss


      Für Mysql:

      Code
      mysql -u root -p
      create database if not exists ttrss;
      create user 'www-data'@'localhost' identified by 'dein gewähltes Passwort';
      grant usage on *.* to 'www-data'@'localhost' identified by 'dein gewähltes Passwort';
      grant all privileges on ttrss.* to 'www-data'@'localhost';
      flush privileges;
      quit;


      In diesen beiden Beispielen hier erstelle ich einen neuen Benutzer www-data, da es nicht ratsam ist Webanwendungen als root-Benutzer der Datenbank zu betreiben, wenn ihr auf eurem Raspberry Pi bereits einen neuen Datenbank-Nutzer erstellt habt oder ihr tatsächlich den root-User verwenden wollt, könnt ihr den entsprechenden Teil der Befehle natürlich aus lassen.



    • Nun ist er Zeit zum ersten mal eure Instanz von TTRSS in Browser aufzurufen.
      Falls ihr die Ip-Adresse eures Raspberry Pi nicht kennen solltet, so könnt ihr sie mit dem kleinen Tool ifconfig herrausfinden.
      Ruft nun also im Browser die Seite http://dieIPeuresRapberryPi/ttrss/install
      auf. Ihr werdet nun aufgefordert werden eure SQL-Zugangsdaten einzugeben. Relativ selbsterklärend wie ich finde.
    Code
    Database type: MYSQL bzw. PostegreSQL
    Username: Der Name des von dir in Schritt drei erstellten Benutzers
    Passwort: Das von dir in Schritt drei gewählte SQL Passwort
    Database name: ttrss
    Datenbank-Host: localhost
    Port: Der MYSQL bzw. Postgresql Standard-Port. Liefert TTRSS direkt mit.
    Tiny Tiny RSS URL: http://dieIPeuresRapberryPi/ttrss/
    • Habt ihr alles korrekt eingegeben sollte der Installer nun eine SQL-Verbindung herstellen können und ihr könnte eure Datenbank initialisieren. Der Installer wird nun eine passende config.php ausgeben und versuchen diese in /ttrss zu schreiben. Der Schreibvorgang funktioniert in der Regel nicht richtig, ihr müsst als nochmal händisch ran. Wir schmeißen also wieder ein Terminal an und begeben uns in unser TTRSS Verzeichnis anschließend erstellen wir eine config.php und fügen den Inhalt der config.php der uns eben im Browser ausgeben wurde. Speichern und fertig.



      Code
      cd /ttrss
      sudo nano config.php


    • Als finalen Schritt der Installation müsst ihr nun noch einige Rechte anpassen, damit TTRSS zum Beispiel Bilder zwischenspeichern kann. Also wieder ab ins Terminal und folgenden Befehl ausgeführt



      Code
      chown -R www-data:www-data ttrss



    Die eigentliche Installation ist hiermit abgeschlossen und ihr solltet euch einloggen können. Die standard Login Daten sind Benutzer: admin und Passwort: password. Ich lege euch dringend ans Herz die Zugangsdaten in den Einstellungen umgehend zu verändern.



    Feed-Updates einrichten


    Wenn ihr nun eure Abonnements in Tiny Tiny Rss übernommen habt werdet ihr festellen, dass sich nach dem einmaligen Abrufen der Feeds nicht mehr viel tut. Gar nichts um genau zu sein.


    Um deine Feeds zu aktualisieren gibt es verschiedene Möglichkeiten


    Feed-Updates via systemd Service

    Sofern auf eurem Pi eine halbwegs aktuelle Linux Distribution zum Einsatz kommt, so verfügt euer System mit großer wahrscheinlichkeit über systemd.

    Der einfachste weg eure Feeds aktuell zu halten ist einen kleinen systemd-Service zu schreiben, der das für euch erledigt.

    Erstellt dazu einfach im /etc/systemd/system Verzeichnis eine neue .service Datei mit einem beliebigen Namen, ttrss.service würde sich hier beispielsweise anbieten. Kopiert anschließend folgenden Inhalt in die Datei:

    Code
    [Unit]
    Description=ttrss_backend
    After=network.target mysql.service postgresql.service
    [Service]
    User=www-data
    ExecStart=/var/www/ttrss/update_daemon2.php
    [Install]
    WantedBy=multi-user.target

    Achtet darauf den ExecStart entsprechend euer Installation anzupassen.

    Im Anschluss kann der Dienst aktiviert und gestaret werden.

    Code
    sudo systemctl enable ttrss.service
    sudo systemctl start ttrss.service

    Feed-Updates via Cronjob

    Eine andere Möglichkeit euere Feeds zu aktualiseren stellt ein Cronjob dar; geht dabei wie folgt vor:

    Code
    sudo crontab -u www-data -e
    */15 * * * * cd /var/www/ttrss && /usr/bin/php update.php --feeds --quiet > /dev/null





    Wenn ihr euren Raspberry Pi nun neustartet, werden aber dem Moment des Neustarts eure Feeds immer genau dann upgedatet, wenn es laut eurer Konfiguration nötig ist und ihr müsst nicht darauf warten, dass irgendwann ein Cronjob ausgeführt wird, der das erledigt.


    Alternativ kannst du den Update-Befehl auch einfach im Terminal ausführen und ihn per Screen am Leben halten, nachdem du deine SSH Session beendet hast. Eine Einführung in die Funktionen von Screen findest du hier.

    TTRSS updaten


    Während es in der Vergangenheit möglich war ttrss direkt über die php-Anwendung auf den neusten Stand zu bringen, hat sich der Entwickler vor einer Zeit dazu entschieden ttrss auf ein Rolling Release System umzustellen, dies bedeutet dass keine Snapshots des Git-Repositories mehr zur Verfügung gestellt werden und Updates direkt aus dem Git Repository gemacht werden. Was kompliziert klingt ist in der Praxis tatsächlich viel einfacher.


    Code
    cd /var/www/ttrss
    git pull origin master


    Feeds auf dem Handy abrufen (iOS und Android)


    Tiny Tiny Rss bietet die Möglichkeit eure Feeds.
    Dazu müsst ihr in euren EInstellungen den API Zugriff aktivieren.


    Android: Die passende App findet ihr in einer Trial Version im Playstore (der Unlocker kostet 4,09 Euro).

    iOS: Für iOS steht eine inoffizielle App zur Verfügung.

    Edited 6 times, last by orchard: Anleitung auf aktuellen Stand gebracht ().

  • Mhm.
    Cronjobs die in crontab stehen sind eigentlich Systemweite Cronjobs und werden soweit ich weiß generell mit root Rechen ausgeführt.


    Warum benutzt du nicht den Update Daemon? Arbeitet wesentlich effizienter und zuverlässiger als cron.

  • Danke für den Hinweis. Ich habe den Befehl um ehrlich zu sein einfach von der offiziellen Projekt Homepage übernommen. Ich persönlich verwende Cron nicht für die Feed Updates.

  • Hallo,
    leider habe ich überhaupt keine Ahnung von mysql.
    Ich habe jetzt das Tutorial befolgt und es hat auch alles soweit geklappt.
    Jetzt bin ich bei dem Punkt:


    Quote


    Die eigentliche Installation ist hiermit abgeschlossen und ihr solltet euch einloggen können. Die standard Login Daten sind Benutzer: admin und Passwort: password.


    Wenn ich jetzt aber http://IP-des Raspi/ttrss/ eingebe, wird automatisch noch ein install/ an die URL angehängt und ich lande wieder auf die Install-Seite.
    Kann mir jemand auf die Sprünge helfen?


    Edit:
    Nein, vergesst es, es ist alles OK.
    Ich hatte beim Kopieren der php.config einen Fehler gemacht. Dadurch war die in ein falsches Verzeichnis gerutscht. :blush:


    Tolles Tutorial!

  • Moin!
    Super Anleitung! Habe ttrss nun seit einer Woche auf dem Pi laufen. Leider will der Daemon bei mir einfach nicht beim booten mitstarten. Weder per Cronjob, noch per rc.local. Muss den immer manuell starten.

  • Danke für das Tut, aber ttrss gibt es nicht mehr auf github, das Repo kann man aber darüber noch clonen:

    Code
    git clone https://tt-rss.org/gitlab/fox/tt-rss.git


    Die Entwicker haben ihr eigenes GitLab aufgesetzt und hosten den Quellcode jetzt da.

    Immer ein Backup parat, man weiß schließlich nie, wenn etwas schiefgeht.

  • Ein paar Anmerkungen zur Anleitung:


    - Zu Punkt 6.:


    Die Rechte auf 777 zu ändern ist nicht nur leichtsinnig sondern auch unnötig.
    777 erlaubt es nicht nur dem Besitzer, den Mitgliedern der Gruppe sondern auch allen anderen in diesen Ordnern (und dank -R auch in den Unterordnern) zu Schreiben und Sachen auszuführen. Das birgt also einiges an Risiken die ich jetzt aber nicht an dieser Stelle aufzählen möchte.


    Sinnvoller wäre nach dem 'git clone' Befehl den Besitzer aller Dateien auf www-data zu ändern. Die Verzeichnis-Rechte (chmod) wurden durch 'git clone' bereits korrekt gesetzt/übernommen und brauchen/sollten nicht verändert zu werden.


    Bedeutet also nach dem 2. Schritt folgendes auszuführen:

    Code
    chown -R www-data:www-data ttrss


    Und den 6. Schritt vollständig ignorieren!


    Durch diese kleine Anpassung kann man sich dann auch den 5. Schritt schenken, da www-data dann auch berechtigt ist in 'seinen' Dateien und Verzeichnissen zu schreiben. :fies:


    [hr]


    - Zu den 'feed updates':


    Der Crontabeintrag " sudo -u www-data cd /var/www/ttrss && /usr/bin/php update.php " ist etwas von hinten durch die Brust und durch das Auge ... Man kann direkt die crontab des www-data Benutzers öffnen und kann sich somit den sudo Aufruf in der Crontab sparen:

    Code
    sudo crontab -u www-data -e


    Code
    */15 * * * * cd /var/www/ttrss && /usr/bin/php update.php --feeds --quiet > /dev/null


    Diese Methode (via update.php) finde ich zudem besser als update_daemon2.php zu verwenden, weil dann nicht permanent ein Prozess im Hintergrund läuft sondern nur dann wenn er die feeds auch tatsächlich updaten soll. Das spart Resourcen (RAM & CPU) von dem der PI eh nicht allzuviel hat.
    Desweiteren kann man via crontab den Intervall dann auch unter 15 Minuten stellen - allerdings hängt das von der Anzahl der Feeds ab die man eingetragen hat, da der PI mit tt-rss recht lange braucht größere feeds auszulesen bzw zu prüfen kann ein kürzerer Intervall negative Auswirkungen haben.


    Da doch relativ viel und häufig geschrieben wird, wäre es zudem besser tt-rss von der SD auf einen USB-Stick o.ä. auszulagern - schließlich soll das Betriebssystem möglichst lange und stabil auf der SD verweilen ;)