Ghost n'intégrant pas de solution de commentaires, j'avais installé Isso quand j'ai créer mon blog, un système de commentaire auto-hebergé en Python.

Si vous avez fouillé un peu mon blog, il est probable que vous ayez remarqué que les commentaires ne s'affichent plus pour une raison qui m'échappe encore.

J'ai cherché quelques heures sans vraiment trouver pourquoi Isso dysfonctionnait.
J'ai donc pris la décision (au vu du peu de commentaires) de faire une réinstallation, mais pas sous Isso cette fois ci, mais sous Commento.

C'est parti !

Commento est un système de commentaires écrit en Go se voulant respectueux de la vie privée de la même façon que Isso.
Je me tourne vers la documentation, premier hic, le seul type de base de données supporté est PostgreSQL... Je n'ai pas de problèmes particulier avec (au contraire même, j'aime bien), cependant je trouve ça un peu overkill dans mon cas, mais bon vu la position du développeur sur le sujet, c'est peine perdu.

(Je réalise tout sur une installation à base de Debian 10 et PostgreSQL 11, donc on part du principe que vous avez déjà une installation PostgreSQL fonctionnelle.)

Prévoyez un champ CNAME dans votre zone DNS qui pointe vers votre machine, par exemple commento.tuto-craft.com.

Pour commencer on va créer la base de données qui va servir pour Commento.
On se connecte à l'utilisateur postgres puis on se connecte au cluster.

sudo -u postgres psql

Ensuite on peut créer un utilisateur commento, sa base de données et lui donner les droits dessus.
Ensuite on peut se déconnecter du cluster.

CREATE USER commento;
CREATE DATABASE commento;
GRANT ALL PRIVILEGES ON DATABASE commento TO commento;
\q

Après vu qu'on aime les choses propres, on va créer un utilisateur pam pour commento et s'y connecter.

adduser commento --disabled-password
su - commento

Ensuite on télécharge la dernière version de Commento (à l'heure où j'écris, la v1.8.0) et on vérifie l'intégrité.

wget https://dl.commento.io/release/commento-v1.8.0-linux-glibc-amd64.tar.gz
sha256sum commento-v1.8.0-linux-glibc-amd64.tar.gz

Une fois que c'est bon, on va se créer un dossier pour extraire l'archive et décompresser tout ce beau monde.

mkdir live
tar xvf commento-v1.8.0-linux-glibc-amd64.tar.gz -C live
cd live

Commento se base sur des variables d'environnement pour la configuration, hors c'est pas spécialement pratique, donc on va se créer un fichier de config.

echo "# Set binding values
COMMENTO_ORIGIN=https://commento.domain.tld
COMMENTO_PORT=54789

# Set PostgreSQL settings
COMMENTO_POSTGRES=postgresql://commento@/commento?host=/run/postgresql

# Set the SMTP credentials
#COMMENTO_SMTP_HOST=
#COMMENTO_SMTP_PORT=
#COMMENTO_SMTP_USERNAME=
#COMMENTO_SMTP_PASSWORD=
#COMMENTO_SMTP_FROM_ADDRESS=

#COMMENTO_FORBID_NEW_OWNERS=true" > config.env

J'ai configuré la ligne COMMENTO_POSTGRES de façon à ce qu'il utilise un socket unix pour se connecter à la base de donnée plutôt que par TCP.

Pensez à changer ce qu'il vous faut, notamment COMMENTO_ORIGIN et toutes les lignes SMTP.
La dernière ligne permet d'empêcher la création de nouveaux administrateurs, elle sera à décommenter plus tard.

Ensuite pour vérifier que tout va bien, vous pouvez essayer de démarrer Commento manuellement :

COMMENTO_CONFIG_FILE=/home/commento/live/config.env ./commento

Si vous obtenez un résultat similaire, c'est gagné ! Vous pouvez CTRL^C pour l'arrêter puis entrer exit pour revenir à votre utilisateur principal.

Depuis votre utilisateur principal (qui soit est root, soit est sudoers), nous allons créer un service, systemd en l’occurrence.

echo "[Unit]
Description=Commento daemon service
After=network.target postgresql.service

[Service]
Type=simple
User=commento
WorkingDirectory=/home/commento/live
ExecStart=/home/commento/live/commento
Environment=COMMENTO_CONFIG_FILE=/home/commento/live/config.env

[Install]
WantedBy=multi-user.target" > /etc/systemd/system/commento.service

systemctl daemon-reload

Puis on active et on démarre le service :

systemctl enable commento
systemctl start commento

Pensez à bien vérifier que votre service à démarré correctement avec :

systemctl status commento

Nginx


Maintenant que le service est fonctionnel, nous allons lui associer une configuration Nginx.

Je vous donne la mienne, pensez à adapter.

server {
        listen 80;
        listen [::]:80;
        server_name commento.domain.tld;

        access_log /var/log/nginx/commento.access.log;
        error_log /var/log/nginx/commento.error.log;

        location / { return 301 https://$host$request_uri; }
}

server {
        listen 443 ssl http2;
        listen [::]:443 ssl http2;
        server_name commento.domain.tld;

        ssl_certificate /path/to/fullchain.cer;
        ssl_certificate_key /path/to/domain.tld.key;
        ssl_trusted_certificate /path/to/domain.tld.cer;

        include conf.d/TLS.conf;

        brotli off;

        access_log /var/log/nginx/commento.access.log;
        error_log /var/log/nginx/commento.error.log;

        location / {
                proxy_set_header Host $http_host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_pass http://127.0.0.1:54789;
        }

}
/etc/nginx/sites-enabled/commento.domain.tld.conf
ssl_protocols TLSv1.3 TLSv1.2;
ssl_ciphers 'TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-256-GCM-SHA384:TLS13-AES-128-GCM-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
add_header Strict-Transport-Security "max-age=31536000; includeSubdomains; preload";
add_header Referrer-Policy "strict-origin-when-cross-origin";
add_header X-XSS-Protection "1; mode=block"; #Cross-site scripting
add_header X-Content-Type-Options nosniff; #MIME-type sniffing
ssl_prefer_server_ciphers on;
ssl_session_timeout 5m;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets on;
ssl_stapling on;
ssl_stapling_verify on;
resolver 80.67.169.40 80.67.188.188 valid=300s;
resolver_timeout 10s;
/etc/nginx/conf.d/TLS.conf

Rechargez/Redémarrez Nginx et normalement vous devriez avoir accès à votre instance Commento à https://commento.domain.tld !

Connexion à Commento


Allez sur le pannel d'aministration de Commento, et créez vous un utilisateur.
Une fois fait, décommentez la ligne dans le fichier de configuration mentioné précédemment et redémarrez le service.

Ensuite depuis le pannel, vous pouvez ajouter votre blog :

L'intégration à Ghost


Elle est vraiment pas complexe, il suffit d'éditer post.hbs de votre thème et y ajouter :

<section class="post-full-comments">
                {{!-- Commento --}}
                <script defer src="https://commento.domain.tld/js/commento.js"></script>
                <section id="commento"></section>
            </section>

Redémarrez Ghost et normalement le tour est joué, vous avez maintenant un beau système de commentaires ! :)