REVIEW

Reminiscence - (Web-)Archiving & Bookmarking Lösung

Reminiscence ist eine freie Webapplikation um Webcontent zu archivieren und die private Linksammlung zu pflegen - und einfach mit anderen zu teilen, sofern man dies möchte. Implementiert wurde die Software aus Indien in dem Django-Webframework.

Die Motivation für das Projekt beschreibt der Hauptentwickler wie folgt:

[…] I used to think that once something has been published on the web, it is going to remain there forever in some form or other. But web of today is different. Now we never know, when some valuable web resource […] will disappear from the web completely. There might be variety of reasons for disappearance (e.g. author of resource lost interest in maintaining it, low traffic or some other political-economic reasons). […] there are plenty of reasons due to which web-resource that we savoured in the past, might become un-available in the future. If we are lucky, then we may find mirrors of popular sites of the past, archived by volunteers. But, the same can’t be said true of obscure and rare web content.

I decided to develop Reminiscence for saving personal memories of the web effectively and in a well organized manner, which somehow turned into a hybrid of bookmark manager and personal wayback machine.

Damit erfüllt die Software einen Bedarf den kein anderes mir bekanntes Tool in dieser Form adressiert. Von “Online-Services” die in durchschnittlich 2 Jahren wieder vom Markt verschwinden und die User-Daten mitnehmen haben viele genauso die Nase voll wie von automatischen Browser-Synchronisation mit ominösen Datenkraken. Reminscence lässt sich einfach selbst und auf nahezu jeder Plattform hosten. 1 So ist das schön! :)

Ich benutze Reminiscence seit vielen Monaten um eBooks (epub) online zu lesen, Artikel zu archivieren und zu teilen, Links zentral zu sammeln und Videos von diversen Portalen sowie PDFs zu archivieren - ohne dafür eine “Eierlegende-Wollmilchsau” wie nextcloud o.Ä. zu bemühen - und möchte es nicht mehr missen!

Das UI der Software ist schlicht und wirkt etwas “altbacken” - Reminiscence punktet aber umso mehr bei der Funktionalität sowie exzellenter Dokumentation und lässt sich problemlos an eigene Bedürfnisse anpassen. Es bietet eine REST-API und lässt sich somit einfach verscripten / monitoren / integrieren. Da der Code unter der AGPL steht ist sichergestellt, dass dem auch so bleibt. :)

Der Hauptentwickler ist freundlich und aktiv und hat immer ein offenes Ohr für Patches. So habe ich bereits ein paar Patches für den Betrieb von Reminiscence auf einem RaspberryPi committed wie auch das Firefox-AddOn “AddToReminiscence” von Alec Papierniak / NordicDev auf Google’s Chromium-/Chrome-Browser portiert & auf github gestellt.

Da mein Archiv unanständig schnell wächst habe ich es mittlerweile auf einen echten Server umgezogen (s.u.) - was beim dekodieren von Videos performanter als der Raspi & ausfallsicherer als eine Portweiterleitung auf der Fritzbox ist. ;)

Dass Reminiscence als Docker-build sowohl für ARM-Prozessoren als auch x64-Architekturen verfügbar ist macht die Sache schmerzfrei.

HandsOn - Das Archiv von klein auf groß umziehen

Im folgenden zeige ich dir wie man Reminiscence von einem RaspberryPi auf x64-Architektur umzieht und dabei auch gleich noch das Datenbanksystem welches die Metadaten verwaltet migriert (hier: von sqlite auf Postgres) - weil wir es können! :D

Um unabhängig vom eigesetzten Datenbanksystem zu sein ziehen wir den DB-Content (offline) mit den Bordmitteln von Django um. Das erlaubt den einfachen Wechsel von und zu und zwischen Postgres/MariaDB/Oracle/whatever-DB Instanzen und dauert nur ein paar Sekunden.

$ docker exec -it reminiscence_web_1 /bin/bash
root@43085c4a4595:/usr/src/reminiscence# ./manage.py dumpdata auth.user --indent 2 --format json > ./archive/user.json
root@43085c4a4595:/usr/src/reminiscence# ./manage.py dumpdata pages > archive/pages.raspi.json

root@43085c4a4595:/usr/src/reminiscence# exit

Anschließend kopieren wir das auf den neuen Server und importieren dort die Daten:

$ scp ./archive/*json anypla.net:/srv/docker/volumes/reminiscence/archive/

ssh anypla.net

$ docker exec -it reminiscence_web_1 /bin/bash
root@315ecd083b06:/usr/src/reminiscence# ./manage.py loaddata archive/user.json
root@315ecd083b06:/usr/src/reminiscence# ./manage.py loaddata archive/pages.json

Parallel oder nachträglich kopieren wir unser Archiv, welches im Filesystem liegt. Je nach Größe des Archivs kann das ohne SAN und/oder NAS eine ganze Weile dauern.

$ scp -dpr archive/ anypla.net:/srv/docker/volumes/reminiscence

That’s it. Fertig. :)


Literatur
Reminiscence project page (github)
Reddit /r/selfhosted - Reminiscence: A self-hosted bookmark and archive manager
Reminiscence Bookmarklet

  1. Von Linux über MacOS bishin zu Window - und unter x86/x64-Prozessoren genauso wie unter ARMs (Raspbian) [return]