Sigal Self-hosting photo gallery
À la fin de mes vacances je cherchais à partager mes photes auprès de mes proches…
Bien sûr la plupart des gens vous dirons qu’il existe des solutions de partage dans le cloud tels que Dropbox / Google Drive / WeTransfert / … mais ces solutions me dérangent.
Je souhaite :
– garder le contrôle de mes fichiers (chez moi),
– une application simple (KISS),
– sans BDD,
– …
Pour cela j’ai retenu Sigal !
Sigal est un générateur de galerie photo. Il va générer un site « static » avec vos photos / vidéos dedans :)
Installation
Sigal est écrit en Python et nécessite maintenant une version 3.5+
# apt install libjpeg-dev libopenjp2-7-dev python3-dev python3-pip
# pip3 install pillow
# pip3 install sigal
Préparation / génération
Il faut ensuite préparer / organiser nos dossiers pour notre galerie :
$ mkdir -p /home/mickey/images/photos/{2015,2016,2017,2018} # création des dossiers photos
$ mkdir -p /home/mickey/images/galerie # c'est ici que sera généré le site
$ cd /home/mickey/images/
/home/mickey/images/
|- photos/
| |- 2015/
| |- 2016/
| |- 2017/
| `- 2018/
`- galerie/
$ sigal init
Ceci produira un fichier sigal.conf.py
dans le répertoire courant (ici /home/mickey/images/
), voici les seuls changements que j’y effectue :
title = "Photos famille" # le titre de la galerie
source = 'photos' # le répertoire des photos / vidéos
destination = 'galerie' # le répertoire ou va être généré le site
#theme = 'galleria' # le thème utilisé : colorbox (defaut), galleria, photoswipe
use_orig = True # on indique ici que l'on souhaite garder les originaux (càd pas de traitements "resize", "crop", …)
orig_link = True # on demande faire des liens symboliques plutôt que de copier les originaux
Attn. le répertoire destination ne doit pas se trouver dans le répertoire source !
Ensuite plus qu’à générer la galerie :
$ sigal build # pour générer la galerie
$ sigal serve # serveur web basique http://127.0.0.1:8000/ pour tester UNIQUEMENT !
Publication
Ne reste plus qu’à copier les dossiers /home/mickey/images/galerie
et /home/mickey/images/photos
(si orig_link = True) sur le serveur web : /var/www
par exemple.
Le site généré étant « static », c’est vers ce site que devra pointer votre configuration Apache ou Nginx.
Sécurisation
Par défaut Sigal ne fournit pas de solution de sécurisation / contrôle d’accès, cela est laissé au serveur web. Par exemple pour Nginx on se basera sur une authentification HTTP.
On commence par générer un mot de passe (outil apache2-utils) :
# htpasswd -c /var/www/galerie/.htpasswd <login>
À rajouter dans /etc/nginx/sites-enabled/default
:
location /galerie {
auth_basic "Restricted Access";
auth_basic_user_file /var/www/galerie/.htpasswd;
}
Puis redémarrer le serveur : service nginx reload