So ein Blog ohne Kommentare ist ja auch ein wenig trocken. Hugo und das Jane Theme haben zwar Discourse eingebaut, aber nach ein paar Test habe ich es dann doch wieder abgeschaltet. Da wird mir dann doch zu viel ausgelagert. Es gibt zwei guten Seiten, die viele Vor- und Nachteile diverser Systeme auflisten:

Nachdem ich erst Schnack nehmen wollte, bin ich dann doch bei isso gelandet. Irgendwie schien mir die Integration da doch einfacher. Was viele nicht wissen: ich bin Programmier- Legastheniker, was bedeutet, es darf nicht allzu kompliziert werden, das Kommentarsystem zu integrieren. War es auch nicht.

Isso kann man auf diverse Möglichkeiten in Betrieb nehmen:

  • Als eigener Server (localhost:8181)
    • Unterdomain comments.example.com
    • Unterordner blog.example.com/comments
  • Über WSGI

Die Installation habe ich mir von hier geholt (damn pretty easy) und auch ein wenig von hier

Für den Webserver habe ich den Weg des geringsten Widerstands genommen und eine eigene Subdomain verwendet, sowie eine zusätzliche Apache2 Konfiguration.

Mein Isso wurde in /var/www/domain/websites/example.com/isso/ installiert.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<VirtualHost [2a01:7e0:0:213:2::1]:443>

ServerAdmin webmaster@example.com
ServerName comments.example.com
ServerAlias comments.example.com
Alias /.well-known/acme-challenge /var/www/letsencrypt/.well-known/acme-challenge
SSLEngine on
SSLProxyEngine on
SSLCertificateFile "/var/letsencrypt/certs/example.com/fullchain.pem"
SSLCertificateKeyFile "/var/letsencrypt/certs/example.com/privkey.pem"
SSLCipherSuite AES256+EECDH:AES256+EDH
SSLProtocol All -SSLv2 -SSLv3
SSLHonorCipherOrder On
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"
Header always set X-Frame-Options DENY
Header always set X-Content-Type-Options nosniff

ProxyPass / http://localhost:8181/
ProxyPassReverse / http://localhost:8181/

ErrorLog /var/www/domain/websites/example.com/log/error-ssl.log
CustomLog /var/www/domain/websites/example.com/log/access-ssl.log combined
</VirtualHost>

Die Konfiguration von isso.cfg sieht dann in etwa so aus:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
[general]
dbpath = /var/www/domain/websites/example.com/isso/comments.db

name = isso

host =
    http://www.example.com/
    https://www.example.com/

log-file = /var/www/domain/websites/example.com/isso/isso.log

notify = smtp

[server]
listen = http://localhost:8181/
public-endpoint = https://comments.example.com


[smtp]
host = localhost
port = 25
security = none

to = webmaster@example.com

from = "isso comments" <webmaster@example.com>
timeout = 10

[guard]
enabled = true
ratelimit = 2
direct-reply = 3
reply-to-self = false
require-author = true
require-email = false

[markup]
options = strikethrough, superscript, autolink

[hash]
salt = ZtD.............
algorithm = pbkdf2

[moderation]
enabled=true

Für Jane habe ich dann einfach nur eine Datei mit passendem Inhalt erstellt…:

  • layouts/partials/comments.html
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
{{ if .Site.Params.issoHost }}
  <style type="text/css" media="screen">
    .isso section {
      margin: 0px;
    }
  </style>
  <br>
    <div class="isso" id="isso-thread"></div>
    <script
        data-isso="//{{ .Site.Params.issoHost }}/"
        data-isso-css="true"
        data-isso-lang="{{ .Site.LanguageCode }}"
        src="//{{ .Site.Params.issoHost }}/js/embed.min.js"
    ></script>
{{ end }}

und in die Hugo Konfiguration:

  • config.toml
1
2
[params]
  issoHost = "comments.example.com"

Das war es schon.