Installation von Wallabag auf Debian Jessie

Wallabag überzeugt auch in der neuen Version als selbsthostingfähige Pocketalternative. Durch den neuen Unterbau hat sich die Installation, im Gegensatz zu der ersten Version der Software ein wenig im Ablauf unter Debian geändert.

Das Internet bietet viele ausführliche und interessante Artikel, welche sich zu einem späterem Lesen anbieten. Dienste wie Instapaper und Pocket möchten dem Benutzer das Abspeichern und spätere wiederfinden und lesen auf einfach Art ermöglichen. Hierfür bieten die Dienste auch Clientsoftware für Tablets und Smartphones an, damit die Artikel aufbereitet Offline zur Verfügung gestellt werden. Für den Nutzer sind sie teilweise Kostenfrei und der Anbieter deckt seine Einnahmen durch den Verkauf von personalisierten Daten, oder Werbung welche in die Artikelübersicht eingestreut wird.

Wallabag

Wallabag hatte sich, damals 2013 unter den Namen Poche, dem Schutz der Privatsphäre verschrieben. Wallabag bietet seitdem die Möglichkeit einen Dienst welcher die Aufgabe von Pocket/Instapaper erfüllt auf dem eigenen Webspace oder auch Server zu installieren. Mittlerweile ist das Projekt positiv gewachsen und liegt in der Version 2.0.3 ( ich hatte Urlaub, am Upgrade sieht man den Wechsel auf Version 2.05) vor. Noch ist einiges rudimentär und entspricht eher einer späten, aber sehr gut nutzbaren Beta. So fehlt zum Beispiel noch eine Suche für die Artikel im Volltext, aber dafür bietet Wallabag aber schon Grundlegend eine sehr schnelle Filterfunktion nach Datum, Seitennamen, archivierten und favorisierten Artikeln, Lesezeiten in Minute, sowie der genutzten Sprache an.
Der Hauptentwickler betonte das „noch“ bei meiner Nachfrage betreffend der Suche und dem Auflisten nach Tags.

Im Ganzen lässt sich Wallabag aber in der neuen Version schon wirklich Gut nutzen und reagiert in einer Umgebung mit Apache, php5 und mySQL mit über 970 Artikeln sehr performant und ressourcensparend. Die Möglichkeit der Installation ab einem RaspberryPi 2 steht somit nichts im Wege.

Import

Importieren via Pocket API
Importieren via Pocket API

Als Importmöglichkeiten werden bis jetzt Wallabag V1, Wallabag V2 und natürlich Pocket unterstützt. Der Import aus Pocket erfolgt nicht wie in der vorhergehenden Version von Wallabag noch über einen Import via HTML-Datei. Der Entwickler nutzt in Version 2 die Möglichkeiten der API von Pocket. Ich empfehle bei vielen Artikel die max_execution_time der Datei /etc/php5/apache2/php.ini auf einen sehr hohen Wert zu stellen. Bei über 970 importierten Artikeln hatte sich der Wert max_input_time = 1200 als perfekt erwiesen. Falls nicht muss nach einem Abbruch durch die geringe Laufzeit der Import wiederholt angestoßen werden. Hier würde ich mir wirklich eine andere Möglichkeit wünschen.

Um den Import von Pocket via API zu ermöglichen wird ein Consumerkey genutzt, welcher unter https://getpocket.com/developer/apps/new  erstellt werden muss. Den auf Pocket erstellten Desktopkey habe ich nach der Installation von Wallabag in das dafür vorgesehene Feld in den Einstellungen von Wallabag eingetragen ( internal Settings > Import) und bis auf einen fehlenden Waitcursor kam es zu keinen Komplikationen bei dem Import. Es wurden leider nicht alle Tags übernommen, welches aber an meiner zu geringen Ausführungszeit für PHP-Scripte und den damit verbundenen reimports liegen konnte. Ich müsste dies nochmal bei Bedarf evaluieren.

Installation von Wallabag auf Debian Jessie

Ich gehe davon aus, dass ein Datenbanksystem ( MariaDB / mySQL), sowie der Apache Webserver inkl PHP5 schon installiert wurden und funktionsfähig sind.

Die Installation erfolgt mit Hilfe des Paketmanagers Composer und git. Composer bietet die einfache Installation von Paketabhängigkeiten von Anwendungen welche auf PHP basieren. Ich installiere Composer nicht systemweit, sondern nur in dem Installationsordner der genutzten Webanwendung mit Hilfe des Users unter dessen Kontext der Webserver läuft. Der Installationsordner ist /var/www/html/wallabag und Wallabag wird als Standardwebseite genutzt. Falls die Installation in einem anderen Ordner, einem Unterordner der Domain, oder einer Subdomain erfolgt sind die Pfade bei der Installation und bei der Erstellung des virtual hosts zu berücksichtigen.

Abhängigkeiten installieren

root@jupiter:/var/www/html/# apache2ctl -v
Server version: Apache/2.4.10 (Debian)
Server built: Jan 3 2016 03:50:53
root@jupiter:/var/www/html/# mysql -V
mysql Ver 15.1 Distrib 10.0.23-MariaDB, for debian-linux-gnu (i686) using readline 5.2
root@jupiter:/var/www/html/# a2enmod rewrite
root@jupiter:/var/www/html/# aptitude install php5-curl php5-json php5-gd php5-xmlrpc php5-tidy php5-mysql php5-readline php5-cli

Datenbank erstellen

root@jupiter:/var/www/html/#mysql -u root -p
Enter password:

mysql> create database wallabag;
Query OK, 1 row affected (0.00 sec)

mysql> grant usage on *.* to wallabaggi@localhost identified by 'GEHEIMESPASSWORT';
Query OK, 0 rows affected (0.00 sec)

mysql> grant all privileges on wallabag.* to wallabaggi@localhost;
Query OK, 0 rows affected (0.00 sec)

mysql> quit
Bye

root@jupiter:/var/www/html/#mysql -u wallabaggi -p'GEHEIMESPASSWORT' wallabag

Vhost erstellen

Hier kann nach einem Backup die Datei /etc/apache2/sites-available/000-default.conf bzw default-ssl.conf genutzt werden. Falls ein Subfolder, oder eine Subdomain genutzt wird, sollte am besten die 000-default bzw default-ssl.conf nach wallabag.conf / wallabag_ssl.conf kopiert und bearbeitet werden. Anschließend müssen die neu erstellten Dateien ( wallabag.conf bzw wallabag_ssl.conf) per a2ensite in Apache aktiviert werden. Per apachectl configtest lässt sich die Syntax der erstellten Dateien überprüfen. Beispielgebend ist hier zuerst eine nicht verschlüsselte Verbindung im Standardverzeichnis aufgeführt. Ich rate zu der zweiten hier aufgeführten Variante. Diese setzt das Erstellen von SSL-Zertifikaten via Let’s encrypt, sowie den Zugriff auf den Webserver via Internet voraus.

Variante 1:

<VirtualHost *:80>
ServerAdmin wallabag@got-tty.org
DocumentRoot /var/www/html/wallabag/web
<Directory /var/www/html/wallabag/web>
AllowOverride None
Order Allow,Deny
Allow from All

<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app.php [QSA,L]
</IfModule>
</Directory>

<Directory /var/www/html/wallabag/web/bundles>
<IfModule mod_rewrite.c>
RewriteEngine Off
</IfModule>
</Directory>
ErrorLog /var/log/apache2/wallabag_error.log
CustomLog /var/log/apache2/wallabag_access.log combined
</VirtualHost>

Variante  mit einer automatischen Weiterleitung zu TLS 2:

<VirtualHost *:80>
ServerName wallabag.got-tty.org
ServerAdmin wallabag@got-tty.org
DocumentRoot /var/www/html/wallabag/web
RewriteEngine On
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]

<Directory /var/www/html/wallabag/web>
AllowOverride None
Order Allow,Deny
Allow from All

<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app.php [QSA,L]
</IfModule>

<Directory /var/www/html/wallabag/web/bundles>
<IfModule mod_rewrite.c>
RewriteEngine Off
</IfModule>
</Directory>
ErrorLog /var/log/apache2/wallabag_error.log
CustomLog /var/log/apache2/wallabag_access.log combined
</VirtualHost>

<VirtualHost *:443>
SSLEngine On
SSLCipherSuite ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:!RC4:HIGH:!MD5:!aNULL:!EDH
SSLHonorCipherOrder on
SSLCompression off
SSLProtocol All -SSLv2 -SSLv3
SSLCertificateFile /etc/letsencrypt/live/wallabag.got-tty.org/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/wallabag.got-tty.org/privkey.pem
ServerAdmin  wallabag@got-tty.org
ServerName wallabag.got-tty.org
DocumentRoot /var/www/html/wallabag/web
<Directory /var/www/html/wallabag/web>
AllowOverride None
Order Allow,Deny
Allow from All

<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app.php [QSA,L]
</IfModule>

<Directory /var/www/html/wallabag/web/bundles>
<IfModule mod_rewrite.c>
RewriteEngine Off
</IfModule>
</Directory>
ErrorLog /var/log/apache2/ssl_wallabag_error.log
CustomLog /var/log/apache2/ssl_wallabag_access.log combined
Header always add Strict-Transport-Security "max-age=15768000; includeSubDomains; preload"
</VirtualHost>

Wallabag via git und composer installieren

Hier wird composer in das Arbeitsverzeichnis von wallabag installiert und nicht systemweit.

cd /var/www/html/
 root@jupiter:/var/www/html # sudo -u www-data  git clone https://github.com/wallabag/wallabag.git && cd wallabag
 root@jupiter:/var/www/html/wallabag # sudo -u www-data git checkout 2.0.5
 root@jupiter:/var/www/html/wallabag # sudo -u www-data curl -s http://getcomposer.org/installer | php
 root@jupiter:/var/www/html/wallabag # sudo -u www-data mv composer.phar composer
 root@jupiter:/var/www/html/wallabag # chown -R www-data:www-data ../wallabag/
 root@jupiter:/var/www/html/wallabag # sudo -u www-data SYMFONY_ENV=prod ./composer install --no-dev -o --prefer-dist

Loading composer repositories with package information
 Installing dependencies from lock file
 - Installing behat/transliterator (v1.1.0)
 Downloading: 100%

- Installing twig/twig (v1.24.0)
 Downloading: 100%

etc ....

Produktivumgebung installieren

root@jupiter:/var/www/html/wallabag# sudo -u www-data php bin/console wallabag:install --env=prod

database_driver (pdo_sqlite): pdo_mysql
 database_host (127.0.0.1): 127.0.0.1
 database_port (null): 3306
 database_name (symfony): $DATENBANKNAME
 database_user (root): $DATENBANKNUTZER
 database_password (null): $PASSWORTDESDATENBANKNUTZERS
 database_path ('%kernel.root_dir%/../data/db/wallabag.sqlite'):
 database_table_prefix (wallabag_): wallabag_
 mailer_transport (smtp): smtp
 mailer_host (127.0.0.1): $MAILSERVERIPBZWNAME
 mailer_user (null): $bENUTZERNAMENMAILSERVER
 mailer_password (null): $PASSWORTMAILSERVER
 locale (en): en
 secret (ovmpmAWXRCabNlMgzlzFXDYmCFfzGv): $SECRTEINGEBEN
 TworFaktor false
 twofactor_sender (no-reply@wallabag.org): no-reply@wallabag.org
 fosuser_confirmation (true): false
 from_email (no-reply@wallabag.org): no-reply@wallabag.org

Step 1 of 5. Checking system requirements.
 +-----------------+--------+----------------+
 | Checked | Status | Recommendation |
 +-----------------+--------+----------------+
 | PDO Driver | OK! | |
 | curl_exec | OK! | |
 | curl_multi_init | OK! | |
 +-----------------+--------+----------------+
 Success! Your system can run Wallabag properly.

Step 2 of 5. Setting up database.
 It appears that your database already exists. Would you like to reset it? (y/N)
 Creating schema
 Clearing the cache

Step 3 of 5. Administration setup.
 Would you like to create a new admin user (recommended) ? (Y/n)y
 Username (default: wallabag) : ChristianmGrube
 Password (default: wallabag) : Dasmagischepasswort
 Email: $MAILADRESSE

Step 4 of 5. Config setup.

Step 5 of 5. Installing assets.

Wallabag has been successfully installed.
 Just execute `php bin/console server:run --env=prod` for using wallabag: http://localhost:8000
 root@jupiter:/var/www/html/wallabag# apachectl restart

Wallabag ist nun installiert und kann weiter über die Weboberfläche administriert werden.

Upgrade Wallabag

root@jupiter:/var/www/html/wallabag# sudo -u www-data git fetch origin
root@jupiter:/var/www/html/wallabag# sudo -u www-data git fetch --tags
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Entpacke Objekte: 100% (3/3), Fertig.
Von https://github.com/wallabag/wallabag
 * [neues Tag]       2.0.5      -> 2.0.5
## Neuer Tag ergibt den checkout, siehe nachfolgende Zeile
root@jupiter:/var/www/html/wallabag# sudo -u www-data git checkout 2.0.5
root@jupiter:/var/www/html/wallabag# sudo -u www-data SYMFONY_ENV=prod ./composer install --no-dev -o --prefer-dist
root@jupiter:/var/www/html/wallabag# sudo -u www-data php bin/console cache:clear --env=prod

Erweiterungen für die Browser

Konfiguration des Firefoxplugins
Konfiguration des Firefoxplugins

Um für das Plugin für Firefox die nötige Client ID. und die Secret ID. zu erstellen ruft man in Wallabag den Punkt Developer / Entwickler auf und erstellt eine neue Client ID falls noch keine vorhanden ist. Die  WeiterleitungsURI ist die InstallationsURL von Wallabag.

Das Plugin von Wallabag-v2 gibt es leider nicht mehr für Firefox

6 Gedanken zu „Installation von Wallabag auf Debian Jessie“

  1. Vielen Dank! Endlich weiß ich, wie ich das Ding updaten kann. Zum Erstellen eines neuen Benutzers für eine Datenbank kann auch „grant all on foo.* to bar@localhost identified by ‚geheim‘;“ verwendet werden. Das macht usage gleich mit – Tipparbeit gespart ;)

  2. Bei mir läuft noch eine ältere Version auf einem Raspberry 1B+. Bis auf den pdf-Export habe ich keine Probleme festgestellt.

  3. Tausend Dank, mit dieser Anleitung hab ich zum ersten Mal Wallabag ohne Docker installieren können!

    Eine Anfängerfrage noch: Wie kann ich parallel zu Wallabag noch andere Webseiten laufen lassen? Mit dieser Konfiguration läuft Wallabag im Rootfolder also http://www.domain.com. Erstelle ich Dokumente in http://www.domain.com/wiki/ werden diese nicht gefunden. Vermutlich geht das nur wenn Wallbag auf http://www.domain.com/wallabag läuft? Dazu müsste man den vhost ändern, richtig? Aber wie?

    Danke schon mal!

    • In der Anleitung steht schon ein vhost mit subdomain.
      Als Beispiel steht dort ServerName wallabag.got-tty.org.
      Für dich wäre dies dann wallabag.domain.com ;)
      Somit hat Wallabag eine eigene Domain, Subdomain.
      Apache Vhost Example

      Was meinst Du mit wiki ?!?!
      Ein Wiki kommt in meiner Anleitung nicht vor.
      Wenn Du Wallabag in einen Unterordner Deiner Domain /var/www/html/TOLLEDOMAIN/wallabag/, dann ist die URL auch http://www.domain.com/wallabag

      • Danke, nun hab ich es hinbekommen. Nicht auf domain.com/wallabag, sondern nur auf domain.com/wallabag/web, aber das wichtigste ist, dass ich nun auch anderes, u.a. ein Wiki laufen lassen kann. Das ist bei einer Docker-Installation, die viel einfacher ist, nicht möglich, oder ich bekam es zumindestens nicht hin. Wallabag lief da immer auf domain.com:8888 (oder auf einem anderen nicht-Standard-Port. Epub-Export funktioniert nun erstmals auch. Vielen Dank nochmals für die Anleitung, die offzielle Dokumentation ist nämlich nicht gerade hilfreich!

Kommentare sind geschlossen.