Isso .onion? ()

Il y a peu de temps je vous ai parlé de Disqus, le leader mondial des serveurs de commentaires centralisés. Le service est très bien, aussi bien pour les usagers qui peuvent ainsi avoir un seul compte sur plusieurs sites et ainsi "lier" ceux-ci entres eux sous une forme de réseau social, tout comme pour les administrateurs qui jouissent ainsi d'un panel admin poussé et qui profitent par la même occasion de l'impact social qu'offre Disqus. Seulement voilà, tout est centralisé et pour l'usager ce n'est pas forcément l'idéal éthiquement. C'est pour tout cela que je me suis rapidement ravisé lorsque j'ai vu la solution que proposait Isso.

Isso est en effet un serveur libre et opensource auto-hébergé développé en Python. Son installation et sa mise en service est des plus simple. quoi demander de plus?

Si vous êtes intéressé par l'utilisation de certificats SSL/TLS avec Isso, vous pouvez suivre mon article sur Let's Encrypt.

Caractéristiques

  • Utilisation de la syntaxe Markdown, que j'affectionne tout particulièrement
  • Commentaires anonymes si souhaité
  • Serveur auto-hébergé
  • Multi-langues
  • Modération configurable
  • Utilisation d'identicons en guise d'avatars
  • Notification par mail
  • Possibilité d'importer les commentaires depuis Disqus ou Wordpress

Installation

Ce tutoriel a été réalisé sur Debian Jessie avec NGinx

La documentation officielle d'Isso est plutôt bien fournie et offre plusieurs solutions d'installation, seulement il est toujours bon de détailler telle ou telle méthode selon votre installation.

Tout d'abord je souhaitais passer par le backport créé par Jocelyn Delalande, mais il semble que ses packages ne soient plus disponibles. La seule solution qui me reste alors fut d'utiliser la méthode officielle, à savoir recourir à PyPi/Pip.

Installons les paquets nécessaires (avec un sudoer, non pas le root)

sudo apt-get install python-setuptools python-virtualenv python-dev sqlite3 build-essential  

Lancez virtualenv avec les commande suivantes

sudo virtualenv /opt/isso  
source /opt/isso/bin/activate  

Puis sous cet virtualenv active fraîchement lancé, installez les paquets d'Isso grâce à PyPi et Pip

sudo pip install isso  

Si besoin est, faites un symlink

sudo ln -s /opt/isso/bin/isso /usr/local/bin/isso  

Pour quitter le virtualenv, tapez deactivate.
C'est installé.

Mise à jour

Pour mettre à jour rien de plus simple

source /opt/isso/bin/activate  
~> sudo pip install --upgrade isso

Configuration

À l'installation du paquet Isso et de ses dépendances, un example de fichier de configuration est créé. Copiez-le:

sudo cp /usr/share/doc/isso/examples/example.cfg /etc/isso.d/available/isso.cfg  
sudo ln -s /etc/isso.d/{available,enabled}/isso.cfg  

Et éditez le fichier fraîchement créé, notamment la partie [generale] et [smtp] de telle sorte à indiquer le nom de votre/vos site(s) où se trouveront vos commentaires, le fichier sqlite (base de données), ainsi que l'email à utiliser par le service Isso

Par commodité les fichiers d'Isso seront dans mon home [USER], la configuration comme la base de données. Aussi j'utilise Googles Apps pour mes mails, de fait mon serveur smtp sera celui de gmail.

[general]
dbpath = /home/[USER]/isso/comments.db  
host = http://domain.tld/  
notify = smtp

[server]
listen = http://127.0.0.1:PORT/  
reload = off  
profile = off

[moderation]
enabled = true

[smtp]
username = sender@domain.tld  
Password = PASSWORD  
host = smtp.gmail.com  
port = 587  
security = starttls  
from = sender@domain.tld  
to = receiver@domain.tld  
timeout = 10

[guard]
enabled = true  
ratelimit = 2  
direct-reply = 10  
reply-to-self = true

[markup]
options = strikethrough, superscript, autolink

Voilà, cette configuration une fois adaptée à vos besoins devrait vous fournir un serveur Isso viable, avec modération et antispam. Pour avoir le détails sur la configuration, je vous laisse vous référez à la documentation.

NGinx

Pour configurer Isso avec Nginx rien de plus simple, il suffit de mettre en place un reverse-proxy. Dans mon cas, étant donné que j'utilise une IP Failover, j'indique celle-ci à l'occurrence listen de telle sorte listen xxx.xx.xxx.xxx:80;

Songez aussi à faire pointer le domaine/sous-domaine souhaité vers votre serveur, ici comments.domain.tld.

Créez un fichier de configuration pour Isso

sudo nano /etc/nginx/sites-availables/isso  

Et collez-y ce qui suit en adaptant selon vos besoins

server {  
  listen 80;
  server_name comments.domain.tld;

  location / {
    proxy_pass http://localhost:8095;
  }
}

Sauvegardez et faites un symlink

sudo ln -s /etc/nginx/sites-available/isso /etc/nginx/sites-enabled/isso  

Relancez Nginx

sudo service nginx restart  

Et admirez le travail!

Jan Graichen met à disposition des scripts mais aussi des configurations pour différents serveurs web, nginx déjà, mais aussi lighttpd et apache2.

Importation

Vous utilisiez déjà un système de commentaire (Disqus?) ou vous débarquez de WordPress et souhaitez conserver vos commentaires?

Il vous faut tout d'abord exporter vos commentaires depuis votre plateforme d'origine, pour Wordpress rendez-vous sur votre panel d'administration sur l'onglet Outils > Exporter et sélectionnez Tout le contenu

Depuis Disqus procédez comme suit: connectez-vous à votre compte, rendez-vous sur la page Discussion puis l'onglet Export. Exportez.

Vous obtiendrez un fichier .xml qu'il va vous falloir maintenant importer. Placez-vous par exemple dans le répertoire où se trouve votre fichier exporté, dans mon cas la racine du home où j'ai installé Isso. Tapez dans la console la commande qui suit en indiquant l'emplacement de votre fichier de configuration isso.cfg

isso -c /home/[USER]/isso/isso.conf import export.xml  

Si la console vous répond Isso couldn't import any thread, try again with --empty-id, faites ce qu'elle dit et tapez

isso -c /home/[USER]/isso/isso.conf import export.xml --empty-id  

Voilà, c'est importé. Il ne vous reste plus qu'à démarrer votre serveur Isso.

Supervisord

Maintenant que tout est en place, il va falloir lancer isso. Pour ma part utilisant d'ors et déjà Supervisord pour mes différents blogs Ghost, ce choix pour Isso m'est apparu tout naturel. En effet Supervisord permet d'automatiser facilement des mécanismes, tout comme le ferait Service.

Installons Supervisord

sudo apt-get update  
sudo apt-get install supervisor  

Créez maintenant le fichier isso.conf pour automatiser Isso. Rappelez-vous j'ai installé les fichiers d'Isso dans mon home, j'indique alors à Supervisord que le programme [program:isso] devra exécuter isso à partir des fichiers de configuration dans mon home, avec l'utilisateur [USER].

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

Et collez ce qui suit en l'adaptant à vos besoins

[program:isso]
command = isso -c /home/[USER]/isso/isso.conf run  
user = USER  
autostart = true  
autorestart = true  
stdout_logfile = /var/log/supervisor/isso.log  
stderr_logfile = /var/log/supervisor/isso_err.log  

Mettez à jour les programs pour Supervisord

sudo supervisorctl reread && sudo supervisorctl update  

Et assurez-vous que le program isso a démarré

supervisorctl status  

Si ce n'est pas le cas, lancez-le!

sudo supervisorctl start isso  

Voilà, Isso est installé et fonctionnel.

Inutile d'essayer d'y accéder depuis votre navigateur, le serveur Isso n'est disponible qu'au travers du site configuré (host) dans Isso. Ceci est possible pour d'évidentes raisons de sécurité, grâce à CORS qu'utilise Isso afin de pouvoir intégrer les commentaires sur le site en question tout en restreignant leur usage à celui-ci uniquement.

Aussi je vous laisse découvrir plus en profondeur Supervisord, qui est un vrai régal!

Intégration à Ghost

Tout est déjà fait, il ne vous reste plus qu'à intégrer à votre blog (Ghost?) le script fournit par votre installation de Isso et collez entre les balises </footer> et {{/post}}

Ouvrez le fichier /content/themes/VOTRETHEME/posts.hbs et collez ce qui suit entre les balises </footer> et {{/post}}

<script data-isso="//comments.domain.tld" src="//comments.domain.tld/js/embed.min.js"></script>  
<section id="isso-thread"></section>  

Vous pouvez ajouter cette balise qui affichera le décompte des commentaires

<script data-isso="//comments.domain.tld" src="//comments.domain.tld/js/count.min.js"></script>  

Relancez votre blog Ghost, et le tour est joué. 😋
Pour plus de détails sur ces balises, n'hésitez pas à consulter la doc à ce propos: Client configuration

Il ne vous reste plus qu'à commenter!

Le mot de la fin

Je suis tout bonnement ravi de l'environnement de travail et de communication qu'offre le jumelage entre Ghost et Isso, le tout géré au travers de Supervisord. Je crois avoir trouvé là un certain confort de travail et je suis persuadé qu'il s'agit là de l'une des meilleures solutions pour toute personne qui souhaiterait mettre en place aisément une plateforme de blog simple et élégante.

Un bémol, les robots d'indexation ne font pas de javascript du coup vos commentaires ne seront pas indexés. Ah! Aussi il n'y a pas d'interface de modération, tout se passe par mail. Est-ce que cela s'avérera contraignant pour vous?

Liens

Autres tutoriels : hackriculture.fr et jeanchampemont.com

Pour formater votre commentaire, vous pouvez utiliser le Markdown