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: 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!
-
Technisch sicher eine Herausforderung, für den Benutzer auch bestimmt eine Bereicherung, datenschutztechnisch für mich aber v.a. Grund zur Skepsis. ↩︎
-
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. ↩︎
Durch Eingeben eines Kommentars stimmst Du offensichtlicherweise der Speicherung der eingegebenen Daten (im Rahmen meiner Datenschutzerklärung) zu. Die Kommentarfunktion läuft mit lokal installiertem Isso. Um eine E-Mail zu bekommen, wenn jemand auf Deinen Kommentar antwortet, wird Deine E-Mail-Adresse benötigt und Du musst ein Häkchen setzen.