Lamentablemente los generadores de contenido estático no disponen de un sistema de comentarios nativo. Algo normal cuando la página es estática, y los comentarios son algo dinámico que pueden cambiar en cuestión de segundos. Aquí es donde entra a jugar Isso.

Estoy encantado de usar un generador de contenidos estáticos para implementar este blog. En su día elegí Jekyll, pero cualquier otro generador (cómo Pelican, Hugo o Hexo) realizan la misma función igual de bien.

Al optar por un CMS de este tipo, lo más habitual es usar Disqus para implementar un sistema de comentarios. Algo que ya he probado y he descartado por razones de privacidad hacia el visitante. Ya que es sabido por todos, que Disqus rastrea sin miramientos.

Tampoco es cuestión de enrollarme mucho, y lo interesante es explicar como implementar Isso para poder tener un sistema de comentarios en un blog de Jekyll bajo un servidor Nginx en Raspbian (Debian).

No te creas que yo soy un genio en todas estas cosas, y como a muchos, me pilla de novato. Por ello, para poder implementar el servidor de comentarios he seguido la documentación de la página oficial de Isso y un artículo muy interesante que he encontrado en la siguiente dirección: http://blog.pythonity.com/how-to-use-isso.html

Antes de empezar:

Para ponernos en situación, os comento donde quiero montar el tinglao:

  • La máquina: una Raspberry Pi.
  • El Sistema Operativo: Raspbian (Debian Jessie).
  • El servidor web: Nginx
  • El Data Center: Mi casa.
  • El blog: Jekyll

Instalar lo necesario

Sin paños calientes. Esto es lo necesario:

sudo apt-get install python3 python3-pip sqlite3 build-essential

Y ahora ya podemos instalar Isso:

sudo pip3 install isso

Configurar y poner en marcha

La instalación no es muy complida. Aunque ahora toca configurar el chiringuito... tranquilo, que tampoco no es nada del otro mundo:

Creamos un archivo nuevo en (por ejemplo) /opt/isso/isso.conf, y copiamos la configuración mínima:

[general]
dbpath = /opt/isso/comments.db
host = http://miblog.com/

[server]
listen = http://localhost:8001/

ten en cuenta, de escribir la dirección del host con http o https, según tus necesidades.

Ahora necesitamos que isso trabaje en segundo plano en nuestro sistema. Si nos fijamos en la documentación de Isso, hay varias opciones. Pero en el artículo que he seguido, nos explican como usar Supervisor. La verdad que no lo conocia y me ha parecido muy interesante.

Lo primero de todo, es instalarlo:

sudo apt-get install supervisor

Y ahora toca configurarlo en /etc/supervisor/conf.d/isso.conf:

[program:isso]
command = isso -c /opt/isso/isso.conf run
user = root
autostart = true
autorestart = true
stdout_logfile = /opt/isso/supervisor.log
redirect_stderr = true
environment = LANG=es_ES.UTF-8,LC_ALL=es_ES.UTF-8

Finalmente, lo ponemos en marcha:

sudo supervisorctl reread && sudo supervisorctl update
sudo supervisorctl start isso

Configurar el servidor Ngnix

Recapitulando. Tenemos Isso instalado y trabajando en segundo plano en nuestro sistema. Ahora tenemos que decirle a nuestro servidor que el servicio es accesible desde http://localhost:8001/.

Para ello, añadimos el siguiente código en la configuración de nuestro servidor virtual:

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

No te olvides de reiniciar el Nginx (sudo service nginx restart).

Mostrar el formulario de comentarios en los artículos de Jekyll

Supongo que todo este trabajo es para poder tener comentarios en nuestro blog. Pues el último paso, es insertar el formulario.

No tenemos más que acceder al archivo _layouts/post.html de nuestro tema Jekyll, e insertar el siguiente código, donde queramos mostrar el formulario y los comentarios.

<script data-isso="//sinsitio.tk/isso/"
  data-isso-lang="es"
  src="//sinsitio.tk/isso/js/embed.min.js/">
</script>
<section id="isso-thread"></section>

Y creo que eso es todo...

*[CMS]: Content Management System