Tiny Tiny RSS auf Raspberry Pi installieren

RSS ist ein Dienst, der in der Regel von jedem Blog und den meisten Nachrichtenseiten zum Konsumieren der Inhalte angeboten wird. Über entsprechende Mobile Apps, Anwendungen bzw. Integrationen in Emailclients ist es möglich, automatisch über neue Nachrichten/Beiträge informiert zu werden und diese direkt zu lesen, ohne die entsprechende Seite zu besuchen. Wird RSS auf mehreren Endgeräten genutzt, besteht schnell das Problem, nicht mehr zu wissen, was schon gelesen wurde und was nicht. Um dieses Problem zu umgehen wird eine zentrale Stelle benötigt, die einem das Denken ein Stück weit abnimmt. Bis vor kurzem stellte Google einen Dienst dafür zur Verfügung. Wie so manch anderer schöner Dienst, wurde auch „Google Reader“ eingestellt. Zeit genug also, sich seinen eigenen RSS Server auf einem Raspberry Pi oder Banana Pi zu installieren, um ein Stückchen unabhängiger von kommerziellen Diensten mit ungewisser Zukunft zu sein.


Als Software für RSS kommt „Tiny Tiny RSS“ zum Einsatz. Die Open Source Software bietet die Möglichkeit, beliebige RSS Feeds zu verwalten und an die eigenen Bedürfnisse anzupassen. Für den Betrieb werden einige Pakete benötigt.

  • nginx als Webserver
  • MySQL als Datenbankserver
  • PHP
  • Git als Installationsquelle

Als Web- oder Datenbankserver lassen sich auch Apache, SQLite oder Postgres verwenden. Zusätzlich wird ein DynDSN Name, sowie ein Portforwarding der Ports 80 und 443 auf den Raspberry Pi oder Banana Pi benötigt, damit der Server auch aus dem Internet erreichbar ist. Die benötigten Pakete lassen sich durch folgenden Befehl installieren.

sudo apt-get update && sudo apt-get install mysql-server mysql-client nginx php5 php5-fpm php5-mysql php-apc php5-curl php5-cli git

Um die Sicherheit der MySQL Installation zu erhöhen, muss der Server noch entsprechend konfiguriert werden. Wie dies geschieht ist hier beschrieben: Klick Nachdem die Grundsicherheit von MySQL erhöht wurde, muss eine Datenbank samt User für TTRSS erzeugt werden. Dazu erstmal am MySQL Server anmelden.

mysql -h localhost -u root -p

Datenbank „db_ttrss“ erzeugen.

create database db_ttrss;

User „ttrss“ anlegen und Berechtigungen auf die Datenbank „db_ttrss“ geben.

create user ttrss@localhost identified by 'PASSWORD';
grant all privileges on db_ttrss.* to ttrss@localhost identified by 'PASSWORD';

Wenn alles geklappt hat, kann die MySQL Konfiguration verlassen werden.

exit

Im nächsten Schritt wird die TTRSS Installation vorbereitet. Die aktuellste Version wird per Git direkt aus dem Github Repository geholt.

git clone https://tt-rss.org/git/tt-rss.git /var/www/ttrss
sudo chown -R www-data:www-data /var/www/ttrss

Die Binaries sind somit vorbereitet. Für einen erfolgreichen Zugriff aus dem Internet muss der Webserver nginx so angepasst werden, damit die TTRSS Seite aufgerufen werden kann. Hierfür ist ggf. noch ein DynDNS Dienst erforderlich, der die WAN IP des eigenen Routers über einen Domain Namen ansprechbar macht. Ebenso ist eine Portweiterleitung auf den Raspberry Pi erforderlich.

sudo nano /etc/nginx/sites-available/ttrss.conf
server {
 
        listen 80 default_server;
        server_name my.example.com;
        return 301 https://$server_name$request_uri; # enforce https
}

server {
    listen  443 ssl default_server; 
    server_name my.example.com;

# SSL Settings
ssl on;
ssl_certificate /etc/nginx/certs/my.example.com/fullchain.pem;
ssl_certificate_key /etc/nginx/certs/my.example.com/cert.key;
 
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_dhparam /etc/nginx/certs/my.example.com/dhparam.pem;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_ciphers  HIGH:!aNULL:!MD5:!RC4;

# OCSP
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/nginx/certs/my.example.com/fullchain.pem;
 
# HSTS
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
 
add_header X-Frame-Options DENY;

location / {
        index index.php;
        try_files $uri/ =404;
    }

    root /var/www/ttrss;

    access_log /var/log/nginx/ttrss_access.log;
    error_log /var/log/nginx/ttrss_error.log info;

    location ~ \.php$ {
        try_files $uri = 404;
        fastcgi_pass 127.0.0.1:9000;
        include /etc/nginx/fastcgi_params;
    }
}

Dies ist eine Beispielkonfiguration für TTRSS unter nginx, inklusive SSL, HSTS, OCSP Stapling und Perfect Forward Secrecy. Alle Werte „my.example.com“ müssen an den eigenen Namen angepasst werden. Wie die dazu benötigten Zertifikate mit Let’s Encrypt erstellt werden können, steht hier beschrieben: Klick Nachdem die Webserverkonfiguration abgeschlossen ist, muss diese aktiviert werden.

sudo rm /etc/nginx/sites-enabled/default
sudo ln –s /etc/nginx/sites-available/ttrss.conf /etc/nginx/sites-enabled/ttrss.conf
sudo systemctl reload nginx.service

Jetzt kann das erste Mal die Weboberfläche von TTRSS aufgerufen werden, um die Installation abzuschließen. Dazu im Browser einfach die DynDNS URL aufrufen. Die Felder werden wie folgt ausgefüllt.

Database Type: MySQL
Username:  ttrss
Password: PASSWORD
Database Name: db_ttrss
Hostname: localhost
Port: Kann leer bleiben

Danach die Buttons „Test configuration“ und „initialize database“ klicken. Wenn dies erfolgreich durchgelaufen ist, kann die angezeigte Konfiguration in die Zwischenablage kopiert und in einer neuen Konfigurationsdatei abgespeichert werden.

sudo nano /var/www/ttrss/config.php

Als letztes wird dafür gesorgt, dass unser RSS Server die abonnierten Feeds regelmäßig aktualisiert. Dies wird durch einen entsprechenden Cron Job erledigt.

sudo crontab –e
*/15 * * * * www-data /usr/bin/php /var/www/ttrss/update.php --feeds –quiet

Durch den Eintrag werden die Feeds alle 15 Minuten aktualisiert. Ab jetzt ist das Webinterface mit dem user „Admin“ und dem Passwort „password“ nutzbar. Das Passwort sollte natürlich geändert werden. Weitere Benutzer lassen sich im Webfrontend anlegen und verwalten.

Tiny Tiny RSS Raspberry Pi

Zum Updaten der TT-RSS Version lässt sich auch git verwenden. Der Updater über das Webfrontend sollte nicht verwendet werden, wenn die Basisinstallation durch git erfolgt!

cd /var/www/ttrss
git pull origin master

Sollte sich beim Update von Tiny Tiny RSS etwas am Datenbankschema oder der Konfigurationsdatei geändert haben, erscheint ein entsprechender, sobald ein Administrativer Benutzer sich am Webfrontennd anmeldet und das Update erfolgreich abgeschlossen ist. Zum Test, ob Tiny Tiny RSS ordentlich arbeitet kann gleich mein Blog Feed hinzugefügt werden. Mein RSS Feed