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
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
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
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 ;)
Bei mir läuft noch eine ältere Version auf einem Raspberry 1B+. Bis auf den pdf-Export habe ich keine Probleme festgestellt.
Auf welche Probleme beziehst Du dich?
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!