Felix Neumann argumentiert zwar zurecht, dass Selberhosten keine massentaugliche Lösung für die Lock-In-Probleme darstellt, die wolkige Medien so mit sich bringen. Er hat dann aber kurz darauf doch Tiny Tiny RSS installiert – und mich damit, nach einem kurzen Reinschnuppern, dazu gebracht, es ihm nachzumachen.
Das Problem, dass Tiny Tiny RSS für mich lösen soll, ist das baldige Ende des Google Readers. Den nutze ich dazu, um auf einem beliebigen meiner derzeit zwei mobilen Endgeräte zu schauen, ob in Blogs und sonstigen RSS-Quellen neuer Lesestoff da ist. So ein bisschen ist er die Instanzierung der personalisierten Patchwork-Zeitung, über die ich vor kurzem geschrieben habe. Nur gibt es ihn in voraussichtlich ein paar Tagen nicht mehr, weil er sich für Google nicht lohnt.
Deswegen bin ich zumindest unterschwellig seit einiger Zeit auf der Suche nach einem Ersatz. Was ich bisher gefunden habe, war mir zu flippig – mir geht’s nicht um die hübsche Präsentation oder die Integration von Blogs etc. zum virtuellen Magazin, sondern um eine schlichte tabellarische Übersicht, der ich entnehmen kann, ob die Blogs (und anderen RSS-Quellen) A bis Z neue Artikel für mich bereithalten oder nicht. Und dann hätte ich gerne noch eine ebenso leichte Durchblätterfunktion – beim Google Reader für Android kann ich einfach Eintrag um Eintrag zur Seite wischen. Besonders gut geht das da, wo Volltexteinträge vorhanden sind.
Tiny Tiny RSS ist nun ein Open-Source-Projekte mit zwei Enden. Das eine sind eine Reihe von Apps, die mehr oder weniger die Funktionalität des Google Readers bieten. Da Tiny Tiny RSS auf eine offene API aufsetzt, könnte hier im Prinzip beliebig schöne Software entstehen. Was mir nach kurzem Durchgucken der Android-Apps bisher am besten gefällt, ist der TTRSS-Reader von Nils Braden. Schlicht, mit Seite-Wisch-Umblätter-Funktion, kein Schnickschnack. Mal sehen, ob ich dabei bleibe.
Die App ist allerdings nur die eine Seite. Das andere ist – und da kommt das Selberhosten ins Spiel – die Serversoftware Tiny Tiny RSS. Dieses Paket enthält zum einen ein Webinterface, um von jedem Browser aus auf die von mir abonnierten RSS-Feeds zugreifen zu können. Zum anderen werkelt hinter der Kulisse ein Programm, dass eine Datenbank mit den abgerufenen Feeds, den Abonnements, den Einstellungen etc. füttert. Diese Datenbank kann über eine API auch von den genannten Apps aus angesprochen werden. Das Mobiltelefon oder das Tablet ist sozusagen nur ein verlängerter Arm, um auf die auf meinem Server gespeicherten Dateien zugreifen zu können.
Damit das klappt, sind drei Dinge notwendig: Der Server muss PHP (5.3) können, er muss eine Datenbank mitbringen, und es müssen Dämonen oder Cronjobs möglich sein.
Übersetzt: PHP ist eine oft belächelte, aber wirkungsvolle Skriptsprache. Auch dieses Blog hier läuft auf einer PHP-basierten Software (WordPress hat übrigens gerade 10. Geburtstag). Ein einfacher Webserver, der nur HTML-Dateien darstellen kann, aber keinen ausführbaren Code zulässt, reicht also nicht aus. Dann braucht es Zugriff auf eine Datenbank (PostgreSQL oder MySQL); ein spezialisiertes System dafür, Daten möglichst schnell abzulegen und wieder abzurufen. WordPress legt in dieser Datenbank meine Blogartikel ab, Tiny Tiny RSS die abgerufenen Texte aus den Feeds. Um die Datenbank immer aktuell zu halten, muss ein Programm regelmäßig die abonnierten Blog-Feeds abfragen (wie auch immer das im Detail geschieht). Dazu braucht es entweder einen daemon – ein ständig im Hintergrund laufendes Linux/Unix-Programm – oder cronjob (eine Tabelle, in der steht, wann bzw. wie oft welche Programme ausgeführt werden sollen). Da steht dann beispielsweise, dass stündlich nach neuen Blogfeeds gesucht werden soll.
Mein Webspace liegt (aus historischen Gründen, falls jemand lästern will) bei Strato, „PowerWeb Paket S“ nennt sich das – das war mal das kleinste Angebot von Strato, bei dem PHP und der Datenbankzugriff dabei ist, was ich brauchte, um mein Blog selbst zu hosten (bzw. eben beim Massenanbieter Strato hosten zu lassen). Inzwischen gibt es dort andere Angebote; die Kombination aus PHP, der Datenbank MySQL und u.a. der Möglichkeit, cronjob zu nutzen, gibt es immer noch für relativ geringe monatliche Kosten.
Damit ist alles da, was ich brauche, um Tiny Tiny RSS einzusetzen. Die Installation wird hier beschrieben, ist aber relativ einfach: die Installationsdaten entpacken, in ein eigenes Verzeichnis („tt-rss/“) auf dem Server packen, install.php aufrufen, Zugangsdaten zur Datenbank eingeben, Passwörter ändern. In den Einstellungen muss dann noch der API-Zugriff ermöglicht werden. Schließlich muss noch der Eintrag in cronjob erledigt werden; das ist bei Strato über das Kundenlogin relativ bequem einrichtbar, d.h. fast ohne Unix-Kenntnisse möglich (nur die Suche nach dem richtigen Pfad dauerte etwas).
Die Generalprobe hat die Kombination aus selbstgehostetem Tiny Tiny RSS einerseits und einer passenden Reader-App andererseits jedenfalls schon bestanden: Bequemes Blättern auf dem Handy durch die neusten Blogeinträge, ohne Google Reader. (Auch wenn der Google Reader noch ein ganz klein wenig „smoother“ daherkommt …).
Jetzt geht es darum, meine „Blog-Sammlung“ vom Google Reader zu migrieren. Das sind nicht so viele, dass es sich lohnen würde, das technisch zu machen (der Google Reader kann seine RSS-Abos exportieren, ich habe aber bisher noch nicht gesehen, dass Tiny Tiny RSS die importieren kann). Dabei besteht die Möglichkeit, diese Feeds zu kategorisieren – mal sehen, ob ich darauf zurückgreife oder wie bisher bei einer flachen Liste bleibe.
Warum blogge ich das? Als ersten Erfahrungsbericht. Ob sich Tiny Tiny RSS im Alltagstest behauptet, und ob mein kleines Serverpaket mitspielt, werden die nächsten Tage und Wochen zeigen.
Ja, hab ich auch so gelöst. :)
Die Google-Reader-Feeds zu importieren ist übrigens wirklich gar kein Problem, den OPML-Importer findet man in den Einstellungen im „Feeds“-Tab.
Und über die Feeds hinaus können auch noch alle mit Sternen markierte Artikel und sogar die (als es noch ging) geteilten Artikel importiert werden. Dazu das Plugin »googlereaderimport« aktivieren; die Daten kommen von Google Takeout.
Danke für die Hinweise!