Web-Archiv Teil 8: Wallabag und ArchiveBox

Als ich mit der Recherche um das Thema angefangen habe, erschein mir ArchiveBox zunächst als die bessere Lösung, nach einiger Zeit ist dieser Gedanke aber mehr und mehr in Richtung Wallabag umgeschwenkt. Dennoch bietet auch ArchiveBox ein nicht zu unterschätzendes Werkzeug, dass genauere Betrachtung verdient.

ArchiveBox ist an das Internet Archive angelehnt und dient, wie der Name schon sagt, dem Archivieren von Webinhalten. Es ist allerdings nicht auf die Verwaltung von großen Textmengen optimiert und kann beispielsweise nicht mit Tags umgehen. Daher fiel es funktionsmäßig als erstes Tool in der Kette aus.
Dennoch kann es gute Gründe geben, Websites mittels ArchiveBox zu sichern: Die Software ist in der Lage, eine Website auf vielerlei Arten zu sichern: Als Screenshot, Volltext-HTML (jedoch keine Reduzierung auf den wesentlichen Textinhalt — aber das erledigt ja Wallabag) oder PDF. Das Internet Archive wird ebenfalls mit der Bitte, die Seite zu sichern, angepingt. Auch ein YouTube-Downloader (youtube-dl) ist vorhanden.

Das Archiv der all dieser Seiten wird in einem Ordner (Idealerweise von Docker ins auf’s NAS gemappt) angelegt, inklusive einem durchsuchbaren Index. All dies ist so gestaltet, dass es auch „offline“ funktioniert: Es braucht (im Gegensatz zu Wallabag) keinen laufenden Server, um das Archiv zu begutachten. Da der Index via HTML / JS funktioniert, läuft er in jedem modernen Browser. Selbst wenn dies nicht der Fall sein sollte: Alle gesicherten Inhalte liegen leicht zu erreichen im Klartext, mit Domain im Dateisystem. Hier können sie auch leicht von systemweiten Suchfunktionen gefunden werden.

Das Archiv ist also notfalls versendbar oder kann kalt archiviert werden: PDF-Dateien, JPEGs und HTML werden sich wohl auch noch in Jahrzehnten öffnen lassen.

Das Interface von ArchiveBox mit den gespeicherten Datentypen

Da im Inneren Chromium via puppeteer steckt, ist ArchiveBox in der Lage, auch mit komplexen Websites und auch modernen Javascript-Frameworks wie Angular umzugehen: Die Rendering-Fähigkeiten sind mit denen von Chrome identisch und sämtliche Ausgaben werden auf Grund der gerenderten Seite erstellt – sehr praktisch. Dies macht den HTML-Export von ArchiveBox bei modernen Websites oftmals wesentlich ansehnlicher als beispielsweise das, was wget als HTML herunter zieht. Bei modernen, vor Javascript strotzten Seiten ist das HTML aus ArchiveBox brauchbar. Gleiches gilt für das PDF der Website.
Ebenfalls wie Wallabag profitiert ArchiveBox von einem netzwerkweiten Werbeblocker: Schrott wie Werbung und Tracker werden gar nicht erst geladen — dies verringert die Dateigrößen und die Ladezeiten.

Vorsichtig sollte man allerdings insbesondere beim HTML der Websites sein, denn: Das lebt noch. Bei der Menge und Art und Sachen, die mittlerweile via Jasascript auf Websites (nach)geladen werden, ist nicht auszuschließen, da auch noch ein Tracker oder Werbung nachkommt. In Kombination mit Pi-Hole sollte das meiste allerdings schon von vorne herein draußen gehalten werden.

Ich habe ArchiveBox einfach via öffentlichem RSS-Feed mit Wallabag verknüpft. Alles, was ich nochmals „bombensicher“ archivieren möchte, landet via Hashtag abx in ArchiveBox und wird von dort in mein normales Backup weggesichert.

Es kommt natürlich immer auf den Anwendungszweck an. Wer vornehmlich Texte liest, kann ArchiveBox wohl außen vor lassen, ich könnte mir aber vorstellen, dass beispielsweise Journalisten, Wissenschaftler, Historiker oder Anwälte Verwendung für ArchiveBox haben können.

ArchiveBox ist leider nicht im Docker-Hub zu finden, also muss man einen kleinem Klimmzug machen, um die Software auf dem NAS installieren zu können. Die Doku gibt’s bei Github. Leider klappt der dort vorgeschlagene Weg via git clone nicht, da auf dem NAS standardmäßig kein Git installiert ist. Falls doch – kein Problem, dann bitte machen. Falls nicht, hier ist der manuelle Weg.

Wir legen uns einen Ordner mit Unterordner an und laden dann das Repository herunter:

mkdir /volume1/docker/ArchiveBox
cd /volume1/docker/ArchiveBox
wget https://github.com/pirate/archivebox/archive/master.zip

Anschließend wird das Archiv entpackt und wieder entfernt:

7z x master.zip
rm master.zip

Dann muss noch ein Unterordner erstellt werden:

cd ArchiveBox-master/
mkdir data && chmod 777 data

Nun kann die automatische Installation der Container via docker-compose beginnen, da eine entsprechende Konfigurationsdatei vorhanden ist. Los geht’s via docker-compose up -d: Daten werden geladen, installiert und Container erzeugt – idealerweise geht hier alles automatisch und am Schluss steht man mit zwei fertigen Containern da, die sich dann in der Synology-UI finden lassen. Das ganze hat bei mir rund 20 Minuten gedauert1.

Nun steht ArchiveBox unter dem Port 8098 zur Verfügung – hat allerdings außer einem Testlink nichts gespeichert. Wer möchte, kann ArchiveBox auch via Reverse-Proxy im Internet verfügbar machen, ich habe allerdings davon abgesehen, da ich ArchivBox nur als „Cold Storage“ für einige bestimmte Sachen nutze und von Unterwegs nicht unbedingt darauf zugreifen können muss2.
Der Archiv-Output steht nun ebenfalls im Verzeichnis /volume1/docker/ArchiveBox/data zur Verfügung und können mit jedem Browser angesehen werden. Diesen Ordner kann man auch auf einen anderen Pfad umlegen, wenn man ihn beispielsweise in ein Backup einschließen möchte.

Neue Links kann man nun wie folgt hinzufügen:
echo "https://example.com" | docker-compose exec -T ArchiveBox /bin/archive

Einen RSS-Feed, beispielsweise aus Wallabag zu einem bestimmten Tag, übergibt man per

docker-compose exec ArchiveBox /bin/archive https://example.com/some/feed.rss

Dies kann man auch wieder per Cron automatisieren und so den RSS-Feed automatisiert parsen und Inhalte sichern lassen.

ArchiveBox kann leider nicht hinter Paywalls schauen. Es gibt jedoch die Möglichkeit, Cookies manuell zu hinterlegen. Dies könnte bei einigen einfachen Authentifizierungsmechanismen funktionieren, bei neueren Standards ist dies allerdings nicht garantiert.
Ich halte es für mein eigenes Archiv auch nicht für empfehlenswert, jedesmal die große Hafenrundfahrt mit Screenshot, PDF, HTML etc zu sichern – bei den meisten Sachen, die ich speichere, handelt es sich um Texte, für die im Notfall selbst die Wallabag-Textversion vollkommen ausreichend wäre. Aber dennoch ist ArchiveBox ein Tool, was eine Lücke besetzt und seinen klaren Einsatzzweck hat.

Die folgenden Themen werden in der Wallabag-Artikelserie behandelt:
Einleitung —  Auf Vorrat gespeichert: Das eigene Web-Archiv auf dem NAS
Teil 1: Was kann Wallabag?
Teil 2: Wallabag via Docker auf Synology NAS
Teil 3: Wallabag-Tuning
Teil 4: Wallabag und Paywalls
Teil 5: Wallabag-Backup und Versionsupdates
Teil 6: RSS-Import zu Wallabag
Teil 7: Wallabag und eReader
Teil 8: Archivebox und Wallabag

  1. Leider ist docker-compose auch einige Male bei Schritt 8/15 auf Grund eines fehlerhaften Downloads des puppeteer-Paketes hängen geblieben: npm ERR! Unexpected end of JSON input while parsing near '...st":{"shasum":"76ec7d'. Dies lies sich durch ein Umkonfigurieren der Dockerfile beheben — es ist allerdings nicht klar, warum dies passiert ist. Nick, der Maintainer der Software, konnte den Fehler nicht nachvollziehen. Falls dies bei euch auch passieren sollte: vi Dockerfile, sucht nach RUN npm i puppeteer und ersetzt dies mit RUN npm i puppeteer-core. Dies hat bei mir funktioniert. Anschließend nochmals docker-compose up -d laufen lassen. Die zwischenzeitlich erstellten Container mit zufälligen Namen können gelöscht werden.
  2. Falls doch, kann ich mich einfach ins Heim-VPN einwählen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.