Isso – Kommentarfunktion für Kirby CMS
Eine selbstgehostete, datenschutzfreundliche Alternative zu Disqus & Co.
Isso ist ein schlanker, in Python geschriebener Kommentarserver der Kommentare in einer SQLite-Datenbank speichert. Kein Drittanbieter, keine Tracking-Cookies, kein JavaScript-Framework – passt damit gut zur Selbsthosting-Philosophie von Kirby CMS.
Voraussetzungen
- Kirby CMS (getestet mit Version 5.4.0)
- Docker und Docker Compose auf dem Server
- Eine Subdomain für den Isso-Dienst (hier:
comments.bayerwald.social) - SMTP-Zugang für E-Mail-Benachrichtigungen (hier: Amazon SES)
- SSL-Zertifikat für die Subdomain
Installation via Docker Compose
Verzeichnisstruktur anlegen:
sudo mkdir -p /opt/docker-apps/isso/config /opt/docker-apps/isso/db
/opt/docker-apps/isso/docker-compose.yml:
services:
isso:
image: ghcr.io/isso-comments/isso:latest
container_name: isso
restart: unless-stopped
ports:
- "127.0.0.1:8080:8080"
volumes:
- ./config:/config
- ./db:/db
Konfiguration
/opt/docker-apps/isso/config/isso.cfg:
[general]
dbpath = /db/comments.db
host = https://graffiti.bayerwald.social
notify = smtp
max-age = 15m
[server]
listen = http://0.0.0.0:8080/
[moderation]
enabled = true
[smtp]
username = DEIN_SES_SMTP_USERNAME
password = DEIN_SES_SMTP_PASSWORD
host = email-smtp.eu-central-1.amazonaws.com
port = 587
security = starttls
to = deine@email.de
from = isso@bayerwald.social
[guard]
enabled = true
ratelimit = 1
direct-reply = 3
reply-to-self = false
require-email = true
require-author = true
Wichtige Parameter:
max-age– Zeitfenster in dem ein Kommentator seinen Kommentar noch bearbeiten oder löschen kannmoderation– jeder Kommentar muss manuell freigegeben werdenratelimit– maximale Kommentare pro Minute pro IPnotify = smtp– E-Mail-Benachrichtigung bei neuen Kommentaren
Nginx-Konfiguration
/etc/nginx/sites-available/comments.bayerwald.social:
server {
listen 80;
server_name comments.bayerwald.social;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name comments.bayerwald.social;
ssl_certificate /etc/letsencrypt/live/comments.bayerwald.social/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/comments.bayerwald.social/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Aktivieren und neu laden:
sudo ln -s /etc/nginx/sites-available/comments.bayerwald.social /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
SSL-Zertifikat
Mit Cloudflare DNS-Challenge:
sudo certbot certonly --dns-cloudflare --dns-cloudflare-credentials /etc/letsencrypt/cf_cloudflare.ini -d comments.bayerwald.social
Isso starten
cd /opt/docker-apps/isso && sudo docker compose up -d
Funktionstest:
curl http://127.0.0.1:8080/
Erwartete Antwort: 400 Bad Request – missing uri query – das ist korrekt, Isso läuft.
Integration in Kirby
In /var/www/kirby/site/templates/article.php nach snippet('previous-next') einfügen:
?>
<div class="comments marbt2">
<script data-isso="https://comments.bayerwald.social/"
src="https://comments.bayerwald.social/js/embed.min.js">
</script>
<section id="isso-thread">
<noscript>JavaScript aktivieren um Kommentare zu sehen.</noscript>
</section>
</div>
<?php
Kommentare verwalten
Isso hat kein Admin-Interface. Verwaltung erfolgt über:
E-Mail-Links – jede Moderations-Mail enthält einen Freigabe- und einen Lösch-Link. Der Lösch-Link bleibt dauerhaft gültig, auch nach bereits erfolgter Freigabe.
SQLite direkt:
sqlite3 /opt/docker-apps/isso/db/comments.db "SELECT id, author, text FROM comments;"
sqlite3 /opt/docker-apps/isso/db/comments.db "DELETE FROM comments WHERE id = 1;"
Ressourcenverbrauch
Isso ist sehr schlank: ca. 20–30 MB RAM, CPU-Last praktisch null im Leerlauf. Für einen normalen Blog absolut vernachlässigbar.
Nutzung auf weiteren Domains
Isso kann für mehrere Domains gleichzeitig genutzt werden. Dazu in der isso.cfg unter [general] alle Domains eintragen:
host =
https://graffiti.bayerwald.social
https://anderedomain.de
Die Einbindung im Template ist identisch – Isso führt pro Seiten-URL automatisch einen eigenen Kommentar-Thread.