Mettre en place h5ai avec NGINX

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 view

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.0.zip && unzip h5ai-0.29.0.zip
rm h5ai-0.29.0.zip

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

vim /etc/nginx/conf.d/wallhallapaper.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 ça se passe ici /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 cliquez sur login. Normalement si tout est bon il y aura du vert partout 😀

Il vous faudra aussi changer le mot de passe histoire de planquer les infos, pour cela direction /your_repertory/_h5ai/private/conf/options.json

Une fois tout bien configuré voila à quoi ressemble mon h5ai pour @wallhallapaper 😎

Enjoy \o/