Bald ist es soweit. Die DSGVO greift und die Übergangszeit ist zu Ende. Für mich ist es also an der Zeit, Disqus abzulösen und durch eine eigene Plattform zu ersetzen. Erst dachte ich: Das programmierst Du eben selbst. Aber warum so kompliziert, wenn es auch einfacher geht? Mit isso wurde nämlich schon genau so eine Lösung geschaffen.
Mir ging es darum, dass ich die Webseite eigentlich genauso lassen kann wie zuvor. Also weiterhin statischer Content und ein JavaScript lädt dann die Kommentare dazu. Genau wie bei Disqus also. Und das habe ich getan. Zum Glück gibt es auch schon fertige Docker-Images. Zusammen mit LetsEncrypt und der Apache-Konfiguration hatte ich Ablösung innerhalb weniger Stunden stehen.
Docker-Container starten
Der Container war schnell gestartet. In /config liegt nur eine isso.conf, welche ich danach beschreibe.
docker run -itd --restart=always -v /docker/isso/config:/config -v /docker/isso/db:/db -e GID=1000 -e UID=1000 --hostname=comment-haus-automatisierung-com.docker --name isso-comment-haus-auto wonderfall/isso
Hier der Inhalt der isso.conf
[general] dbpath = /db/comments.db host = https://haus-automatisierung.com/ max-age = 15m [server] listen = http://0.0.0.0:8095/ [moderation] enabled = false [guard] enabled = true ratelimit = 2 direct-reply = 3 reply-to-self = true require-author = true require-email = true
Das ist auch schon alles. Host die die Webseite, welche später die Kommentare laden soll. Diese Angabe ist für die CORS-Geschichten notwendig. Der Teil läuft also schonmal. Nur ist nun noch nichts von extern erreichbar. Man könnte natürlich die Ports direkt freigeben und das Ganze auf Port 8080 oder so laufen lassen. Aber ich habe mich für eine Variante mit https über den Apache per ReverseProxy entschieden:
<Macro comment-haus-automatisierung-com> ServerName comment.haus-automatisierung.com ServerAdmin postmaster@emailu.de DocumentRoot "/blabla/htdocs/comment/" ErrorLog "/blabla/logs/comment.error.log" CustomLog "/blabla/logs/comment.access.log" combined ProxyPreserveHost On ProxyRequests off ProxyPass / http://localhost:8095/ ProxyPassReverse / http://localhost:8095/ </Macro> <VirtualHost *:80> Use comment-haus-automatisierung-com </VirtualHost> <VirtualHost *:443> Use comment-haus-automatisierung-com SSLEngine on SSLCertificateFile /blabla/comment.cert.cer SSLCertificateKeyFile /blabla/comment.private.key SSLCertificateChainFile /blabla/comment.fullchain.cer </VirtualHost>
Das wars. Zertifikat erstellt und gestartet. Läuft alles. Eigentlich arbeite ich intern ebenfalls mit Namensauflösung. Für diesen Beitrag habe ich das aber in localhost geändert. Müsste eigentlich auch klappen.
Kommentare migrieren
Auf dieser Seite kann man sich einen Export der aktuellen Kommentare laden. Sobald man dies getan hat, sollte man Disqus abschalten. Ansonsten bekommt man logischerweise eventuell eine Differenz. Danach bekommt man per Mail einen öffentlich zugänglichen Link auf die XML-Datei mit den Kommentaren. Alleine an dieser Stelle sollte man sich schon fragen, wie groß Datenschutz dort wirklich geschrieben wird. Meine Datei enthält gut 32.000 Zeilen und ziemlich viele Kommentare.
Jetzt muss diese Datei natürlich noch importiert werden. Dazu kopiere ich die XML-Datei auf den Server und schiebe sie einfach in das DB-Verzeichnis (da dieses ja eh schon ein Volume von Docker ist). Dann führe im Container den folgenden Befehl aus:
isso -c /config/isso.conf import /db/haus-automatisierung-2018-05-01T09_00_33.682754-all.xml
Der Fortschritt wird dann mit einer Prozentanzeige angezeigt und am Ende hoffentlich wie folgt quittiert:
[100%] 98 threads, 1876 comments
Das sollte der wichtigste Schritt auch schon gewesen sein. Gar nicht so schwer bis hier hin.
Client-Seite ändern
Wie man gesehen hat, lautet meine Domain für die Kommentare comment.haus-automatisierung.com. Entsprechend binde ich nun das JavaScript dafür ein.
<script data-isso="//comment.haus-automatisierung.com/" data-isso-css="true" data-isso-lang="de" data-isso-reply-to-self="true" data-isso-require-author="true" data-isso-require-email="true" data-isso-max-comments-top="inf" data-isso-avatar="false" data-isso-vote="true" src="//comment.haus-automatisierung.com/js/embed.min.js"></script> <section id="isso-thread"></section>
Fertig. Läuft!
Leider steht jetzt noch die Aufgabe an, das Design an den Rest der Seite etwas anzupassen.
Zum Backup gehört nun noch das comments.db-File, welches eine sqllite-Datenbank ist.