Isso
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