Kazuky Akayashi / Mettre en place h5ai avec NGINX
Created 2020-01-08 Modifyed 2020-01-08

681 Words
Pour ce petit tuto j'utilise une Debian Stretch sur un Kimsufi chez OVH et h5ai sera là pour lister les images servant à mon bot mastodon @wallhallapaper.

📦 h5ai

Tout d'abord il va nous falloir récupérer h5ai.

Faites attention à prendre la dernière version en date.
cd /var/www/votre_repertoire
wget https://release.larsjung.de/h5ai/h5ai-0.29.2.zip && unzip h5ai-0.29.2.zip
rm h5ai-0.29.2.zip

Ici le but étant d'avoir cette structure la pour lister l'ensemble de votre_dossier

/var/www/votre_dossier/
 ├─ _h5ai
 ├─ vos fichiers
 └─ et vos dossier

Il va falloir configurer un minimum h5ai pour cela direction le fichier de config de h5ai : /votre_dossier/_h5ai/private/conf/options.json.

Commencez par définir un mot de passe, celui-ci vous servira à voir les informations concernant votre h5ai depuis une page web dédié (voir en fin de tutoriel).

/* h5ai v0.29.2 - https://larsjung.de/h5ai/ */
{
    /*
    Password hash.

    SHA512 hash of the info page password, the preset password is the empty string.
    Online hash generator: http://md5hashing.net/hashing/sha512
    */
    "passhash": "Votre_hash",

Vous pouvez aussi activer/désactiver le téléchargement en groupe, direction la ligne 117.

/*
Enable packaged download of selected entries.
To select files the "select"-extension needs to be enabled.

- type: string, "php-tar", "shell-tar" or "shell-zip"
- packageName: string, basename of the download package, null for current filename or foldername
- alwaysVisible: boolean, always show download button (defaults to download the current folder)
*/
"download": {
    "enabled": true,
    "type": "php-tar",
    "packageName": null,
    "alwaysVisible": false
    },

h5ai permet aussi la génération de Qr code ligne 176, à activer ou pas.

    /*
    Enable a generic info side bar.

    - show: boolean, initial visible to first time users
    - qrcode: boolean, show a QR-Code
    - qrColor: string, QR-Code fill color
    */
    "info": {
        "enabled": true,
        "show": false,
        "qrcode": true,
        "qrFill": "#999",
        "qrBack": "#fff"
    },
J'ai listé les options plus basique, il y a plein d'autre pour personnaliser h5ai.

📝 Nginx

Maintenant passons à la configuration de nginx, munissez-vous donc de votre éditeur de texte préféré (pour ma part il s'agit de vim) et créons le fichier votre_fichier.conf.

vim /etc/nginx/conf.d/votre_fichier.conf
Suivant votre distribution serveur l'emplacement des fichiers de conf peut varier, ici je suis sur une Debian Stretch donc de base c'est : /etc/nginx/conf.d/, sinon cela se passe dans /etc/nginx/site_avaible/ sans oublier par la suite de le passer dans /etc/nginx/site-enable/.
# Configuration du HTTPS
server {
     listen 443 ssl http2;
     listen [::]:443 ssl http2;
     server_name your.domaine.tld;
     root /var/www/your_repertory/;
     index /_h5ai/public/index.php;

# Emplacements des logs
access_log /var/log/nginx/make_name-access.log;
error_log /var/log/nginx/make_name-error.log;

# Emplacement du certificat si on utilise Letsencrypt
ssl_certificate         /etc/letsencrypt/live/..../fullchain.pem;
ssl_certificate_key     /etc/letsencrypt/live/..../privkey.pem;

ssl_session_timeout     10m;
ssl_prefer_server_ciphers   on;
ssl_stapling            on;
ssl_stapling_verify     on;
ssl_protocols           TLSv1.1 TLSv1.2;
ssl_ciphers         "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";

add_header Strict-Transport-Security "max-age=31557600; includeSubDomains";

location ~ \.(jpg|jpeg|gif|png|css|js|ico|svg|eot|ttf|woff|woff2|otf)$ {
     access_log        off;
     expires           30d;
}

# Configuartion pour PHP
location ~ \.php$ {
     try_files $uri =404;
     fastcgi_index index.php;
     fastcgi_pass 127.0.0.1:9000;
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
     include /etc/nginx/fastcgi_params;
}

location ^~ /var/www/your_repertory/_h5ai/private {
     deny all;
     return 403;
}
}

# Redirection HTTP vers HTTPS
     server {
     listen 80;
     listen [::]:80;
     server_name domaine.tld;
     return 301 https://your.domaine.tld$request_uri;
}

On teste la configuration pour éviter de se manger une erreur au reboot de nginx (et de péter éventuellement tout les autres servives/sites) avec nginx -t, qui devrait vous retourner :

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Et donc on relancer nginx

systemctl restart nginx

Pour voir si tout fonctionne correctement, direction la page index.php de h5ai : http://your.domain.tld/_h5ai/public/index.php, et logguez-vous, normalement si tout est bon il y aura du vert partout 🎉 🎉