Wallabag

Bookmark Dienst im Eigenbau

Posted by eumel8 on May 24, 2025 · 8 mins read

Intro

Diigo ist tot, Pocket ist tot … bald gibt’s keine vernünftigen Bookmark Dienste mehr. Als im Addon-Store von Firefox gibt es noch genug, aber wenige genügen diesen Anforderungen:

  • Firefox-Plugin mit rechtem Mausklick oder sonstigem einfachen Speichern der aktuellen Webseite
  • Zentrale Datenhaltung, damit man von verschiedenen Rechnern drauf zugreifen kann
  • Import/Export in gängige Formate
  • Kostenlos (nein, ich will nicht 20 Dollar dafür zahlen pro Monat)
  • Aktuell gepflegt

Okay, der letzte Punkt kostet Zeit und Geld und damit geht der vorletzte Punkt flöten. ChatGPT empfohl dann: Wallabag. Häh? Nie gehört!

Wallabag

Wallabag ist ein Bookmark Dienst, der zumindest seinen Quellcode offen bei Github beherbergt. Dort ist dann auch zu sehen, dass das Projekt sehr aktiv ist und sehr viele Maintainer unterwegs sind. Das ist ein sehr gutes Zeichen. Auf der Herstellerwebseite selber gibt es auch ein Hostingangebot für 11 Dollar im Jahr. Das würde noch gehen, aber wir wollen es selber bauen und betreiben. Los geht’s!

Container

Technisch ist Wallabag eine PHP-Anwendung. Die Daten werden standardmässig in einer SQLLite Datenbank vorgehalten. Geradezu perfekt, wennauch PHP gerade bei mir auf dem absteigenden Ast unterwegs ist. Hab jetzt schon mehrere Major-Updates hinter mir und wenn man mehrere Anwendungen auf derselben Plattform mit demselben PHP betreibt, diese dann aktualisiert, um dann festzustellen, dass die Hälfte danach nicht mehr geht, ist das schon sehr lästig. Um so perfekter ist es, dass die Wallabag Community auch ein Docker Image bereithält. Kleiner Wehrmutstropfen: Es läuft nicht unpriveligiert, aber immerhin gibt es eins. Mit

$ docker run -p 80:80 -e "SYMFONY__ENV__DOMAIN_NAME=http://localhost" wallabag/wallabag

kann es auch schon losgehen, wenn man SQLLite verwendet, ansonsten kann man auch eine MySQL dranfummeln.

Kubernetes

Wenn man Docker hat, hat man fast schon Kubernetes. Man kann Wallabag also im Kubernetes Cluster betreiben. Alles was man brauch, ist ein Helm-Chart, um Wallabag komfortabel zu deployen. Auch hier gab es schon einen netten Menschen, der da schon mal was gebastelt hat. Ein erster Wurf für ein Helm-Chart, aber immerhin gibt es eins.

Deployment

Das Helm-Chart hab ich etwas gepimpt, damit man auch einen Ingres konfigurieren kann und Storage konfigurieren für die SQLLite.

Auch das Wallabag-Image hat einen kleinen Fehler bzw. fehlt ein Konfigurations-Parameter, wenn man sehr viele Books gleichzeitig importieren muss. Ein Bugfix hier

In einem Kubernetes-Cluster mit CSI und Ingress-Controller kann ich das mit meinem Values deployen:

image:
  repository: ghcr.io/eumel8/wallabag/wallabag
  tag: proxy-timeout-2
  pullPolicy: Always

issuer:
  enabled: true
  emailAddress: eumel@arcor.de

ingress:
  domainName: wallabag1.eumel.de
  proxyConnectTimeout: 3600s
  proxyReadTimeout: 3600s
  enabled: true

persistence:
  enabled: true
  hostPath: "/data"

env:
  SYMFONY__ENV__DOMAIN_NAME: "https://wallabag1.eumel.de:443"
  PHP_MEMORY_LIMIT: 2048M
  FASTCGI_READ_TIMEOUT: 3600s

# minimal permissions for container
podSecurityContext: {}
securityContext: {}

install/upgrade:

helm -n wallabag upgrade -i wallabag -f my-values.yaml oci://ghcr.io/eumel8/charts/wallabag:0.1.2 --create-namespace

Danach kann man sich im Browser unter der URL seines Ingresses, also etwa https://wallabag1.eumel.de mit dem Standard Benutzer wallabag/wallabag anmelden.

Imports

Wie kommen jetzt die Bookmarks etwa von Diigo nach Wallabag? Solange der Webdienst von denen noch online ist, kann man unter tools die Bookmarks exportieren. Ich habe die Option Firefox gewählt, und bekomme nach einiger Zeit eine zip-Datei mit einer HTML-Seite zum Download angeboten.

Diese HTML-Seite kann man dann in Firefox im Lesezeichen-Menue importieren. Keine Sorge, es wird automatisch ein neuer Ordner erstellt, in dem sich dann die importieren Diigo-Lesezeichen befinden.

Diese kann man dann wiederum als json Datei exportieren. Die Json-Datei brauch man dann in Wallabag. Im User-Menu gibt es mehrere Import-Optionen. Wir verwenden Firefox-Import und laden die json Datei hoch.

Danach kann es mehrere Minuten dauern, je nach Anzahl der Bookmarks. Von einem Error 500 brauch man sich nicht abschrecken zu lassen. Ist die Datei erstmal hochgeladen, wird sie im Hintergrund weiter von Wallabag prozessiert. Also am besten erstmal einen Kaffee trinken.

Nach einiger Zeit kann man die Seite neu besuchen und es sieht dann vielleicht so aus:

Die Bookmarks wurden alle richtig erkannt, auch die Tags sind alle da. Wallabag versucht eine Vorschau pro Seite zu erstellen, ist schon fast zu viel des Guten. Bei manchen Bookmark stimmte der Timestamp nicht. Sie waren viel älter als angezeigt. Ich vermute mal, dass sie so alt waren, dass es das Feld createDate noch gar nicht gab. Muss man damit leben, wenn diese Bookmarks überhaupt noch auf ein gültiges Ziel verweisen. Wenn also kein Vorschaubild da ist, ist das schon mal ein gutes Zeichen, dass mit dem Ziel irgendwas nicht stimmt.

Mobile App

Auch ein nettes Feature: In den Usereinstellungen ist ein QR-Code mit der Konfiguration seiner Wallabag-Instanz für die Mobile App

Wallabagger

Das Addon für Firefox findet man hier, vergleichen kann man immer mit dem Source-Code hier. Es gibt noch etliche andere Versionen im Addon-Marktplat, da muss etwas aufpassen.

Wallabagger sollte nach der Installation ein Setup-Menü öffnen. Hier brauch man ein paar Daten aus der Wallabag-Installation. Also gehen wir dahin zurück, loggen uns mit dem Standard-User ein und erstellen am besten einen neuen User, mit dem wir uns dann einloggen und rechts im User-Menü einen API-Client erstellen:

Die generierten Daten traggen wir dann im Wallabagger ein und klicken auf Token holen:

Danach sollten alle Felder grün sein und Wallabagger ist mit Wallabag verbunden.

Fazit

Was Wallabaggen ist auf jeden Fall eine Umstellung. Ich meine, ich bin seit 2012 bei Diigo, da hat man sich an die spartane Bedienung und auch das “neue” Webdesign gewöhnt. Wallabag kommt eher an Pocket heran und so werden wohl viele Nutzer jetzt umsteigen, nachdem Pocket eingestellt wurde.

Das Picken der Webseiten geht ganz einfach, wenn man das Plugin in der Browserleiste einfach fixiert hat und auf der zu bookmarkenden Seite draufklickt, einen Tag vergibt und dann entweder diese archiviert oder mit dem Stern hervorhebt.

Im Wallabag selber ist es sehr unübersichtlich. Man kann die maximale Bookmarks pro Seite auf 200 stellen und dann oben die Suchleiste nutzen, um etwas zu finden. Das geht eigentlich sehr gut. Und man hat noch die Tags, die einwandfrei übernommen wurden. Man kann hier auch Bookmarks hinzzufügen, wenn man das Browser-Plugin nicht nützen möchte oder kann.

Happy Wallabag.

Achso, Thema Backup: Wie schon erwähnt, liegen alle Daten in der SQLLite Datenbank. Kann man leicht backupen. Oben rechts im Menü gibt es auch eine Export-Funktion in etliche Formate, wenn man wieder weg will. Das wars.

Und direkt noch ein Nachtrag: Bei über 1000 gespeicherten Links über 10 Jahre geht im Internet natürlich schon mal was verloren. Um nicht jeden Link einzeln zu überprüfen, gibt es hier ein Github Action, was das periodisch oder einmalig tut. Kaputte Links werden mit dead markiert.