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.