Une fois tous les 10 ans, je repasse sur le système de commentaires disponible sur mon blog (non, un blog, ce n'est pas hasbeen).

Au début, j'utilisais le système de commentaires de Dotclear que j'ai abandonné pour mauvaise gestion des spams et pour suivre la mode de Disqus. Depuis, Frank a fait pas mal de boulot pour la gestion des spams mais le mal était fait. J'ai installé Disqus qui a deux défauts assez importants : c'est propriétaire et centralisé. Disqus est même doublement centralisé : il n'y a « qu'un seul » serveur et tous les commentaires que fait un utilisateur ou une utilisatrice se retrouvent au même endroit. Il est donc assez facile de savoir que j'ai commenté example.com, le site du boulot et example.org, le site de pétanque du village. C'est (encore) plus facile pour profiler1.

Ensuite, comme quasi personnes ne commentent sur mon blog, j'ai désactivé les commentaires et personne ne s'est plaint. C'est dire ;-)

Il pleut.

Je décide donc d'installer Commento. C'est la version logiciel libre de Disqus. Il est possible de souscrire un hébergement chez eux ou de l'installer. Je l'installe. Vous me direz ce que vous en pensez.

Je suis grosso-merdo la documentation officielle qui m'a posé quelques soucis. Voici la procédure .

Le site a besoin de PostgreSQL.


# apt install postgresql

C'est une bonne pratique de créer un utilisateur spécifique pour l'application, je crée donc un utilisateur commento qui aura les droits qui vont bien — et pas plus — sur la base de données (BD) :


# sudo -u postgres psql

postgres=# create database commento;
CREATE DATABASE
postgres=# create role commento;
CREATE ROLE
postgres=# alter role commento with login;
ALTER ROLE
postgres=# \password commento

Je télécharge Commento et commence l'installation.

  1. désarchiver dans /opt/commento2

  2. l'idée du logiciel est d'utiliser les variables d'environnement pour le configurer, je décide d'écrire un script qui positionnera les variables d'environnement et qui lancera le service.

    C'est un service qui tourne sur un certain port. Il faudra donc un serveur web et un virtual host.

    
    root@momos:~# cat /opt/commento.sh 
    
    #!/bin/bash 
    export COMMENTO_ORIGIN=https://commento.example.org
    export COMMENTO_PORT=8081
    export COMMENTO_POSTGRES=postgres://commento:secret@localhost:5432
        /commento?sslmode=disable
    export COMMENTO_CDN_PREFIX=$COMMENTO_ORIGIN
    export COMMENTO_SMTP_HOST=relay.example.org
    export COMMENTO_SMTP_PORT=25
    export COMMENTO_SMTP_FROM_ADDRESS=commento@example.org
    export COMMENTO_FORBID_NEW_OWNERS=true
    /opt/commento/commento &
    


  3. mise en place d'un virtual host pour que le service réponde à l'adresse commento.example.org. (J'utilise dehydrated pour la gestion du certificat SSL avec LetsEncrypt.)

    
    <VirtualHost *:80\>
        ServerName http://commento.example.org
        ServerAdmin webmaster@example.org
    
        ProxyRequests Off
        ProxyPass / http://127.0.0.1:8081/
        ProxyPassReverse / http://commento.example.org:8081/
    
        # Dehydrated
        Alias /.well-known/acme-challenge 
                 /var/lib/dehydrated/acme-challenges
    
        <Directory /var/lib/dehydrated/acme-challenges>
                Options None
                AllowOverride None
                <IfModule mod_authz_core.c>
                        Require all granted
                </IfModule>
        </Directory>
    
        ErrorLog ${APACHE_LOG_DIR}/
            commento.example.org-error.log
        CustomLog ${APACHE_LOG_DIR}/
            commento.example.org-access.log combined
    </VirtualHost>
    
    <VirtualHost *:443>
        ServerName https://commento.example.org
        ServerAdmin webmaster@example.org
    
        ProxyRequests Off
        ProxyPass / http://127.0.0.1:8081/
        ProxyPassReverse / https://commento.example.org:8081/
    
        SSLEngine on
        SSLCertificateFile /var/lib/dehydrated/certs/
            commento.example.org/fullchain.pem
        SSLCertificateKeyFile /var/lib/dehydrated/certs/
            commento.example.org/privkey.pem
    
        # Dehydrated
        Alias /.well-known/acme-challenge 
            /var/lib/dehydrated/acme-challenges
    
        <Directory /var/lib/dehydrated/acme-challenges>
                Options None
                AllowOverride None
                <IfModule mod_authz_core.c>
                        Require all granted
                </IfModule>
        </Directory>
    
        LogLevel warn
        ErrorLog ${APACHE_LOG_DIR}/
            commento.example.org-error.log
        CustomLog ${APACHE_LOG_DIR}/
            commento.example.org-access.log combined
    </VirtualHost>
    
    # vim: syntax=apache ts=4 sw=4 sts=4 sr noet
    


  4. pour terminer, ce serait bien que systemd se charge du service.

    
    # cat /lib/systemd/system/commento.service 
    
    [Unit]
    Description=Commento daemon service
    After=multi-user.target
    
    [Service]
    User=commento
    Type=forking
    WorkingDirectory=/tmp
    ExecStart=/opt/commento.sh
    
    [Install]
    WantedBy=multi-user.target
    

Et tout roule. Vous pouvez laisser un commentaire. Normalement ;-)


Crédit photo perso. Hier une grue et un arc-en-ciel devant la maison.


  1. Choisis un un profil au hasard et observe. On peut voir les sites sur lesquels le profil commente régulièrement et ce qu'il y dit. 

  2. En fait, je désarchive dans /opt/commento-1.8.0 et je fais un lien soft commento