Luego de que dejé de utilizar Disqus, me propuse buscar un nuevo sistema de comentarios para el blog. Hashover es un sistema de comentarios desarrollado en PHP que intenta reemplazar servicios como Disqus, IntenseDebate, Livefyre, Facebook, Google+ y otros. El objetivo de Hashover es agregar una "sección de comentarios" a las páginas de cualquier tipo de sitio o blog. Por supuesto es un sistema auto-hospedado, a diferencia de los anteriormente mencionados, que son servicios. Esto significa que tanto la aplicación como los comentarios de los usuarios necesitan ser alojados en nuestro propio servidor Web, con todas las ventajas (privacidad, libertad, eficiencia, etc.) y desventajas (seguridad, moderación, control de spam y abusos, carga en el servidor, etc.) que esto implica.

El proyecto está hospedado en GitHub y es de licencia libre (GNU Affero General Public License).

En este artículo voy a demostrar cómo instalar la versión de desarrollo de Hashover (hashover-next), la cual posee un número de mejoras respecto a la versión estable actual (aunque sin embargo es inestable y no está libre de fallos y bugs). Cabe destacar que el procedimiento de instalación es muy similar al de la versión estable, documentado de manera correcta en el sitio oficial.



Cómo instalar hashover-next

Para comenzar, descargar el código fuente desde GitHub ejecutando git clone https://github.com/jacobwb/hashover-next.git:

root@linuxito:~/github# git clone https://github.com/jacobwb/hashover-next.git
Cloning into 'hashover-next'...
remote: Counting objects: 3318, done.
remote: Total 3318 (delta 0), reused 0 (delta 0), pack-reused 3318
Receiving objects: 100% (3318/3318), 1.37 MiB, done.
Resolving deltas: 100% (2413/2413), done.

Copiar el código fuente en una ubicación navegable por el servidor Web (típicamente en la raíz del sitio Web en cuestión):

root@linuxito:~/github# cp -a hashover-next/hashover/ /var/www/linuxito.com/
root@linuxito:~/github# cd /var/www/linuxito.com/hashover

Setear los permisos adecuados para la aplicación:

root@linuxito:/var/www/linuxito.com/hashover# chown -R www-data:www-data *
root@linuxito:/var/www/linuxito.com/hashover# chmod 0775 pages/

El directorio pages debe ser escribible por el servidor Web, ya que es allí donde se almacenan los comentarios en formato XML. A simple vista ya es posible comprobar cómo el diseño de esta aplicación cumple con el principio KISS. Cada comentario es almacenado como un simple archivo XML, sin necesidad de motores de bases de datos ni complejidad innecesaria (para un elemento tan simple como un comentario).

A continuación es necesario configurar Hashover. Para ello, editar el archivo scripts/settings.php:

root@linuxito:/var/www/linuxito.com/hashover# nano scripts/settings.php

Todas las variables están correctamente documentadas. Como mínimo, modificar las siguientes:


    // Required setup
    public    $notificationEmail    = 'ceo@linuxito.com';
    protected $encryptionKey    = 'xxx';
    protected $adminName        = 'admin';
    protected $adminPassword    = '1234';

    // Primary settings
    public $language        = 'es';
    public $defaultName     = 'Anónimo';

    public $serverTimezone      = 'America/New_York';
    public $timeFormat      = 'H:i';
    public $dateFormat      = 'd/m/Y';

LA clave de encriptación es un string de entre 8 y 32 caracteres que se utiliza para proteger las direcciones de correo de los usuarios. De esta manera, si un atacante se hace de los archivos XML, no será capaz de obtener las direcciones de correo electrónico, ya que se encuentran cifradas. En este punto se comprueba el uso de buenas prácticas de seguridad en la aplicación.

Se recomienda generar una clave aleatoria de 32 caracteres utilizando el dispositivo /dev/random, por ejemplo:

root@linuxito:/var/www/linuxito.com/hashover# cat /dev/random | tr -dc '[:alnum:]' | head -c 32; echo
7U972Y46z46nXpdHoFI0ThGaMvmEbDlA

Es ideal que la zona horaria configurada en Hashover coincida con la zona horaria del servidor, a fin de evitar inconsistencias con las fechas. Para saber la zona horaria del servidor, revisar el archivo /etc/timezone (en Debian y derivados), por ejemplo:

root@linuxito:/var/www/linuxito.com/hashover# cat /etc/timezone 
America/New_York

Para comenzar a utilizar Hashover, sólo es necesario agregar la siguiente pieza de código HTML en todas las páginas donde se desee habilitar comentarios:

<script type="text/javascript" src="/hashover/hashover.js"></script>
<noscript>Necesita tener JavaScript habilitado para ver los comentarios.</noscript>

De momento no he logrado hacer que funcionen las notificaciones por correo electrónico, aunque creo se trata de un bug (el cual ya he reportado). Por otro lado, actualmente no funciona con PHP 7.1 o superior, sin embargo se está trabajando en ello. Para que funcione con PHP 7.1 o superior se debe reemplazar el archivo encryption.php por el siguiente commit: poVoq/hashover-next@884fec2.

El último paso (tal vez opcional) consiste en crear nuestro propio tema o estilo. Copiar el directorio themes/default/ (tema por defecto):

root@linuxito:/var/www/linuxito.com/hashover# cp -a themes/default themes/mi_tema

Dentro del nuevo directorio, editar el archivo style.css a nuestro gusto. Por supuesto es necesario contar con conocimientos de hojas de estilo en cascada (CSS).

Una vez finalizado, es posible utilizar nuestro nuevo tema cambiando el valor correspondiente en la variable $theme del archivo de configuración de Hashover (scripts/settings.php):

    public $theme           = 'mi_tema';

Por ahora, Hashover está sólo habilitado a modo de prueba en el artículo ¿Qué pasó con los comentarios?. Veremos si se queda instalado definitivamente en este blog.


Tal vez pueda interesarte


Compartí este artículo