Isso - die etwas anderen Kommentare

Einleitung

Ich weiß, dieser Blog sollte sich eigentlich nur um den Raspberry Pi drehen, aber da ich ja hier einen Blog mit der Ghost Blogging-Plattform betreibe, möchte ich gern auch mal ein bisschen was los werden, was diesen Blog angeht. Vielleicht hilft es ja jemandem (sofern das überhaupt jemand liest).

Was wäre denn ein Blog ohne die Möglichkeit, Kommentare zu einem Artikel abgeben zu können? Auch wenn die Möglichkeit hier in meinem Blog (bisher) noch nicht genutzt wurde, so hatte ich es doch angeboten. Allerdings nutzte ich bisher den Fremdanbieter Disqus. Dort ist ein Account schnell eingerichtet und auch schnell in die Seite integriert. Für die Nutzer ist es einfach, sie können mit ihrem Account auf mehreren Seiten posten.

Aber letztendlich widerstrebte dies meiner Auffassung von der Datenhaltung. Die Daten werden auf amerikanischen Servern irgendwo gespeichert und wer weiß von wem weiterverarbeitet. Also suchte ich nach einer Lösung, die man selbst hosten kann und damit auch selbst kontrollieren kann, welche Daten gespeichert werden. Bei meiner Suche stieß ich auf Isso.

Installation

Die Installation von Isso verlief, muss ich zugeben, nicht ganz reibungslos. Es gibt eine Installationsanleitung, die ich als Basis für meine Installation verwendet habe.

Zuerst muss man sich pip installieren:

cd ~
wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py

Damit die Installation von Isso später ordentlich durchläuft, benötigt ihr noch die python-dev Pakete. Wie in der Isso Dokumentation einfach installieren:

sudo apt-get update
sudo apt-get install python-dev sqlite3 build-essential

Danach muss Isso einfach installiert werden. Hier wurde zusätzlich noch auf die Installation von gunicorn hingewiesen.

sudo pip install isso
sudo pip install gunicorn

Für Isso habe ich in meinem Home-Verzeichnis einen extra Ordner angelegt:

mkdir ~/isso-comments

Die Konfiguration von Isso wird in einer extra Datei gespeichert, die ich in dem oben erstellen Verzeichnis anlege.

nano ~/isso-comments/isso.conf

In meinem Fall sieht die Konfiguration wie folgt aus:

[general]
dbpath = /home/pi/isso-comments/comments.db
max-age = 15m
notify = smtp
log-file = /home/pi/isso-comments/isso.log
host = http://raspberry-blog.de/

[server]
listen = http://localhost:8004

[smtp]
username = xxx
password = xxx
host = xxx
port = 587
security = starttls
to = comments@raspberry-blog.de
from = info@raspberry-blog.de
timeout = 10

[hash]
salt = Eech7co8Ohloopo9Ol6baimi
algorithm = pbkdf2

Bei GitHub liegt eine Beispielkonfiguration der Isso-Programmierer.

Anschließend sollte noch die SQLite-Datenbank erstellt werden

touch ~/isso-comments/comments.db

Damit ich später in meinem Blog auch auf die Kommentare zugreifen kann, installierte ich noch nginx als HTTP Server.

sudo apt-get install nginx

Die mitgelieferte Konfiguration sicherte ich mit

sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.old

und konnte nun die Konfiguration überschreiben:

sudo nano /etc/nginx/sites-available/default

Da bereits der Blog auf Port 80 läuft, muss also nginx auf einen anderen Port lauschen. Dies brachte mich also auch dazu die Original-Konfigurationsdatei zu entfernen (und vorher zu sichern) und dann mit folgendem Inhalt zu überschreiben:

server {
    listen 81;
    server_name comments.raspberry-blog.de;
    access_log  /var/log/nginx/isso-comments-access.log;
    error_log   /var/log/nginx/isso-comments-error.log;

    location / {
        proxy_pass http://127.0.0.1:8004;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Danach noch einfach den Server starten

sudo service nginx start

und schon läuft der HTTP-Server.

Isso muss nun noch mit gunicorn gestartet werden. Dazu muss aber vorher eine Umgebungsvariable angelegt werden, die den Pfad zur Isso-Konfiguration enthält.

export ISSO_SETTINGS="/home/pi/isso-comments/isso.conf"
gunicorn -b 127.0.0.1:8004 --preload isso.run

Damit lauscht Isso durch gunicorn nun auf dem lokalen Port 8004, für den wir oben bereits einen Proxy mit nginx angelegt haben, um ihn über Port 81 nach draußen zu öffnen.

In der einfachsten Form muss nun einfach die Integration von Disqus im Template des Blogs ausgetauscht werden. Dazu fügte ich einfach

<script data-isso="//raspberry-blog.de:81/"
        src="//raspberry-blog.de:81/js/embed.min.js"></script>

<section id="isso-thread"></section>

an der entsprechenden Stelle im HTML-Quelltext ein.

In dem weiter oben verlinkten Artikel wurde zusätzlich die Installation von supervisor empfohlen, auf einfache Weise den Start von gunicorn (und damit Isso) beim Systemstart zu realisieren.

sudo apt-get install supervisor

Danach dann noch die Konfiguration für Isso anlegen:

sudo nano /etc/supervisor/conf.d/isso.conf

mit dem Inhalt

[program:isso]
command=gunicorn -b 127.0.0.1:8004 --preload isso.run
directory=/home/pi/isso-comments
environment=ISSO_SETTINGS="/home/pi/isso-comments/isso.conf"
user=pi
autostart=yes

Nun sollte dem automatischen Start nichts mehr im Weg stehen.
Mit

export ISSO_SETTINGS="/home/pi/isso-comments/isso.conf"
gunicorn -b 127.0.0.1:8004 --preload isso.run &

starten wir nun einfach Isso und schicken den Prozess in den Hintergrund (wichtig ist das abschließende &). Danach tauchen dann ein paar Startmeldungen von gunicorn in der Konsole auf, aber mit Ctrl + C kann man das getrost wegdrücken.

Also, in diesem Sinne: fröhliches Kommentieren und bei Fragen, könnt ihr die sicher gern auch hier im Blog stellen.