Le blog de Passionaqua

Mon p'tit chez moi où je raconte des p'tites choses

Les commentaires sur un site statique : Isso ?

Rédigé par Passionaqua.Web Aucun commentaire

Attention, cet article est assez vieux et peut ne plus être d'actualité. NB: ce moteur de commentaire n'est plus utilisé chez moi.

Et oui ! Quand on passe à un blog statique, on a bien évidemment plus de gestion "automatisée" des commentaires ! Il y a alors plusieurs choix qui s'offrent à vous :

  • Vous laissez une adresse mail à laquelle les visiteurs vous laissent un commentaire, et vous le mettez manuellement sur le billet concerné.
  • Vous installez une solution qui aime beaucoup les données de vos visiteurs comme Disqus.
  • Vous faites comme moi, et beaucoup d'autre, vous installez une solution qui respecte la vie privée de vos visiteurs.

Mon choix s'est donc tourné vers Isso, un serveur de commentaires en Python créé par Martin Zimmermann.

Capture d'écran de Isso
Exemple d'utilisation d'Isso

Qu'est-ce qu'a Isso dans le ventre ?

Isso c'est :

  • Léger
  • Des commentaires en Markdown
  • La possibilité de poster anonymement
  • Une base de données en SQLite, argument du développeur : « Les commentaires ne sont pas de grandes données »
  • Pas fait pour des sites à très fort trafic, genre 01Net, nop nop nop : à voir plus bas, il est préférable d'avoir, malheureusement, une instance Disqus.

L'utilisation d'Isso peut perturber au début, mais une fois pris en main et bien configuré, vous pouvez presque l'oublier !

Installation de Isso

Pour l'installer, c'est plutôt simple : c'est du Python, on fait simplement appel à PyPI ! Vous pouvez trouver la documentation officielle, en anglais, en cliquant ici.

Il faut quelques outils utiles à Python et à la compilation d'outils annexes, dans un premier temps :

apt-get install python-setuptools python-virtualenv python-dev sqlite3 build-essential #commande à exécuter sous root

Puis on crée l'environnement virtuel :

virtualenv /chemin/ou/vous/voulez/installer/isso
source /chemin/ou/vous/voulez/installer/isso

Il faut ensuite passer par pip :

pip install isso

On peut créer un symlink si vous le désirer, pour pouvoir lancer plus facilement Isso si besoin :

ln -s /chemin/vers/isso /usr/local/bin/isso #Commande à exécuter sous root

Pour faire une mise à jour, elles sont publiées régulièrement (entre autre quand vous faites remonter des bugs sur le Github du projet), il suffit de re-rentrer dans l'environnement, puis de faire appel à pip :

source /chemin/vers/linstallation/isso
pip install --upgrade isso

Configuration d'Isso

La configuration d'Isso repose sur un fichier au format INI. Pour ma part, après avoir lue la partie configuration du site officiel, j'ai fait ma petite sauce.

Voici donc mon fichier isso.cfg, je l'ai commenté donc il devrait être compréhensible :

[general]
; Le chemin vers la base de donnée SQLite, si le fichier n'existe pas il sera créé
dbpath = /home/pi/isso/blog.passionaqua.me.comments.db

; Le nom de l'instance Isso
name = blog.passionaqua.me

; Les noms de domaines autorisés : mes adresses de tests, et l'adresse du blog
host =
    http://localhost:5001/
    http://192.168.1.12:5001/
    http://blog.passionaqua.me/

; Je veux recevoir les notifications par EMAIL (pour avoir les liens de suppression entre autre)
notify = smtp

; Le temps de modification autorisé d'un commentaire, par son auteur
max-age = 1h

[moderation]
; Si activé, il faudra que vous validiez les commentaires pour qu'ils soient publics.
enabled = false

; Purger les non-validés au bout de 30 jours, dans ce cas inutile, puisqu'ils sont tous validés par défaut.
purge-after = 30d

[guard]
; Permet de limiter des actions par IP : un antispam simple on va dire.
enabled = true
ratelimit = 3
direct-reply = 3
reply-to-self = true

[smtp]
; Cette partie est simple : ce sont les paramètres d'accès pour SMTP.
username = w*****@passionaqua.me
password = MOTDEPASSE
host = mail.gandi.net
port = 465
security = ssl
to = w*****+commentairesblog@passionaqua.me
from = w*****@passionaqua.me
timeout = 10

Vous devez donc avoir un fichier de configuration similaire au mien à présent, je vous conseille aussi de lire la section à props de la configuration du serveur pour pouvoir ajouter ou modifier si besoin des paramètres !

Importation des commentaires de votre ancien blog

Quelque chose de bien sympa, vous pouvez importer les commentaires de Disqus ou Wordpress au format XML !

Je n'en ai pas eu besoin personnellement, n'ayant pas de commentaires au format XML. Et j'avais un peu la flemme de retranscrire les 5 commentaires que j'avais en XML. :p

isso -c /chemin/vers/isso.cfg import disqus-or-wordpress.xml

Lancement d'Isso

Le lancement est simple, suffit de lui demander de se lancer !

isso -c /chemin/vers/isso.cfg run

Ensuite, il faut rendre Isso accessible depuis l'extérieur. Pour cela, la documentation nous propose de faire un proxy NGinx, ayant un serveur NGinx je n'ai pas hésité plus longtemps !

En effet, Isso repose sur le contrôle d'accès HTTP, d'où le fait de mettre une liste de host autorisé dans la configuration d'Isso !

Il faut donc créer un host spécial, pour moi c'est commentaires.passionaqua.me : il vous faut créer un sous nom de domaine chez votre Registrar (ou hébergeur de vos DNS) qui pointe sur votre serveur où Isso est installé, etc. Ensuite, j'ai donc créé un fichier /etc/nginx/sites-available/commentaires.passionaqua.me :

server {
        listen 80;
        server_name commentaires.passionaqua.me;

        location / {
                proxy_pass http://localhost:8080;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-Proto $scheme;
        }
}

proxy_pass a pour valeur localhost:8080, parce qu'Isso écoute par défaut sur le port 8080. Il faut activer votre nouveau host, en faisant un lien : ln -s /etc/nginx/sites-available/commentaires.passionaqua.me /etc/nginx/sites-enabled/commentaires.passionaqua.me.

Intégration

Et pour finir : on intègre un p'tit bout de code à la fin de votre template qui gère les billets.

<script data-isso="//comments.example.tld/"
    src="//comments.example.tld/js/embed.min.js"></script>

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

Il faut penser à modifier les URL dans le code, pour les faire pointer sur votre Isso à vous.

Utiliser Isso

L'utilisation d'Isso est assez spéciale, je parle ici de la partie modération. En effet, Isso est très léger et assez jeune : il ne comporte pas de panel admin, même si l'idée est dans les cartons du développeur. Ce sera peut-être pour un jour ? :D

Anyway, vous avez dû le remarquer, dans ma configuration j'ai décidé de recevoir une notification par mail, pour pouvoir recevoir les urls pour supprimer, si besoin, un commentaire n'ayant pas d'utilité (genre un truc sur le Viagra).

Capture d'écran d'un mail
Exemple de mail

Voilà donc le genre d'email que vous pouvez obtenir, vous apercevez dans l'ordre :

  • Le nom avec l'adresse mail (s'ils ont été fourni),
  • Le commentaire posté,
  • L'adresse du site de l'auteur, si elle a été fourni,
  • L'adresse IP de l'auteur,
  • Le lien pour aller voir le commentaire sur le site,
  • Le lien pour supprimer le commentaire.

Pour aller plus loin

Concrètement, si vous allez sur votre site Internet, vous devriez pouvoir voir un formulaire de commentaire s'ouvrir. Vous pouvez le personnaliser, notamment via les attributs data-isso. Ce système est expliqué dans la documentation ici. Ensuite, il faut que Isso se lance à chaque démarrage de votre serveur, pour cela il suffit de faire un init script, moi j'ai une façon de le faire assez sommaire donc je ne vais pas vous en parler, mais vous avez de bons exemples ici. Pour une utilisation d'Isso sur un serveur à fort trafic, le développeur conseille d'avoir une vraie interface web, il explique tout ça ici.

J'espère avoir réussi à vous présenter ce serveur de commentaires, que je trouve vraiment sympathique : il est léger, rapide et fait ce qu'on lui demande. :)

Écrire un commentaire

Quelle est la quatrième lettre du mot mncqh ?

Fil RSS des commentaires de cet article