Avertissement: Cet article date de 2015. Je n'ai finalement jamais pris le temps de configurer Isso... En aout 2020, j'ai migré mon blog sur un serveur géré avec Yunohost et Isso n'est pas dans les applications disponibles. Ça pourrait être un challenge intéressant...

[EDIT: Attention, ça ne marche pas encore! La partie "Isso" apparait bien en dessous de l'article mais je n'arrive pas à soumettre un nouveau commentaire. Je cherche la solution.]

J'ai découvert Isso un peu par hasard en me balladant sur la toile. Je pense que c'était sur le blog Libre-parcours.net mais je n'en suis même plus sûr. Isso est un serveur de commentaire similaire à Disqus. Cependant, on peut l'héberger sur son serveur !

Avant de commencer, j'ai fouillé la toile à la recherche des liens qui vont bien et qui allaient me permettre d'installer rapidemment Isso. Voici les liens que j'ai trouvé et qui m'ont servi :

Le site officiel : posativ.org

Un blog avec des détails sur l'installation : hackriculture.fr

Un package Debian : crapouillou.net

Autres blogs utilisant Isso :

Des exemples de configuration sur Github:

Après avoir un peu consulté tout ça, voici ce que j'ai fait. J'ai suivi les instructions pour installer directement le paquet Debian (voir hackriculture.fr). Il faut tout d'abord ajouter les sources vers le dépôt de crapouillou.net :

simon@serveur:~$ sudo vim /etc/apt/sources.list.d/packages.crapouillou.net.list
# sources : http://packages.crapouillou.net/#_tab-fr
deb http://packages.crapouillou.net wheezy/

simon@serveur:~$ sudo vim /etc/apt/preferences.d/packages.crapouillou.net.pref
Package: *
Pin: release o=packages.crapouillou.net
Pin-Priority:   150

Ensuite, on met tout ça à jour :

simon@serveur:~$ sudo aptitude update
(...)
Ign http://packages.crapouillou.net wheezy/ Release.gpg                         
Get: 1 http://packages.crapouillou.net wheezy/ Release [1,519 B]
Get: 2 http://packages.crapouillou.net wheezy/ Packages [4,896 B]
Ign http://packages.crapouillou.net wheezy/ Translation-en_GB
Ign http://packages.crapouillou.net wheezy/ Translation-en
(...)

simon@serveur:~$ sudo aptitude upgrade
(...)

On vérifie qu'isso est bien dans la liste et on l'installe :

simon@serveur:~$ sudo aptitude search isso
p   isso                            - lightweight Disqus alternative            
p   isso-common                     - lightweight Disqus alternative

simon@serveur:~$ sudo aptitude install isso
The following NEW packages will be installed:
  gunicorn{a} isso javascript-common{a} libjs-jquery{a} libjs-sphinxdoc{a} 
  libjs-underscore{a} python-configparser{a} python-html5lib{a} 
  python-ipaddr{a} python-itsdangerous{a} python-misaka{a} 
  python-openssl{a} python-werkzeug{a} realpath{a} wwwconfig-common{a} 
0 packages upgraded, 15 newly installed, 0 to remove and 0 not upgraded.
Need to get 2,338 kB of archives. After unpacking 7,934 kB will be used.
Do you want to continue? [Y/n/?] 
WARNING: untrusted versions of the following packages will be installed!

Untrusted packages could compromise your system's security.
You should only proceed with the installation if you are certain that
this is what you want to do.

  python-configparser python-itsdangerous python-misaka isso

Do you want to ignore this warning and proceed anyway?
To continue, enter "Yes"; to abort, enter "No": Yes

Une fois isso installé, on peut passer à la configuration d'apache. Il y a des exemples de configuration sur le github que j'ai cité en début d'article (Il y a aussi des exemples pour nginx et lightttpd). Voici l'exemple pour apache :

<VirtualHost *:80>
    ServerName comments.example.com
    ProxyPreserveHost On
    ProxyRequests off
    ProxyPass / http://localhost:8095
    ProxyPassReverse / http://localhost:8095
</VirtualHost>

J'ai créé un VirtualHost dans le dossier /etc/apache2/site-available/ avec le nom "comments.simonlefort.be" :

simon@serveur:~$ sudo vim /etc/apache2/sites-available/comments.simonlefort.be 
<VirtualHost *:80>
    DocumentRoot /var/www/simonlefort/comments
    ServerName www.simonlefort.be/comments
    ServerAlias comments.simonlefort.be
    ServerAlias simonlefort.be/comments

    ProxyPreserveHost On
    ProxyRequests off
    ProxyPass / http://localhost:8095
    ProxyPassReverse / http://localhost:8095

    <Directory /var/www/simonlefort/comments>
        Options -Indexes +FollowSymlinks
        AllowOverride All
        ServerSignature Off
    </Directory>
</VirtualHost>

Bien entendu, il faut créer le dossier "/var/www/simonlefort/comments". Dans ce dossier, il faut créer un dossier "js" et y placer un fichier "embed.min.js". Moi je l'ai copié d'un autre site avec un "wget" :

simon@serveur:~$ sudo mkdir /var/www/simonlefort/comments
simon@serveur:~$ sudo mkdir /var/www/simonlefort/comments/js
simon@serveur:~$ wget http://comments.yapbreak.fr/js/embed.min.js
simon@serveur:~$ sudo mv embed.min.js /var/www/simonlefort/comments/js/

Ensuite, il faut activer les modules proxy et proxy_http :

simon@serveur:~$ sudo a2enmod proxy proxy_http

Activer le site :

simon@serveur:/etc/apache2/sites-enabled$ sudo a2ensite comments.simonlefort.be

Il faut ensuite relancer apache2 :

simon@serveur:~$ sudo service apache2 restart

Une fois que tout ça est fait, on paramètre isso :

simon@serveur:~$ sudo vim /etc/isso.conf
(...)
host = http://www.simonlefort.be/comments/
(...)

Il est possible de faire une configuration aux petits oignons avec envoi de mail pour prévenir d'un nouveau commentaire ainsi que de mettre les bons paramètres de modération. J'avoue ne pas encore avoir du tout regardé ! J'éditerai quand ce sera le cas. :-)

On approche de la fin. Il ne reste plus qu'à faire les liens entre isso et Pelican. On doit tout d'abord ajouter une variable dans le "pelicanconf.py" :

simon@serveur:~$ vim simon/pelicanconf.py
(...)
# CONFIGURE ISSO FOR COMMENTS
ISSO_SERVER="http://www.simonlefort.be/comments"
(...)

On modifie finalement les templates du blog. Dans mon cas, le thème est "dev-random" :

simon@serveur:~$ vim simon/themes/dev-random/templates/base.html 
<head>
    (...)    
    {% if ISSO_SERVER %}
    <script data-isso="{{ ISSO_SERVER }}/" src="{{ ISSO_SERVER }}/js/embed.min.js"></script>
    {% endif %}
    (...)
</head>

simon@serveur:~$ vim simon/themes/dev-random/templates/article.html
(...)
{% endblock content -%}
{% if ISSO_SERVER %}
    <hr />
    <section id="isso-thread"></section>
    <noscript>les commentaires de ce site utilisent javascript</noscript>
{% endif %}
(...)

Normalement, c'est fini au niveau des configuration. Il ne reste plus qu'à relance le service isso et à réactualiser le blog :

simon@serveur:~$ sudo service isso status
isso is running.
simon@serveur:~$ sudo service isso restart
Restarting isso: isso.

Par sécurité, vous pouvez faire une copie de votre répertoire /var/www/ avant de réactualiser votre blog Pelican :

simon@serveur:~$ mkdir backup
simon@serveur:~$ sudo cp -R /var/www/ backup/copie-var-www

On réactualise enfin son site :

simon@serveur:~$ sudo pelican /home/simon/simon/content/ -o /var/www/simonlefort/blog/ -s /home/simon/simon/pelicanconf.py

Bonus: Les logs d'Isso sont dans "/var/log/isso.log".