Sigal pour générer une galerie photo statique et minimaliste
Dans l’article Un bref retour sur le Raspberry Pi 3 Modèle B j’avais dit que j’allais me servir du Pi notamment pour une galerie photo.
Mon fils a maintenant plus de deux ans et très régulièrement mes proches demandent des photos. Je n’avais pas de solution satisfaisante. En général soit les gens mettent leurs photos dans Drive/Dropbox/iCloud etc. bref dans le cloud puis partagent le dossier soit ils font une grosse archive compressée de nombreuses photos, l’uploade sur un service comme WeTransfer et font tourner le lien.
D’un côté je n’ai aucun service cloud et ça me gêne de mettre ces photos en ligne, de l’autre l’archive compressée j’ai toujours eu la flemme d’en faire et vous pouvez être sûr que les vieux n’arriveront pas à décompresser l’archive. C’est aussi un des rares besoins que j’estime ne pas pouvoir traiter en dehors de chez moi. Je me vois mal stocker plusieurs Go de photos personnelles et familiales sur un hébergement web chez OVH par exemple, l’idée me dérange.
Cahier des charges et Piwigo
Voici mon cahier des charges :
- Une application minimaliste et simple car je veux avoir le moins d’énergie à dépenser pour entretenir ce service
- Une application qui fasse la part belle aux photos, ça peut paraître cocasse mais la plupart des applications sont alourdies par tout le système de gestion des photos, upload, possibilité de commenter, identification…
- Idéalement pas de base de données donc exit MariaDB/MySQL
- Simple également pour la personne qui va consulter les photos de cette galerie, beaucoup d’applications sont disponibles mais niveau utilisabilité…
Après une recherche chez Sebsauvage (gallery, photo gallery, galerie), un lien fort pertinent, j’ai retenu Sigal. Avant d’en parler, je m’arrête sur Piwigo qui pourrait vous intéresser. Piwigo est activement maintenu, GPLv2, relativement simple à installer mais… base de données, interface lourde et je trouve mal pensée avec des icônes petites, peu compréhensibles. Voici la démo Piwigo et une photo. Voici la démo Sigal et une photo.
Piwigo est une application PHP, c’est ce que vous trouverez comme galerie photo 95% du temps. Sigal est un générateur de galerie photo. Sigal va générer une galerie photo avec vos photos/vidéos dedans, c’est vers ce site que devra pointer votre configuration apache ou nginx.
Installation et utilisation
# Je me connecte sur mon Raspberry Piapt install libjpeg-dev libopenjp2-7-dev python3-dev python3-pippip3 install pillowpip3 install sigalsigal --helpmkdir -p /var/www/galerie/bestiole/{2015,2016,2017,2018} # Je crée les dossierscd /var/www/galeriesigal init
Voici les principales modifications que j’ai apporté au fichier de configuration sigal.conf.py
qui se trouvera dans /var/www/galerie
après le sigal init
.
title = "Une belle bestiole" # Le titre de la galerie photosource = 'bestiole' # Là où sigal va chercher les photos/vidéosdestination = 'site' # Là où sigal génère la galerie photo donc dans le dossier courant, il va créer un dossier 'site'theme = 'photoswipe' # Le thème utilisé : colorbox (default), galleria, photoswipeuse_orig = True # Use originals in gallery (default: False). If True, this will bypass all processing steps (resize, auto-orient, recompress, and any plugin-specific step)orig_link = True # Originals will be symlinked if orig_link = True, else they will be copied
Maintenant on va naturellement mettre des photos dans le dossier bestiole. Je le fais avec scp -r 'MAI 2017' pi@192.168.3.10:/var/www/galerie/bestiole/2017/
mais vous faites comme vous voulez : clé USB, FTP (il faut installer un serveur FTP bien-sûr), SSHFS…
sigal build # Pour générer la galerie sigal serve # Pour faire tourner un serveur web basique, c'est UNIQUEMENT pour tester le rendu, allez contempler votre œuvre sur http://adresseipdelaraspberrypi:8000/
Voici le rendu (thème photoswipe). Je sais mon fils est magnifique, normal il ressemble à son père hi hi hi.
Le minimalisme c’est bien mais il faut protéger un minimum htpasswd -c /var/www/galerie/site/.htpasswd bestiole
. Si vous utilisez apache, la configuration donnera ceci en gros.
DocumentRoot /var/www/galerie/site Alias /photos /var/www/galerie/site <Directory /var/www/galerie/site> AuthUserFile /var/www/galerie/site/.htpasswd AuthName "Merci de taper les identifiants" AuthType Basic Require valid-user Allowoverride All </Directory>
La prochaine fois que vous voudrez ajouter des photos.
scp -r 'MARS 2018' pi@192.168.3.10:/var/www/galerie/bestiole/2018/cd /var/www/galerie && sigal build /# Sur votre Raspberry Pi
Pour modifier les informations sur les albums voir Album information (avec markdown), ça va donner /var/www/galerie/bestiole/2017/MAI 2017/index.md
par exemple. Pour modifier les informations sur les images voir Image information, ça va donner /var/www/galerie/bestiole/2017/MAI 2017/20170513_085643.md
par exemple. Personnellement je ne fais rien.
Avantages et inconvénients
Avantages :
- Aucune maintenance à effectuer puisque c’est un site statique (il génère juste html, css, javascript, pas de code exécutable côté serveur) au contraire d’une application php qu’il faut mettre à jour, à la limite
pip3 install sigal --upgrade
tous les 6 mois - Statique ne veut pas dire sans animation, JavaScript est là pour charger les photos suivantes quand on scrolle vers le bas par exemple
- Il ne génère que ce qui est nécessaire. Si vous ajoutez un nouveau dossier, il ne va pas regénérer les dossiers déjà présents. Si vous voulez forcer une regénération complète,
sigal build -f
- Ça rend très bien sur smartphone/tablette (responsive)
- Possibilité de désactiver tout traitement des photos/vidéos, c’est ce que j’ai fait (
use_orig = True
etorig_link = True
) ainsi 1/ La génération du site est plus rapide 2/ Vous évitez une duplication de vos photos stockées dans/var/www/galerie/bestiole
dans/var/www/galerie/site
. Par exemple moi le dossier bestiole pèse 1,3 Go (vidéos…) et le dossier site pèse 5,1 Mo (il fait des liens symboliques vers les photos/vidéos du dossier bestiole) - Il y a un vrai plaisir à avoir ses photos disponibles en ligne, on y retourne souvent (quand on a un petit coup de mou par exemple). Plus les photos sont aisément accessibles, plus on en profite en fait
Inconvénients :
- Gère les vidéos mais les présente de la même manière que les photos, on ne peut donc pas les reconnaître entre elles
- J’ai un bug très pénible qui ressemble à ça, dès que je
sigal build
, plus rien n’apparaît sur le prompt de mon terminal. J’ai compris le truc donc après chaquesigal build
, je me déconnecte (Ctrl + d) puis je me reconnecte. Je ne sais pas si ça vient de ma config. Si vous avez le même souci, laissez un commentaire et je m’occuperai de creuser l’issue
Un besoin traité grâce au Libre, au suivant !