Installer Ergol-http pour remplacer son site web

Installer Ergol-http pour remplacer son site web

Une chose que j'aime bien avec Gemini, c'est qu'il incite à rendre l'expérience de navigation simple et claire pour les utilisateurs. Dans ce but, et aussi dans le but de me simplifier la vie, j'ai décidé de progressivement remplacer mes sites web statiques par des mirroirs de mon contenu sur Gemini. Je vous présente donc la procédure avec le serveur Ergol-http, un serveur écrit par Adële, que je remercie pour ce travail.

Capsule d'Adële

On considère dans cet article que le lecteur possède un serveur Debian et souhaite utiliser un serveur web Nginx avec PHP7-FPM.

Préparation

Il faut cloner le dépôt git correspondant à Ergol-http dans un dossier ergol-http par exemple et créer le fichier de configuration PHP :

git clone https://codeberg.org/adele.work/ergol-http.git ergol-htp
cd ergol-http
cp config-sample.php config.php

Il faut ensuite installer PHP ainsi que les extensions (liste non exhaustive des paquets pour Debian : php php-imagick php-json php-mbsting). Aussi j'utilise un serveur Nginx, il faut donc l'installer et installer PHP-FPM (liste des paquets pour debian : php php-fpm)

sudo apt update && sudo apt full-upgrade -y
sudo apt install -y php php-fpm nginx php-imagick php-json php-mbstring

Configuration

Il s'agit maintenant de configurer nos capsules. Pour cela il faut créer un fichier de configuration ergol.json, selon la syntaxe du serveur Gemini Ergol (seule une partie du fichier est nécessaire, on n'aura alors qu'une sous partie su fichier de configuration de Ergol, il peut être nécessaire d'adapter la configuration à vos besoins) :

{
    "port": 1965,
    "capsules": {
       "example.com": {
         "folder": "/var/gemini/example.com",
         "lang": "fr",
         "lang_regex": "/\\.([a-z][a-z])\\./",
         "auto_index_ext": [".gmi"],
         "redirect": false
       }
    }
}

Exemple de fichier ergol.json

Il faut aussi éditer config.php qui par défaut fonctionne pour une installation avec Ergol, et prend le fichier de config dans le répertoire parent.

<?php

// change this if this file is not in a subdir of ergol root directory
// See ergol.json description on
// https://codeberg.org/adele.work/ergol#configuration-ergol-json
define('ERGOL_JSON', __DIR__."/ergol.json");

Puis la conf de nginx (pour du HTTPS, modifier si besoin pour ne faire que du HTTP) :

server { 
    listen 80;
    listen [::]:80;

    server_name example.com;

    return 301 https://$server_name$request_uri;
}

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

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    server_name example.com;

    root /DATA/ergol-http;

    server_tokens off;
    add_header Content-Security-Policy "default-src 'unsafe-inline' 'self' example.com;";
    add_header Strict-Transport-Security "max-age=31536000" always;
    error_log /var/log/nginx/www.error.log;
    access_log /var/log/nginx/www.access.log;

    location / {
        fastcgi_param SCRIPT_FILENAME $document_root/index.php;
        include fastcgi_params;
        fastcgi_index index.php;
        fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
    }
}

Pour que cette conf soit active il faut qu'elle soit dans le dossier /etc/nginx/sites-enabled. On recharge la conf de Nginx est le tour est joué :

sudo systemctl reload nginx

Si vous le souhaitez, vous pouvez personnaliser le patron de la page affichée dans le navigateur web, il suffit pour cela de modifier le fichier template.php et style.css.

Publié le 23 mai 2021 par Romain de Laage (modifié le 24 mai 2021)

Retour à la liste des articles

🔝