Blog de Norore
Geek en perdition dans un monde qui va trop vite

Déployer Commento pour un site/blog statique

20 Jun 2020 - Norore
Un groupe de travail, une personne prenant des notes.

Pour une idée de projet récente qui me plaît beaucoup, je me suis imposée la mise en place d’un blog statique afin de pouvoir mettre les diffénets points sur lesquels j’ai pu avancer, ceux sur lesquels je butte, et autres. Ce blog tourne sous Pelican (Python) et est couplé au moteur de commentaire Commento.io. Comme ce projet a le bon goût d’être auto-hébergeable, je l’ai déployé sur mon serveur, avec un peu d’aide de mon #chaton. Voici ma procédure, libre à vous de l’adapter par la suite.

C’est quoi Commento ?

Commento.io est une plateforme de commentaire qui se veut légère et non intrusive, tout en reprenant les idées de fonctionnement de Discuss. Deux options s’offrent à vous quant à son utilisation :

  • soit prendre un abonnement sur le site du développeur qui hébergera une instance pour votre site ;
  • soit récupérer les sources ou les binaires et déployer sur votre propre serveur.

Si vous souhaitez déployer Commento sur votre serveur, vous aurez besoin d’une base de données PostgreSQL. Commento a également besoin de JavaScript pour fonctionner.

Déploiement

Pour le déploiement, nous allons partir du principe que vous avez récupéré le fichier binaire de Commento.io.

Le déploiement va ensuite se faire en trois étapes distinctes :

  1. mettre en place la base de données PostgreSQL ;
  2. créer le service qui va faire tourner Commento ;
  3. faire un reverse proxy pour rendre Commento accessible depuis l’extérieur.

Mise en place de la base de données

Pour ce point, nous allons partir du principe que vous disposez déjà d’un serveur PostgreSQL.

Dans un terminal, en tant que root (remplacez les points en début de ligne par un anti-slash) :

# on passe sur l’utilisateur postgres
su postgres
# on appelle la ligne de commande de PostgreSQL
psql
# on créé l’utilisateur commento avec le login du même nom
CREATE ROLE commento WITH LOGIN;
# on créé un mot de passe pour l’utilisateur commento
.password commento
# on créé la base de données commento
CREATE DATABASE commento;
# pour vérifier que la base de données a été créé, vous pouvez afficher la liste
.l
# on quitte le shell de PostgreSQL
.q
# on se déconnecte de l’utilisateur postgres pour revenir en tant que root
exit

Création du service

Pour ma part, j’utilise systemd, si vous utilisez autre chose vous devrez sûrement adapter le fichier de configuration du service.

Créez le fichier de configuration :

vim /etc/systemd/system/commento.service

[Unit]
Description=Commento server
After=notwork.target

[Service]
Type=simple
User=www-data
# le chemin vers le répertoire qui contient les fichiers nécessaire au moteur commento
WorkingDirectory=/mon/chemin/commento
Environment=COMMENTO_ORIGIN=https://commento.domaine
# indiquer le port à utiliser, notez-le pour le reverse proxy
Environment=COMMENT_PORT=8080
# remplacer user par commento, l’utilisateur de la base de données commento
# remplacer password par le mot de passe que vous avez choisi pour l’utilisateur commento
Environment=COMMENT_POSTGRES=postgres://user:password@localhost:5432/commento
# le chemin vers l’exécutable commento
ExecStart=/mon/chemin/commento/commento

[Install]
WantedBy=multi-user.target

Une fois enregistré, vous pouvez lancer le service en saisissant dans le terminal :

systemctl start commento

Pour vérifier l’état du service commento :

systemctl status commento

Si vous êtes satisfait de votre service, n’oubliez pas de le rajouter dans la liste des services actifs pour qu’il puisse être redémarré avec l’ensemble de vos services en cas de redémarrage du serveur.

systemctl enable commento.service

Mise en place du reverse proxy

J’utilise le serveur web Nginx, aussi vous devrez adapter le code suivant si vous êtes plus à l’aise avec Apache2 ou un autre serveur.

vim /etc/nginx/sites-available/commento.domaine

server {
    listen 443 ssl;
    listen [::]:443 ssl;

    ssl_certificate /etc/ssl/private/domaine.crt;
    ssl_certificate_key /etc/ssl/private/domaine.pem;
    server_name commento.domaine;

    root /var/www/domaine/commento;
    index index.html index.htm;

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

    location / {
        proxy_pass http://localhost:8080;
        proxy_set_header Host $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 https;
        proxy_pass_header Server;
        proxy_buffering off;
        proxy_redirect off;
        proxy_http_version 1.1;
    }
}

Une fois votre nouveau serveur prêt, n’oubliez pas de l’activer à l’aide d’un lien symbolique :

ln -s /etc/nginx/sites-available/commento.domaine commento.domaine

Une fois fait, vous n’avez plus qu’à recharger le service Nginx :

# vérifier qu’il n’y a pas d’erreur
nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
# recharger Nginx
systemctl reload nginx

Si vous avez bien fait tout ce qu’il faut, vous pouvez accèder à votre site Commento en vous rendant, depuis votre navigateur, sur https://commento.domaine.

Coupler Commento sur un blog statique

Ça y est, vous avez déployez votre nouveau service et vous vous apprêtez à prendre une pause bien méritée. Mais ce n’est pas fini ! Il vous reste encore à créer votre compte sur ce nouveau service et à y ajouter les informations du site sur lesquels il sera couplé pour la gestion des commentaires !

Vous devez d’abord ajouter un domaine en cliquant sur New domain, en bas du menu latéral gauche. Une fenêtre pop-up s’offre vous demandant d’y indiquer le nom du site ainsi que son URL.

Une fois fait, vous arrivez sur une page qui vous indique un snippet (portion de code réutilisable). C’est ce morceau de code que vous allez devoir mettre sur les différentes pages où vous souhaitez avoir un système de commentaires. Cette portion de code ne pourra marcher que pour le site (domaine) pour lequel il est sensé fonctionner. Vous ne pouvez pas mettre des commentaires d’un (sous-)domaine dans le site d’un autre (sous-)domaine.


Source de l’image d’accroche : Un groupe de travail, une personne prenant des notes. Photographie de StartupStockPhotos sur Pixabay