Die Idee ist gut, doch die Welt noch nicht bereit?

mein öffentliches Langzeit- und verlängertes Kurzzeitgedächtnis

                 

HOWTO: Wallabag auf dem Raspberry Pi (Raspbian Jessie)

In diesem Artikel möchte ich beschreiben, wie man die „read-it-later“ Software wallabag selber auf einem raspberry pi hosten kann. Wallabag ist sehr ähnlich zu Pocket. Pocket ist dieser Knopf, der vor einiger Zeit ungefragt in Firefox erschien und aussieht wie ein Schild: pocket-symbol Ein Klick auf dieses Logo und ein Account bei Pocket, speichert die momentane Seite auf den Servern von Pocket. Durch verschiedene Apps hat man dann Zugriff auf seine Leseliste. So kann man interessante Artikel, für die man gerade keine Zeit hat, leicht auf anderen Geräten verfügbar machen, um sie später zu lesen.

Mein Hauptproblem mit Pocket ist, dass es keine freie Software ist, und ich es deshalb nicht bei mir selber hosten kann. Ein Problem deshalb, weil ich versuche so wenig Daten wie möglich an mir fremde Unternehmen auszulagern. Insbesondere eine Liste mit Artikeln, die ich interessant finde, hat m.E. nichts bei einer Firma zu suchen, die meine gespeicherten Artikel offensichtlich inhaltlich analysiert (denn es werden Leseempfehlungen angeboten).1 Immerhin hat Mozilla Ende Februar 2017 die Firma hinter Pocket gekauft und versprochen, dass Pocket bald open source Software sein soll.

Noch ist es aber nicht soweit und ich möchte nicht so lange warten. Deshalb habe ich mir auf meinem raspberry pi (Model B+ mit Raspbian Jessie), auf dem auch dieser Blog läuft, wallabag installiert und möchte hier erklären, wie das funktioniert. Wer wallabag erst einmal ausprobieren möchte, kann sich einen kostenpflichtigen, “offiziellen” Account (14 Tage umsonst) anlegen, oder einen kostenfreien Account bei der Framasphere. Diese Anleitung basiert dabei auf diesem englischsprachigen Tutorial, der offiziellen wallabag Dokumentation, die es in auch in Deutsch gibt, sowie Trial & Error. Nach der langen Vorrede nun aber endlich an die Arbeit.

Voraussetzungen

Zunächst einmal müssen wir einige Pakete installieren, die von wallabag benötigt werden. Da wallabag in PHP programmiert ist, installieren wir folgende Pakete:

sudo apt-get install php5-curl php5-json php5-gd php5-fpm

Ich habe sowieso schon den Webserver nginx und eine MySQL Datenbank (genauer: MariaDB) auf meinem Raspi laufen, deshalb werde ich diese im weiteren Verlauf benutzen. Um an wallabag heranzukommen und es zu installieren benötigen wir außerdem noch git, make und curl. Falls das alles noch nicht installiert sein sollte, sollte es das nach diesem Befehl sein:

sudo apt-get install nginx mariadb-server git make curl

Wer SQLite benutzen möchte, braucht das Paket mariadb-server nicht zu installieren, braucht dafür aber die Pakete php5-sqlite und sqlite.

Schließlich benötigt wallabag noch composer, eine Abhängigkeitsverwaltung für die diversen PHP Module. Composer lässt sich mit diesem Befehl, der erst mithilfe von curl eine Datei herunterlädt und diese dann mit php öffnet, installieren:

curl -s https://getcomposer.org/installer | php

Datenbank vorbereiten

(WerSQLite benutzen möchte, kann diesen Abschnitt überspringen.)

Wir legen eine leere Datenbank in MariaDB mit folgenden Befehlen an.

Zunächst als MySQL-Root einloggen (dafür braucht man das MySQL Root Passwort, nicht das System-Root Passwort!):

mysql -u root -p

Innerhalb von MySQL legen wir dann eine Datenbank und einen Datenbankbenutzer an. Den Benutzernamen und das Passwort brauchen wir im nächsten Schritt. Ich habe hier beispielhaft wb und pwdb gewählt, man darf hier aber gerne kreativ werden.

create database wallabag;
create user wb@localhost;
set password for wb@localhost= password("pwdb");

Dem neuen Nutzer alle Rechte in der Datenbank geben und MySQL verlassen:

grant all privileges on wallabag.* to wb@localhost identified by 'pwdb';
flush privileges;
exit;

Wallabag installieren

Nun können wir wallabag herunterladen und installieren. Dazu klonen wir uns das wallabag git-Repository von github und lassen danach das Installationsskript laufen:

git clone https://github.com/wallabag/wallabag.git
cd wallabag
make install

Das dauert eine Weile, da einige PHP Abhängigkeiten installiert werden. Am Ende des Prozesses werden einige Konfigurationsparameter abgefragt. Eine Liste aller Parameter inkl. Bedeutung gibt es hier in der Dokumentation.

Für SqLite reicht es, den database_path auf die sqlite Datei zu setzen, die man benutzen möchte; der Standard wird hier vermutlich ganz sinnvoll sein. Für MySQL/MariaDB müssen wir unter database_driver statt pdo_sqlite pdo_mysql eintragen und den database_path auf null setzen. Außerdem müssen wir database_user und database_password auf die Werte setzen, die wir oben gewählt haben.

Die Einrichtung eines Admin Users ist sinnvoll, damit wir die weitere Konfiguration bequem über die Weboberfläche erledigen können. Bei allen anderen Parameternachfragen drücken wir im Zweifel einfach Enter und übernehmen damit die Standardabfragen.

Durch ein beherztes

make run

sollte jetzt schon ein funktionstüchtiges wallabag unter http://raspi-ip:8000 zu erreichen sein.

nginx einrichten

Je nachdem, in welchem Ordner wallabag installiert wurde, verschieben wir zunächst die gesamte Installation nach /var/www/ und erteilen dann dem Benutzer www-data (d.h. nginx) alle nötigen Rechte:

sudo mv /home/username/wallabag/ /var/www/
sudo chown -R www-data:www-data /var/www/wallabag/web
sudo chown -R www-data:www-data /var/www/wallabag/var
sudo chown -R www-data:www-data /var/www/wallabag/bin
sudo chown -R www-data:www-data /var/www/wallabag/app/config
sudo chown -R www-data:www-data /var/www/wallabag/vendor
sudo chown -R www-data:www-data /var/www/wallabag/data/

Unter dem Pfad /etc/nginx/sites-available legen wir eine Textdatei mit beliebigem Namen (z.b. wallabag) und folgendem, anzupassendem Inhalt an2:

server {
    server_name derNameDesServers.de;
    root /var/www/wallabag/web;

    location / {
	 # try to serve file directly, fallback to app.php
        try_files $uri /app.php$is_args$args;
    }
    location ~ ^/app\.php(/|$) {
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        include fastcgi_params;
        fastcgi_param  SCRIPT_FILENAME  $realpath_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $realpath_root;
        internal;
    }

    # return 404 for all other php files not matching the front controller
    # this prevents access to other php files you don't want to be accessible.
    location ~ \.php$ {
        return 404;
    }

    error_log /var/log/nginx/wallabag_error.log;
    access_log /var/log/nginx/wallabag_access.log;
}

Um die Seite zu aktivieren, verlinken wir diese Datei in den Ordner /etc/nginx/sites-enabled und starten nginx neu:

sudo ln -s /etc/nginx/sites-available/wallabag /etc/nginx/sites-enabled/wallabag
sudo systemctl restart nginx

Nun sollte die Wallabag-Instanz unter http://derNameDesServers.de erreichbar sein. Im Rahmen der Konfiguration haben wir hoffentlich einen Super-Admin User angelegt, mit dem wir uns nun einloggen können.

Bei Nachfragen gerne die Kommentarfunktion benutzen, ansonsten viel Erfolg und Freude!


  1. Technisch sicher eine Herausforderung, für den Benutzer auch bestimmt eine Bereicherung, datenschutztechnisch für mich aber v.a. Grund zur Skepsis. [return]
  2. Ich habe mein Wallabag zusätzlich per SSL mit Let’s Encrypt Zertifikaten eingerichtet. Das führt in diesem Tutorial aber zu weit, deshalb ist hier nur eine http Konfiguration zu sehen. [return]
Durch Eingeben eines Kommentars stimmst Du offensichtlicherweise der Speicherung der eingegebenen Daten (im Rahmen meiner Datenschutzerklärung) zu. Kommentarfunktion läuft mit lokal installiertem Isso. Leider gibt es noch keine Benachrichtigungen bei Antworten.
Alle Schlagwörter: baustelle · bielefeld · chemnitz · fahrrad · fahrradstadt-wider-willen · fdp · geld · gesellschaft · gnome · gnuplot · hertz · klimawandel · kurztipp · latex · münster · osbn · politik · promenade · raspberry-pi · rechtspopulismus · verkehrswende · Ich spende auf Liberapay. Mach mit!