Installation von Tiny Tiny RSS: Unterschied zwischen den Versionen

Aus
KKeine Bearbeitungszusammenfassung
(auf DSM 5 angepasst (kein PHP safe mode mehr))
Zeile 2: Zeile 2:
[http://tt-rss.org/redmine/projects/tt-rss/wiki Tiny Tiny RSS] ist ein server-basierter [[wikipedia:de:Feedreader|Feedreader]], vergleichbar mit dem (inzwischen eingestellten) [[wikipedia:de:Google Reader|Google Reader]] oder [[wikipedia:Feedly|Feedly]], aber die Daten bleiben daheim. Neben einer AJAX-Weboberfläche ([http://tt-rss.org/demo/ hier] in Aktion zu sehen), die auch auf mobile Geräte angepasst werden kann, gibt es auch ein API, mit dem Informationen über die abonnierten Feeds auch externen Anwendungen zur Verfügung stehen (wird vom Linux-Feedreader [http://lzone.de/liferea/ Liferea] und dem [http://tt-rss.org/redmine/projects/tt-rss-android/wiki Android Client] genutzt).
[http://tt-rss.org/redmine/projects/tt-rss/wiki Tiny Tiny RSS] ist ein server-basierter [[wikipedia:de:Feedreader|Feedreader]], vergleichbar mit dem (inzwischen eingestellten) [[wikipedia:de:Google Reader|Google Reader]] oder [[wikipedia:Feedly|Feedly]], aber die Daten bleiben daheim. Neben einer AJAX-Weboberfläche ([http://tt-rss.org/demo/ hier] in Aktion zu sehen), die auch auf mobile Geräte angepasst werden kann, gibt es auch ein API, mit dem Informationen über die abonnierten Feeds auch externen Anwendungen zur Verfügung stehen (wird vom Linux-Feedreader [http://lzone.de/liferea/ Liferea] und dem [http://tt-rss.org/redmine/projects/tt-rss-android/wiki Android Client] genutzt).


Dieser Artikel beschreibt, wie es auf einer DiskStation installiert und (basis-)konfiguriert werden kann. Es muss ein root-Zugang zur [[Die Kommandozeile|Kommandozeile]] bestehen. Die Anleitung bezieht sich auf die Version 1.7.9 von Tiny Tiny RSS, und DSM Version 4.2 mit PHP 5.3.x.
Dieser Artikel beschreibt, wie es auf einer DiskStation installiert und (basis-)konfiguriert werden kann. Es muss ein root-Zugang zur [[Die Kommandozeile|Kommandozeile]] bestehen. Die Anleitung bezieht sich auf die Version 1.12 von Tiny Tiny RSS, und DSM Version 5 mit PHP 5.5.x.


Es gibt inzwischen auch ein [[Paketzentrum Quellen#SynoCommunity|Community-Paket]].
Es gibt inzwischen auch ein [[Paketzentrum Quellen#SynoCommunity|Community-Paket]].
Zeile 8: Zeile 8:
== Vorarbeiten auf der DS ==
== Vorarbeiten auf der DS ==
=== Webserver und Datenbank aktivieren ===
=== Webserver und Datenbank aktivieren ===
Sowohl die Web Station als auch MySQL müssen [[Aktivieren von Web Station oder MySQL|aktiviert werden]]. Tiny Tiny RSS kann auch mit PostgreSQL benutzt werden, was [http://tt-rss.org/forum/viewtopic.php?f=1&t=2053&start=45#p11015 deutlich performanter] ist. Es gibt es [http://blog.invisible.ch/2013/03/21/48-tiny-tiny-rss-on-synology/ eine Anleitung] dazu, aber da das deutlich umständlicher ist, wird im weiteren Artikel MySQL benutzt.
Sowohl die Web Station als auch MySQL müssen [[Aktivieren von Web Station oder MySQL|aktiviert werden]]. Tiny Tiny RSS kann auch mit PostgreSQL benutzt werden, was [http://tt-rss.org/forum/viewtopic.php?f=1&t=2053&start=45#p11015 deutlich performanter] ist. Es gibt es [http://blog.invisible.ch/2013/03/21/48-tiny-tiny-rss-on-synology/ eine Anleitung] dazu, aber da das umständlicher ist, wird im weiteren Artikel MySQL benutzt.
Um MySQL ein wenig erträglicher zu machen, kann die Konfiguration [[Verwalten der MySQL-Datenbank#Performance Tuning|etwas angepasst]] werden.
Um MySQL ein wenig erträglicher zu machen, kann die Konfiguration [[Verwalten der MySQL-Datenbank#Performance Tuning|etwas angepasst]] werden.


Zeile 15: Zeile 15:
Seit Version 1.7.9 wird nichtleeres ''[http://php.net/manual/en/ini.core.php#ini.open-basedir open_basedir]'' offiziell unterstützt. Mit der Grundeinstellung der DS sollte es keine Probleme geben, eventuell kann es nötig sein, den "richtigen" Pfad ''/volume1/web'' in ''open_basedir'' aufzunehmen.
Seit Version 1.7.9 wird nichtleeres ''[http://php.net/manual/en/ini.core.php#ini.open-basedir open_basedir]'' offiziell unterstützt. Mit der Grundeinstellung der DS sollte es keine Probleme geben, eventuell kann es nötig sein, den "richtigen" Pfad ''/volume1/web'' in ''open_basedir'' aufzunehmen.


==== PHP ausführen ====
Soll der [[#daemon|''Update daemon'' ausgeführt]] werden, muß die PHP-Konfiguration eventuell geändert werden. Die beste Lösung ist, im DSM die Option ''PHP safe_mode_exec_dir-Zugriffsbeschränkung'' ganz abzuwählen. Das ist auch kein großes Problem, da PHPs [http://www.php.net/manual/en/ini.sect.safe-mode.php Safe Mode] veraltet (und auch nicht wirklich sicherer) ist.
Sollte das nicht möglich sein, kann auf der Kommandozeile mit root-Rechten im Verzeichnis ''/usr/syno/bin'' ein symbolischer Link auf das php-binary gesetzt werden:
<pre>
$ ln -s /usr/bin/php /usr/syno/bin/php
</pre>
Hintergrund ist, dass ''/usr/syno/bin'' das voreingestellte '''safe_mode_exec_dir''' ist, vgl. auch die Ausgabe der PHP-Funktion ''phpinfo()''.
{{Wichtig|Bei einem Firmware Update des DSM wird der Link gelöscht und muß wieder erzeugt werden.}}
{{Wichtig|1=Manche Pakete (z.B. ''[[Fotos über die Photo Station zugänglich machen|Photo Station]]'') erzeugen diesen Link bei ihrer Installation, er muß dann also nicht erzeugt werden. Wenn der Befehl trotzdem ausgeführt wird, erscheint die Fehlermeldung
<br/>
<span style="color:black;font-size:0.8em;font-variant:normal;padding-left:15px;">ln: /usr/syno/bin/php: File exists</span>
<br/>
was aber nicht weiter problematisch ist.}}
== Tiny Tiny RSS konfigurieren ==
== Tiny Tiny RSS konfigurieren ==
===Herunterladen===
===Herunterladen===
Zeile 51: Zeile 37:


=== Datenbank erstellen ===
=== Datenbank erstellen ===
Es muß eine Datenbank angelegt und das sich im Unterverzeichnis ''schema/ttrss_schema_mysql.sql'' befindende Schema installiert werden. Wie das geht, beschreibt [[Verwalten der MySQL-Datenbank|dieser Artikel]].
Es muß eine Datenbank angelegt werden. Wie das geht, beschreibt [[Verwalten der MySQL-Datenbank|dieser Artikel]].


Die [[#Erstellen von config.php|weitere Konfiguration]] erfordert, daß ein MySQL-Nutzer und dessen Passwort in die Datei ''config.php'' gespeichert werden. Der Benutzer ''nobody'' auf der DiskStation muß diese Datei lesen können. Daher empfiehlt es sich, zum Zugriff auf die angelegte Datenbank '''nicht''' den ''root''-Account von MySQL zu benutzen, sondern einen eigenen MySQL-Nutzer anzulegen, der die nötigsten Privilegien hat. Details dazu ebenfalls [[Verwalten der MySQL-Datenbank|hier]].
Die [[#Erstellen von config.php|weitere Konfiguration]] erfordert, daß ein MySQL-Nutzer und dessen Passwort in die Datei ''config.php'' gespeichert werden. Der Benutzer ''http'' auf der DiskStation muß diese Datei lesen können. Daher empfiehlt es sich, zum Zugriff auf die angelegte Datenbank '''nicht''' den ''root''-Account von MySQL zu benutzen, sondern einen eigenen MySQL-Nutzer anzulegen, der die nötigsten Privilegien hat. Details dazu ebenfalls [[Verwalten der MySQL-Datenbank|hier]].


=== Schreibrechte ===
=== Schreibrechte ===
Der Nutzer ''nobody'' (auf der DiskStation/Linux, nicht in MySQL) braucht Schreibrechte auf die Verzeichnisse ''lock/'', ''cache/'' und ''feed-icons/''. Dazu einfach auf der Shell (im Verzeichnis von Tiny Tiny RSS)
Der Nutzer ''http'' (auf der DiskStation/Linux, nicht in MySQL) braucht Schreibrechte auf die Verzeichnisse ''lock/'', ''cache/'' und ''feed-icons/''. Dazu einfach auf der Shell (im Verzeichnis von Tiny Tiny RSS)
<pre>
<pre>
$ for dir in "lock" "cache" "feed-icons"; do chown -R nobody:nobody "$dir"; done
$ for dir in "lock" "cache" "feed-icons"; do chown -R http:http "$dir"; done
</pre>
</pre>
ausführen.
ausführen.
Zeile 78: Zeile 64:


==== daemon ====
==== daemon ====
'''Wichtig:''' Damit es funktioniert, muss [[#PHP konfigurieren|PHP konfiguriert sein]], denn ''update.php'' muss ''php'' ausführen. Der daemon wird so gestartet:
Der daemon wird so gestartet:
<pre>
<pre>
$ su -m nobody -c "(trap '' SIGHUP && /usr/bin/php /var/services/web/ttrss/update.php --daemon >> /dev/null 2>&1) &" 2> /dev/null
$ su -m http -c "(trap '' SIGHUP && /usr/bin/php /var/services/web/ttrss/update.php --daemon >> /dev/null 2>&1) &" 2> /dev/null
</pre>
</pre>
===== Start-Stop-Skript =====
===== Start-Stop-Skript =====
Da dieser Befehl nach jedem Neustart der DS ausgeführt werden muss, bietet es sich an, dafür ein Start-Stop-Skript zu erstellen. Ein Musterskript, bei dem eventuell noch der Installationsort angepasst werden muß, [[Installation von Tiny Tiny RSS/Start-Stop-Skript|steht bereit]]. Da der Nutzer ''nobody'' in solchen Skripten beim Booten scheinbar keine Befehle ausführen kann, sieht es etwas seltsam aus, ist aber voll funktional (wer mehr darüber weiß, [http://www.synology-forum.de/showthread.html?36351-Benutzer-nobody-in-start-stop-Skripten sagt Bescheid]).
Da dieser Befehl nach jedem Neustart der DS ausgeführt werden muss, bietet es sich an, dafür ein Start-Stop-Skript zu erstellen. Ein Musterskript, bei dem eventuell noch der Installationsort angepasst werden muß, [[Installation von Tiny Tiny RSS/Start-Stop-Skript|steht bereit]]. Da der Nutzer ''http'' in solchen Skripten beim Booten scheinbar keine Befehle ausführen kann, sieht es etwas seltsam aus, ist aber voll funktional (wer mehr darüber weiß, [http://www.synology-forum.de/showthread.html?36351-Benutzer-nobody-in-start-stop-Skripten sagt Bescheid]).
Das Skript sollte in ''/usr/local/etc/rc.d/'' mit dem Suffix '''.sh''' gespeichert und mit ''chmod 755'' ausführbar gemacht werden.
Das Skript sollte in ''/usr/local/etc/rc.d/'' mit dem Suffix '''.sh''' gespeichert und mit ''chmod 755'' ausführbar gemacht werden.


Zeile 93: Zeile 79:
gestartet werden. Nach jedem Neustart der DS startet das Skript dann den daemon automatisch. Ob der daemon läuft, kann mit dem Befehl
gestartet werden. Nach jedem Neustart der DS startet das Skript dann den daemon automatisch. Ob der daemon läuft, kann mit dem Befehl
<pre>
<pre>
$ ps |grep nobody|grep php
$ ps |grep http|grep php
</pre>
</pre>
getest werden: Wenn die Ausgabe eine Zeile wie
getest werden: Wenn die Ausgabe eine Zeile wie
<pre>
<pre>
10341 nobody   31520 S    /usr/bin/php /var/services/web/ttrss/update.php --daemon --quiet
10341 http   31520 S    /usr/bin/php /var/services/web/ttrss/update.php --daemon --quiet
</pre>
</pre>
enthält (einige Details können abweichen, wichtig ist, daß ''/var/services/web/ttrss/update.php --daemon'' enthalten ist), wird der daemon ausgeführt.
enthält (einige Details können abweichen, wichtig ist, daß ''/var/services/web/ttrss/update.php --daemon'' enthalten ist), wird der daemon ausgeführt.
Zeile 104: Zeile 90:
Im cronjob muss der Befehl
Im cronjob muss der Befehl
<pre>
<pre>
su -m nobody -c "cd /var/services/web/ttrss && /usr/bin/php /var/services/web/ttrss/update.php --feeds >> /dev/null 2>&1" 2> /dev/null
su -m http -c "cd /var/services/web/ttrss && /usr/bin/php /var/services/web/ttrss/update.php --feeds >> /dev/null 2>&1" 2> /dev/null
</pre>
</pre>
ausgeführt werden. Für eine Periode von 20 Minuten wäre das Cron-Präfix
ausgeführt werden. Für eine Periode von 20 Minuten wäre das Cron-Präfix
Zeile 130: Zeile 116:


=== Eingebauter Updater ===
=== Eingebauter Updater ===
Der eingebaute Updater ist als Plugin realisiert und muss ''tar'' ausführen können. Dazu muss entweder der [[#PHP ausführen|Safe Mode]] deaktiviert werden, oder aber
Der eingebaute Updater ist als Plugin realisiert und hat eine grafische Oberfläche.
<pre>
 
$ ln -s /bin/tar /usr/syno/bin/tar
Er lädt die neue Version als tarball herunter, benennt das Verzeichnis ttrss um,
</pre>
entpackt den tarball nach ttrss und kopiert einige Dateien des alten Verzeichnis
ausgeführt werden.
(darunter config.php). Der Nutzer ''http'' braucht daher Schreibzugriff auf ''/var/services/web''.


== Fertig! ==
== Fertig! ==

Version vom 11. April 2014, 01:51 Uhr

Tiny Tiny RSS ist ein server-basierter Feedreader, vergleichbar mit dem (inzwischen eingestellten) Google Reader oder Feedly, aber die Daten bleiben daheim. Neben einer AJAX-Weboberfläche (hier in Aktion zu sehen), die auch auf mobile Geräte angepasst werden kann, gibt es auch ein API, mit dem Informationen über die abonnierten Feeds auch externen Anwendungen zur Verfügung stehen (wird vom Linux-Feedreader Liferea und dem Android Client genutzt).

Dieser Artikel beschreibt, wie es auf einer DiskStation installiert und (basis-)konfiguriert werden kann. Es muss ein root-Zugang zur Kommandozeile bestehen. Die Anleitung bezieht sich auf die Version 1.12 von Tiny Tiny RSS, und DSM Version 5 mit PHP 5.5.x.

Es gibt inzwischen auch ein Community-Paket.

Vorarbeiten auf der DS

Webserver und Datenbank aktivieren

Sowohl die Web Station als auch MySQL müssen aktiviert werden. Tiny Tiny RSS kann auch mit PostgreSQL benutzt werden, was deutlich performanter ist. Es gibt es eine Anleitung dazu, aber da das umständlicher ist, wird im weiteren Artikel MySQL benutzt. Um MySQL ein wenig erträglicher zu machen, kann die Konfiguration etwas angepasst werden.

PHP konfigurieren

open_basedir

Seit Version 1.7.9 wird nichtleeres open_basedir offiziell unterstützt. Mit der Grundeinstellung der DS sollte es keine Probleme geben, eventuell kann es nötig sein, den "richtigen" Pfad /volume1/web in open_basedir aufzunehmen.

Tiny Tiny RSS konfigurieren

Herunterladen

Es werden zwei Wege vorgestellt, um Tiny Tiny RSS in das Verzeichnis /var/services/web/ttrss zu bekommen.

tarball

Das geht zum Beispiel mit

$ cd /tmp
$ wget https://github.com/gothfox/Tiny-Tiny-RSS/archive/1.7.9.tar.gz
$ tar -xf tt-rss-1.7.9.tar.gz -C /var/services/web
$ mv /var/services/web/tt-rss-1.7.9 /var/services/web/ttrss

für Version 1.7.9; die genaue URL der aktuellen Version findet sich auf der Projektseite.

git

Eine weitere Möglichkeit, die vom Programmierer empfohlen und unterstützt wird, ist sich das Projekt-Repository mit git herunterladen; git steht als Paket zur Verfügung. Man erhält damit Bugfixes und neue Features schneller, und das Updaten der Installation ist so wesentlich bequemer. Ein Befehl zum erstmaligen Herunterladen auf der DS ist dann

$ git clone https://github.com/gothfox/Tiny-Tiny-RSS.git /var/services/web/ttrss

Das Pflegen der Installation setzt dann natürlich Grundkenntnisse über den Umgang mit git voraus, die man sich z.B. hier aneignen kann.

Datenbank erstellen

Es muß eine Datenbank angelegt werden. Wie das geht, beschreibt dieser Artikel.

Die weitere Konfiguration erfordert, daß ein MySQL-Nutzer und dessen Passwort in die Datei config.php gespeichert werden. Der Benutzer http auf der DiskStation muß diese Datei lesen können. Daher empfiehlt es sich, zum Zugriff auf die angelegte Datenbank nicht den root-Account von MySQL zu benutzen, sondern einen eigenen MySQL-Nutzer anzulegen, der die nötigsten Privilegien hat. Details dazu ebenfalls hier.

Schreibrechte

Der Nutzer http (auf der DiskStation/Linux, nicht in MySQL) braucht Schreibrechte auf die Verzeichnisse lock/, cache/ und feed-icons/. Dazu einfach auf der Shell (im Verzeichnis von Tiny Tiny RSS)

$ for dir in "lock" "cache" "feed-icons"; do chown -R http:http "$dir"; done

ausführen.

Erstellen von config.php

Die Datei config.php-dist muss in config.php umbenannt werden. Bei den darin definierten PHP-Konstanten 'DB_TYPE', 'DB_USER', 'DB_NAME', 'DB_PASS', 'DB_PORT' und 'SELF_URL_PATH' müssen mit einem Texteditor die richtigen Werte eingetragen werden. Ist die angelegte Datenbank db und der darauf zugreifende MySQL-Nutzer user mit dem Passwort pass, muß in der Datei folgendes eingetragen sein:

	define('DB_TYPE', "mysql");
	define('DB_HOST', "localhost");
	define('DB_USER', "user");
	define('DB_NAME', "db");
	define('DB_PASS', "pass");
	define('DB_PORT', '3306');

('DB_HOST' bleibt unverändert). Bei 'SELF_URL_PATH' muß die URL eingetragen werden, unter der Tiny Tiny RSS aufgerufen wird. Das sind z.B. http://192.168.178.56/ttrss (hier hat die DiskStation die Adresse 192.168.178.56) oder http://subdomain.dnsdyn.co.uk/ttrss. Für Erreichbarkeit der DS von außerhalb des eigenen Netzwerks siehe hier.

Updating Feeds

Tiny Tiny RSS sollte jetzt per Browser erreichbar sein. Um Feeds aktualisieren zu können, muß entweder ein mitgelieferter Update daemon gestartet oder ein cronjob eingetragen werden. Empfohlen (und auch machbar) ist die Methode mit dem daemon.

daemon

Der daemon wird so gestartet:

$ su -m http -c "(trap '' SIGHUP && /usr/bin/php /var/services/web/ttrss/update.php --daemon >> /dev/null 2>&1) &" 2> /dev/null
Start-Stop-Skript

Da dieser Befehl nach jedem Neustart der DS ausgeführt werden muss, bietet es sich an, dafür ein Start-Stop-Skript zu erstellen. Ein Musterskript, bei dem eventuell noch der Installationsort angepasst werden muß, steht bereit. Da der Nutzer http in solchen Skripten beim Booten scheinbar keine Befehle ausführen kann, sieht es etwas seltsam aus, ist aber voll funktional (wer mehr darüber weiß, sagt Bescheid). Das Skript sollte in /usr/local/etc/rc.d/ mit dem Suffix .sh gespeichert und mit chmod 755 ausführbar gemacht werden.

Beispiel

Ist das Skript unter /usr/local/etc/rc.d/ttrss.sh gespeichert und mit chmod 755 /usr/local/etc/rc.d/ttrss.sh ausführbar gemacht worden, kann der update daemon mit

$ /usr/local/etc/rc.d/ttrss.sh start

gestartet werden. Nach jedem Neustart der DS startet das Skript dann den daemon automatisch. Ob der daemon läuft, kann mit dem Befehl

$ ps |grep http|grep php

getest werden: Wenn die Ausgabe eine Zeile wie

10341 http   31520 S    /usr/bin/php /var/services/web/ttrss/update.php --daemon --quiet

enthält (einige Details können abweichen, wichtig ist, daß /var/services/web/ttrss/update.php --daemon enthalten ist), wird der daemon ausgeführt.

cron

Im cronjob muss der Befehl

su -m http -c "cd /var/services/web/ttrss && /usr/bin/php /var/services/web/ttrss/update.php --feeds >> /dev/null 2>&1" 2> /dev/null

ausgeführt werden. Für eine Periode von 20 Minuten wäre das Cron-Präfix

*/20	*	*	*	*

einzutragen. Details sind im Artikel zu Cron beschrieben.

Fehlermeldungen

Von der bei Einsatz einer der beiden Update-Methoden evtl. erscheinenden Fehlermeldung
su: can't chdir to home directory '/home'
sollte man sich nicht abschrecken lassen, dies sollte keine Auswirkungen auf deren Funktionalität haben.

Tiny Tiny RSS aktualisieren

Je nachdem wie Tiny Tiny RSS installiert wurde, gibt es mehrere Möglichkeiten es zu updaten. Nach einem erfolgreichen Update müssen eventuell noch einige Verwaltungsaufgaben, wie das Updaten des Datenbankschemas oder Ergänzen von config.php vorgenommen werden, Details gibt Tiny Tiny RSS auf seiner Webseite aus. Wichtig: Es empfiehlt sich, vor Änderungen am Datenbankschema ein Backup der Datenbank anzulegen.

git

Man führt dazu auf der Kommandozeile einfach

$ cd /var/services/web/ttrss
$ git pull

aus, wenn Tiny Tiny RSS wie oben beschrieben installiert wurde. Der eingebaute Updater sollte bei Benutzung von git nicht verwendet und am besten deaktiviert werden.

Eingebauter Updater

Der eingebaute Updater ist als Plugin realisiert und hat eine grafische Oberfläche.

Er lädt die neue Version als tarball herunter, benennt das Verzeichnis ttrss um, entpackt den tarball nach ttrss und kopiert einige Dateien des alten Verzeichnis (darunter config.php). Der Nutzer http braucht daher Schreibzugriff auf /var/services/web.

Fertig!

Tiny Tiny RSS sollte jetzt ausführbar sein. Die Oberfläche ist dann unter http://AdresseOderIPderDiskStation/ttrss erreichbar und zeigt ein Login-Fenster. Der angelegte default-user heißt admin mit Passwort password (was möglichst bald geändert werden sollte).

Weitere Optionen

Die Funktionalität von Tiny Tiny RSS kann noch erweitert werden, z.B. mit einer Indizierungssoftware, der Unterstützung des push-Protokolls PubSubHubbub oder einer Komprimierung der übertragenen Daten. Details dazu sind in der Datei config.php zu finden (und zu ändern).

Tiny Tiny RSS kann mit Plugins erweitert werden. Es werden einige mitgeliefert. Man kann sie in den Einstellungen an- und abschalten. Dort sind auch kurze Beschreibungen zu finden.

Support

Sollte es zu Problemen kommen, könnt ihr in diesem Forumsbeitrag nach Hilfe fragen.