Installation d'une alternative open-source à Disqus

Mis à jour le vendredi 3 novembre 2017 par johackim

N'ayant pas envie d'utiliser une solution propriétaire pour gérer les commentaires de mon blog et d'envoyer mes données personnelles et les vôtres (adresse IP, nom et e-mail) sur des serveurs aux USA. Je me suis configuré une petite installation de Isso.

J'utilise dokku pour simplifier la création et les potentiels mises à jour de mes applications docker. C'est pour moi le moyen le plus simple de gérer une infrastructure web sans la complexité des VHOSTS, déploiements, certificats SSL, volumes et links docker, port binding etc...

PS: Si vous ne souhaitez pas utilisé dokku, vous pouvez simplement utiliser cette commande docker :

docker run -d --name isso -p 80:80 sheogorath/isso-docker

Installation

Première chose à faire on pull une image docker trouvé sur https://hub.docker.com et créer une application dokku.

docker pull sheogorath/isso-docker
dokku apps:create isso

On configure le nom de domaine de l'application ainsi que l'URL du blog qui va héberger le système de commentaire :

dokku domains:set isso isso.mondomaine.fr
dokku config:set isso ISSO_HOST=https://blog.mondomaine.fr

D'autres paramètres existent, comme ISSO_REQUIRE_EMAIL qui permet de forcer le commentateur d'entrer une valeur dans le champ email :

NameDefault valueDescription
ISSO_HOSThttp://example.comIt corresponds with [General] -> host Details
ISSO_NAMEcomments.example.comIt corresponds with [General] -> name Details
ISSO_MAX_AGE30mIt corresponds with [General] -> max-age Details
ISSO_REPLY_TO_SELFfalseIt corresponds with [Guard] -> reply-to-self Details
ISSO_REQUIRE_EMAILfalseIt corresponds with [Guard] -> require-email Details
ISSO_REQUIRE_AUTHORfalseIt corresponds with [Guard] -> require-author Details

En temps normal, dokku relie directement le port 80 du reverse proxy au port 80 de notre container isso grâce à la directive EXPOSE du Dockerfile, ça ne marche pas sur mon environnement, en attendant la résolution de mon issue voici les commandes à exécuter :

dokku proxy:ports-add isso http:80:80
dokku proxy:ports-remove isso http:80:5000

Après le paramétrage on déploie l'application isso :

docker tag sheogorath/isso-docker dokku/isso
docker deploy isso

Le serveur est maintenant accessible sur http://isso.mondomaine.fr, une erreur 400 bad request apparait c'est normal, isso acceptent seulement les requêtes envoyées depuis le(s) domaine(s) autorisé(s) via la directive ISSO_HOST.

Maintenant que le service isso est en ligne, la configuration de la partie client se fait simplement en ajoutant la librairie JavaScript et une balise <section> sur notre blog :

<script data-isso="//isso.mondomaine.fr/" src="//isso.mondomaine.fr/js/embed.min.js"></script>
<section id="isso-thread"></section>

D'autres paramètres que data-isso existent aussi, pour pouvoir afficher les avatars, votes, changer la langue etc... :

<script data-isso="/prefix/"
data-isso-css="true"
data-isso-lang="ru"
data-isso-reply-to-self="false"
data-isso-require-author="false"
data-isso-require-email="false"
data-isso-max-comments-top="10"
data-isso-max-comments-nested="5"
data-isso-reveal-on-click="5"
data-isso-avatar="true"
data-isso-avatar-bg="#f0f0f0"
data-isso-avatar-fg="#9abf88 #5698c4 #e279a3 #9163b6 ..."
data-isso-vote="true"
data-vote-levels=""
src="/prefix/js/embed.js"></script>

Dans le cas de mon blog sous ghost, j'ai simplement édité mon thème Casper en ajoutant les lignes de code ci-dessus dans le fichier post.hbs.

Bonus

Pour éviter de perdre les commentaires en cas de mise a jour de isso on peut persister les données de cette façon :

dokku storage:mount isso /opt/isso:/data

Et si l'on souhaite ajouter un certificat let's encrypt une simple commande dokku existe :

dokku letsencrypt isso

Voilà ! Si vous avez des questions, suggestions n'hésitez pas à les soumettre dans les commentaires ! Bon week-end ;)