Die Kommentarisierung des Abendlandes, so auch des Orients und Ozeaniens, schreitet ja unaufhaltsam immer weiter voran. Kommste nicht drumrum. So auch jetzt hier, in just diesem Blög'le. Noch ist das in einer Experimentphase, und noch ohne "Moderäschn" - schauen wir mal, wie sich das entwickelt.

Weil ich keine grosse Lust hatte meine und anderer Leute Daten einer beliebigen Kommentarplattform anzuvertrauen und Javascripte (Javascripts? Javascript-Artefakte, jawoll) ausserhalb meiner Einflusssphäre inkludieren zu müssen, habe ich lieber in ein eigenes Kommentargewaltenmonopol investiert: Isso.

Hierbei handelt es sich um ein selbst-zu-hostendes, Disqus-ähnliches, Kommentarsystem. Es bringt Moderations- sowie Rate-Limiting-Features mit, bietet also Möglichkeiten dem vermutlich zwangsweise auftretenden Spam oder sozial inkompatiblen Meinungsausfällen Herr werden zu können. Auf Isso gekommen bin ich übrigens über diesen Artikel: Integrating a comment system which cares about your privacy into ghost - Part 1.

Und weil es Isso auch via Docker gibt, was liegt näher als dieses Kommentarsystem in einem eigenen Container von dem eigentlichen Blog zu separieren? Genau. Nichts. Absolut nichts spricht dagegen. Im Gegenteil:

  • Lächerlich einfache Installation und Konfiguration.
  • Wenn ich mal die Nase voll von Kommentaren haben sollte, dann fahre ich einfach den Isso-Container runter und die Funktionalität ist futsch.
  • Updates des Kommentarsystems lassen sich völlig separat vom Blog durchführen. Und umgekehrt! Ja, kaum zu glauben, aber wahr! Gerade schon ausprobiert, als ich Ghost von 0.10.0 auf 0.11.0 aktualisiert habe.

(es gibt übrigens noch ein zweites Isso-Docker mit gleich vielen Pulls sowie "Stars", aber dieses ist deutlich älter und ich konnte es aufgrund von Javascript-Fehlern im "embed.min.js" partout nicht zum Kommentarspeichern überreden)

Was war also nötig, um nun dieses ominöse Isso zu installieren und in Ghost zu integrieren? Am Ende doch recht wenig:

> docker pull wonderfall/isso
> docker run -d -p 8080:8080 --name isso_docker -v /var/lib/ghost/spitzenidee_isso/conf:/config -v /var/lib/ghost/spitzenidee_isso/db:/db wonderfall/isso
> docker stop isso_docker
> docker start isso_docker

Warum dieses doppelte Verzeichnis-In-Den-Container-Spiegeln? Einfach:

  • Im Container, unter "/config", soll die Config-Datei für Isso liegen. Damit die statisch und veränderbar außerhalb des Containers liegen kann, legt man sie "irgendwo" außerhalb hin und läßt Docker wissen, wo dieses "irgendwo außerhalb" ist und wo es "innerhalb ganz genau" verfügbar sein soll.
  • Das Gleiche in Grün für die Kommentar-(SQLite-)Datenbank, unter "/db".

Sprich, mit diesem Einzeiler wird, mal wieder, ein Container gestartet und die veränderlichen Daten liegen permanent außerhalb im Host-Dateisystem. Aber da "vertelle" ich ja mittlerweile nichts neues mehr. Die entsprechende Isso-Config sieht bei mir wie folgt aus:

[general]
dbpath = /db/isso.db
host = http://spitzenid.ee/
max-age = 2h
notify = stdout
log-file = /db/isso.log`
[moderation]
enabled = false
purge-after = 30d
[server]
listen = http://0.0.0.0:8080/
reload = off
profile = off
[guard]
enabled = true
ratelimit = 2
direct-reply = 3
reply-to-self = false
require-email = false
[markup]
options = strikethrough, autolink, fenced_code, no_intra_emphasis
[hash]
salt = 32charofrandomcharactersandlette
algorithm = pbkdf2

Die eigentliche Integration in Ghost, in der Datei "post.hbs" innerhalb des Casper-Themes, war dann auch sehr einfach (der entsprechende "script"-Block wird zwischen "section"- und "footer"-Sektionen hineingequetscht):

        [...]
        {{content}}  
    </section>

    {{#is "post, page"}}
    {{! If your isso config is not on the same domain as your blog, you need to include data-isso variable }}
        <script data-isso="//spitzenid.ee:8080/" src="//spitzenid.ee:8080/js/embed.min.js"></script>
        <section id="isso-thread"></section>
    {{/is}}

    <footer class="post-footer">
    [...]

Done. Nettozeit (ohne das Herumärgern mit dem älteren Docker-Image) dürfte bei ca. 30-45 Minuten liegen. Ab diesem Zeitpunkt erscheint unter jedem Post (aber nicht bei statischen Seiten, wie etwa das Impressum etc, und schon gar nicht auf der Hauptseite) ein Kommentarfeld.

Apropos: Dass bloss niemand erwartet, dass ich zu jedem potenziellen Kommentar meinen Zusatzsenf abgebe. Das ist/war erstmal nur ein Experiment und zudem eine nette Fingerübung. Viel lieber hätte ich ja eigentlich Zugriffsstatistiken, aber ohne Google Analytics bemühen zu müssen. Naja, das Leben ist kein Ponyhof. Außerdem ist das Ergebnis vermutlich zum Heulen - "4 Zugriffe im Monat, Ursprung: Berlin".