Die Ghost-Software, die diesen Blog betreibt, hat leider keine integrierte Kommentarfunktion. Dieser Beitrag beschreibt, wie man die aktuelle Version der netten, kleinen Lösung „Isso“ auf einem Uberspace 7 einbindet.
Anmerkung: Das meiste gilt grundsätzlich auch bei auf andere Weise erzeugten statischen Webseiten, nehme ich stark an. Außer Isso mit Python laufen zu lassen, muss letztlich nur irgendwie etwas JavaScript eingebunden werden können.
Alternativ gibt es natürlich allerlei Rechner-anderer-Leute Cloud-basierte Lösungen (Disqus wäre ein prominentes Beispiel, das auch von den Ghost-Leuten vorgeschlagen wird), aber so etwas scheidet aus, weil Datenschutz.
In meinem Fall lief Ghost nebst Isso vorher auf einem Uberspace 6, was ich aber unter anderem wegen der Node.js-Version ändern wollte. Im gleichen Zug wollte ich auch auf die neueste Isso-Version upgraden. Die hat nämlich schöne Features bekommen, zum Beispiel ist so ein Admin-Interface netter als die Verwaltung nur über E-Mails. Der Umzug von Ghost ist im Wesentlichen Fleißarbeit – alte Daten (Inhalt, Theme) exportieren, neue Instanz aufsetzen, Daten importieren, bisschen Links korrigieren usw., am Ende A- und AAAA-Records der Domain auf die neuen Server-Adressen ändern.
Zu (aktuellem) Isso auf (aktuellem) Uberspace habe ich dagegen im Netz nichts gefunden, bzw. nichts, das hinreichend half, daher habe ich im Folgenden die einzelnen Schritte aufgeschrieben:
Im Einzelnen braucht es folgende nicht sehr überraschende Zutaten:
- Ghost auf Uberspace 7
- Eine (Sub-) Domain für den Blog
- Eine Subdomain für Isso
Eine andere Domain würde wegen der Same-Origin-Policy Schwierigkeiten machen; CORS ist bei Uberspace (noch) nicht vorgesehen. Alternativ kann man einen Teilpfad wieexample.org/isso
über ein eigenes Web Backend der Macht von Ghost entreißen. Habe ich aber auf U7 nicht probiert.
Installieren von Isso
Ich benutze die Version 3.6 von Python.
pip3.6 install isso --user
Damit sollte die Installation durchlaufen. --user
ist wichtig, weil wir keine Admin-Rechte haben.
Anpassen der Konfiguration von Isso
Die Datei unter ~/etc/isso/user.cfg
wie folgt editieren. Dabei mindestens dbpath
und host
anpassen.
Die IP für den listen
-Parameter muss bei Uberspace 0.0.0.0
sein. Den Port (hier: 9000
) kann man zwischen 1024 und 65535 frei wählen, er sollte halt unbelegt sein. Für alles Weitere sei auf die Isso-Doku verwiesen.
Testen ob es geht mit diesem Befehl:
isso -c ~/etc/isso/user.cfg run
Erfreulicherweise hat meine „Datenmigration“ funktioniert, indem ich die comments.db
-Datei der alten Isso-Instanz einfach an die neue Stelle laut dbpath
kopiert habe. Schlichtes SQLite hat durchaus Vorteile.
Subdomain für Isso verbinden
Die Adresse und gegebenenfalls den Port entsprechend anpassen:
uberspace web domain add comments.example.org
uberspace web backend set comments.example.org --http --port 9000
Alternativ für die Lösung ohne Subdomain (example.org/isso
):
uberspace web backend set /isso --http --port 9000
(Ungetestet! Ich weiß nicht, ob das gleichzeitig mit Ghost gescheit geht. Auf U6 mit RewriteCond
/RewriteRule
-Einträgen in der .htaccess
ging es jedenfalls…)
Test der Admin-Oberfläche
Falls die Administrationsfunktion benutzt werden soll (also die Parameter unter [admin]
entsprechend gesetzt sind):
Im Browser sollte die URL analog zu „comments.example.org/admin“ eine Login-Seite zeigen; Aufruf von „comments.example.org“ allein sollte ein „Bad Request – missing uri query“ liefern. (Für die Admin-Seite in ganzer Pracht muss man leider im Browser gemischte Inhalte zulassen.)
Konfigurieren von Supervisor
Wenn Isso funktioniert, eine Datei unter ~/etc/services.d/
mit Namen isso.ini
und diesen Inhalts erstellen (<user>
anpassen!):
Danach den Service mit diesen beiden Befehlen zum Laufen bringen:
supervisorctl reread
supervisorctl update
Änderungen im Ghost-Theme
Die Kommentarfunktion muss jetzt nur noch an der gewünschten Stelle in der Webseite eingebunden werden. Ich möchte sie nur auf den „Post“-Seiten zur Verfügung stellen, nicht auch auf den „Pages“ (also nicht beim Impressum und ähnlichem). In dem Fall die posts.hbs
-Datei des Themes wie folgt ändern oder eben entsprechende andere Seiten. Alternativ lässt sich der <script ... </script>
-Teil auch mit der „Code Injection“-Funktion in der Ghost-Adminoberfläche einbinden.
Die Bedeutung des Parameters und weitere Optionen stehen in der Isso-Dokumentation.
Anmerkung: Die eine Script-Zeile und das leere div sind in der Tat alles, was nötig ist. Den restlichen Inhalt liefert Isso, also das Python-Backend!
Titelfoto: Steve Johnson / Unsplash