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 Pi
apt install libjpeg-dev libopenjp2-7-dev python3-dev python3-pip
pip3 install pillow
pip3 install sigal
sigal --help
mkdir -p /var/www/galerie/bestiole/{2015,2016,2017,2018} # Je crée les dossiers
cd /var/www/galerie
sigal 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 photo
source = 'bestiole' # Là où sigal va chercher les photos/vidéos
destination = '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, photoswipe
use_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 et orig_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 chaque sigal 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 !

Vus : 266
Publié par blog-libre : 60