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
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 !
Déjà 16 avis pertinents dans Sigal pour générer une galerie photo statique et minimaliste
Les commentaires sont fermés.
C’est du Php mais il existe également SFPG : http://sye.dk/sfpg
Pas de base de données, un unique fichier php qui gère tout, qui permet de mettre un mot de passe d’accès et qui permet également l’upload.
Cela fait partie des applications que j’ai envisagé cependant lorsqu’on cherche une application, on passe vite à la suivante si quelque chose déplaît. J’ai regardé la démo, ça ne m’a pas plus, next direct.
Bonne proposition dans tous les cas, tu as bien fait d’en reparler, merci à toi.
Tcho !
Ok je sors…
Pas sûr que tout le monde comprenne ha ha, Steven Sigal…
Tcho !
J’ai trouvé sympa votre article sur SIGAL. J’ai en effet testé pendant 2 ans Piwigo mais j’ai laissé tomber avec le temps, un peu trop lourd pour le besoin que j’en avais.Moi c’est pour mon petit fils , le partage de photos
J’ai actuellement un Rpi 2 en NAS avec OpenmediaVault et un cloud perso sur un BanaPi ( SOC dual-core 2ghz, Ram 1Go) et surtout une interface SATA.
J’ai aussi un Odroid C2 qui me sert d’ android TV.
Sigal m’intéresse mais si je peux me permettre dans l’article parlant du Rpi 3 et celui ci il manque, pour les débutants ou le autres les pré-requis. Je suppose qu’il ne faut pas un LAMP complet, seul un serveur apache2, php, et quoi d’autre, svp ?
Merci en tout cas pour ce bel article, je pense que je vais tester.
Cordialement
Je partage ton point de vue mais je fais déjà beaucoup d’efforts pour être le plus accessible possible. C’est pas évident de l’être davantage, ça prend du temps et il faudrait expliquer des bases, impossible à faire en restant intéressant et court pour une majorité de lecteurs.
Pour Sigal, tu as seulement besoin de apache2 (donc apt install apache2).
Tcho !
2ème étape : la bibliothèque est un peu vrac (j’ai perdu de la metada iPhoto) je devrais probablement fusionner des dossiers, en renommer d’autres… il faudrait que j’ai une vue d’ensemble. Est-ce que tu connais un gestionnaire de bibliothèque style Shotwell qui travaille en physique pas avec des metadatas c’est à dire qu’il considère chaque évènement comme un dossier et qu’il répercute les modifs sur l’organisation des fichiers et des répertoires : on déplace une image d’un évènement, elle est déplacé d’un répertoire à un autre ; on renomme un évènement, on renomme un répertoire. Je voudrais avoir un résultat agnostique du logiciel qui sera utilisé ensuite
Et dans une 3ème étape je pense générer un site Web statique du résultat avec un outil comme SIGAL pour partager les photos
Purée 70 Go de photos ! T’as une grande famille, t’es un maniaque de la gâchette ou tu as 70 ans d’existence derrière toi ? lol
Sigal est vraiment chouette après je t’invite fortement à mettre les options use_orig = True et orig_link = True sinon ça va durer 2 plombes les traitements. Là il va faire les symlinks et créer les miniatures, c’est tout.
Concernant le gestionnaire de biblio non rien ne me vient à l’esprit, désolé.
Tcho !
Merci pour la petite pub pour Sigal ;), tu présentes bien les avantages de ce genre de solution.
> Gère les vidéos mais les présente de la même manière que les photos
Oui c’est vrai qu’on pourrait ajouter une petite icône vidéo sur la miniature, un petit détail qui serait utile. Si tu es amateur de css, c’est une bonne idée de contribution ;). https://github.com/saimn/sigal/issues/317
> 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
Tu ne vois même pas la progress bar ? Et avec les options -v ou -d est-ce que tu vois les infos de build ? Je n’ai jamais réussi à ce reproduire ce bug, donc si tu as plus d’infos ce serait utile.
Déjà merci à toi pour cet excellent outil
C’est rigolo tu es le deuxième dev français dont je parle du projet, je checkerais à l’avenir.
Non je ne suis pas amateur de css hé hé mais je suis sysadmin donc on va pouvoir creuser l’issue 209. Je creuse et teste plusieurs choses de mon côté puis je reviens vers toi à ce sujet.
Tcho !
* Gestion des ACL ( photo famille et amis , les amis vois pas la famille et la famille vois pas les amis)
* upload par les utilisateurs , on centralise les photo car tout le monde upload dedans , du coup on ne se demande plus qui a pris la photo de tel truc
Bref tout dépend du besoin
Super ton article tombe à pic je cherchais ça la semaine dernière et j’avais pas vu Sigal.
Après quelque année de piwigo j’ai arrêter parceque l’interface la lourdeur tous ça… et puis surtout j’ai cassé mon install
Ça correspond pas à ton exactement besoin mais niveau belle interface j’avais sélectionné 2 projets, et comme ils sont pas dans le lien :
– leechy, nécessite php+mysql : https://lychee.electerious.com/
– photoshow, nécessite php : http://www.photoshow-gallery.com/
Oui bonne remarque pour ces deux applis après en effet Leechy BDD et photoshow pas trop mon kif.
Tcho !
Tu as 2 bonnes réponses sur 3
Bon j’ai testé gThumb, ça correspond à peu près à mon besoin pour faire le ménage et réorganiser ma photothèque. Quand ce sera propre, je verrais pour la génération avec Sigal.
Sigal me plait bien, cependant, j’ai quelques soucis avec, notamment, en ce qui concerne les images au format .tif
« sigal build » les traite correctement en faisant le traitement qui va bien (option use_orig = False et orig_link = True), mais « sigal serve » échoue pour les visualiser.
J’obtiens ce message dans la console:
—————————————-
192.168.1.11 – – [22/Apr/2018 18:39:24] « GET /1978/1978.tif HTTP/1.1 » 200 –
—————————————-
Exception happened during processing of request from (‘192.168.1.11’, 64785)
Traceback (most recent call last):
File « /usr/lib/python2.7/SocketServer.py », line 295, in _handle_request_noblock
self.process_request(request, client_address)
File « /usr/lib/python2.7/SocketServer.py », line 321, in process_request
self.finish_request(request, client_address)
File « /usr/lib/python2.7/SocketServer.py », line 334, in finish_request
self.RequestHandlerClass(request, client_address, self)
File « /usr/lib/python2.7/SocketServer.py », line 657, in __init__
self.finish()
File « /usr/lib/python2.7/SocketServer.py », line 716, in finish
self.wfile.close()
File « /usr/lib/python2.7/socket.py », line 279, in close
self.flush()
File « /usr/lib/python2.7/socket.py », line 303, in flush
self._sock.sendall(view[write_offset:write_offset+buffer_size])
error: [Errno 32] Broken pipe
Et dans le navigateur:
Image not found: 1978/1978.tif
Question: est-ce que Sigal gère les formats .tif ?
Je viens de regarder mon dossier images que je trimballe depuis des années, pas une seule image .tiff récupérée sur le net. Les rares fois où j’ai vu ce format utilisé c’était pour des scans mais maintenant c’est davantage .pdf ou .jpg.
Quel est ton cas d’usage ? Je veux dire si tu comptes mettre en ligne des images .tiff, tu me sembles être dans le faux. On publie en général sur le net des images sous un format (web) du genre .gif, .png, .jpg.
Je ne sais pas si Sigal gère le .tiff mais perso j’aurais convert les images de .tiff à .jpg avec ImageMagick avant.
Tcho !